@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.
- package/CHANGELOG.md +125 -8
- package/README.md +1 -1
- package/accordion/item/AccordionItem.d.ts +4 -0
- package/accordion/item/AccordionItem.js +5 -4
- package/accordion/panel/AccordionPanel.js +29 -51
- package/accordion/root/AccordionRoot.js +5 -6
- package/accordion/trigger/AccordionTrigger.js +3 -4
- package/alert-dialog/handle.d.ts +14 -1
- package/alert-dialog/handle.js +22 -5
- package/alert-dialog/index.d.ts +1 -1
- package/alert-dialog/index.parts.d.ts +2 -3
- package/alert-dialog/index.parts.js +4 -5
- package/alert-dialog/root/AlertDialogRoot.d.ts +7 -7
- package/alert-dialog/root/AlertDialogRoot.js +2 -56
- package/alert-dialog/trigger/AlertDialogTrigger.d.ts +25 -0
- package/alert-dialog/trigger/AlertDialogTrigger.js +15 -0
- package/alert-dialog/trigger/AlertDialogTriggerDataAttributes.d.ts +10 -0
- package/alert-dialog/trigger/AlertDialogTriggerDataAttributes.js +18 -0
- package/autocomplete/root/AutocompleteRoot.js +9 -10
- package/avatar/image/AvatarImage.js +4 -4
- package/checkbox/indicator/CheckboxIndicator.js +2 -2
- package/checkbox/root/CheckboxRoot.js +49 -11
- package/checkbox-group/CheckboxGroup.js +1 -5
- package/collapsible/panel/CollapsiblePanel.js +29 -51
- package/collapsible/panel/useCollapsiblePanel.d.ts +9 -23
- package/collapsible/panel/useCollapsiblePanel.js +308 -268
- package/collapsible/root/CollapsibleRoot.d.ts +1 -1
- package/collapsible/root/CollapsibleRootContext.d.ts +0 -2
- package/collapsible/root/useCollapsibleRoot.d.ts +0 -27
- package/collapsible/root/useCollapsibleRoot.js +2 -64
- package/collapsible/trigger/CollapsibleTrigger.js +5 -6
- package/combobox/arrow/ComboboxArrow.js +1 -1
- package/combobox/backdrop/ComboboxBackdrop.js +1 -1
- package/combobox/chip/ComboboxChip.js +7 -2
- package/combobox/clear/ComboboxClear.d.ts +4 -0
- package/combobox/clear/ComboboxClear.js +1 -0
- package/combobox/clear/ComboboxClearDataAttributes.d.ts +4 -0
- package/combobox/clear/ComboboxClearDataAttributes.js +4 -0
- package/combobox/icon/ComboboxIcon.js +1 -1
- package/combobox/input/ComboboxInput.js +15 -6
- package/combobox/item/ComboboxItem.js +8 -14
- package/combobox/item-indicator/ComboboxItemIndicator.js +1 -2
- package/combobox/root/AriaCombobox.js +61 -28
- package/combobox/store.d.ts +4 -8
- package/combobox/store.js +2 -1
- package/combobox/utils/ComboboxInternalDismissButton.js +2 -3
- package/csp-provider/CSPProvider.js +1 -1
- package/dialog/close/DialogClose.js +6 -6
- package/dialog/popup/DialogPopup.js +9 -4
- package/dialog/root/DialogRoot.d.ts +1 -2
- package/dialog/root/DialogRoot.js +3 -73
- package/dialog/root/DialogRootContext.d.ts +1 -0
- package/dialog/root/DialogRootContext.js +3 -1
- package/dialog/root/useDialogRoot.d.ts +12 -4
- package/dialog/root/useDialogRoot.js +27 -25
- package/dialog/root/useRenderDialogRoot.d.ts +4 -0
- package/dialog/root/useRenderDialogRoot.js +96 -0
- package/dialog/store/DialogHandle.d.ts +1 -1
- package/dialog/store/DialogHandle.js +2 -2
- package/dialog/store/DialogStore.d.ts +88 -1
- package/dialog/store/DialogStore.js +12 -17
- package/dialog/trigger/DialogTrigger.d.ts +1 -1
- package/dialog/trigger/DialogTrigger.js +11 -4
- package/dialog/viewport/DialogViewport.js +4 -3
- package/drawer/popup/DrawerPopup.js +13 -9
- package/drawer/root/DrawerRoot.js +11 -11
- package/drawer/root/DrawerRootContext.d.ts +1 -1
- package/drawer/swipe-area/DrawerSwipeArea.js +6 -5
- package/drawer/viewport/DrawerViewport.js +13 -14
- package/esm/accordion/item/AccordionItem.d.ts +4 -0
- package/esm/accordion/item/AccordionItem.js +5 -4
- package/esm/accordion/panel/AccordionPanel.js +29 -51
- package/esm/accordion/root/AccordionRoot.js +5 -6
- package/esm/accordion/trigger/AccordionTrigger.js +4 -5
- package/esm/alert-dialog/handle.d.ts +14 -1
- package/esm/alert-dialog/handle.js +20 -5
- package/esm/alert-dialog/index.d.ts +1 -1
- package/esm/alert-dialog/index.parts.d.ts +2 -3
- package/esm/alert-dialog/index.parts.js +2 -3
- package/esm/alert-dialog/root/AlertDialogRoot.d.ts +7 -7
- package/esm/alert-dialog/root/AlertDialogRoot.js +2 -55
- package/esm/alert-dialog/trigger/AlertDialogTrigger.d.ts +25 -0
- package/esm/alert-dialog/trigger/AlertDialogTrigger.js +10 -0
- package/esm/alert-dialog/trigger/AlertDialogTriggerDataAttributes.d.ts +10 -0
- package/esm/alert-dialog/trigger/AlertDialogTriggerDataAttributes.js +12 -0
- package/esm/autocomplete/root/AutocompleteRoot.js +9 -10
- package/esm/avatar/image/AvatarImage.js +4 -4
- package/esm/checkbox/indicator/CheckboxIndicator.js +2 -2
- package/esm/checkbox/root/CheckboxRoot.js +49 -11
- package/esm/checkbox-group/CheckboxGroup.js +1 -5
- package/esm/collapsible/panel/CollapsiblePanel.js +29 -51
- package/esm/collapsible/panel/useCollapsiblePanel.d.ts +9 -23
- package/esm/collapsible/panel/useCollapsiblePanel.js +309 -269
- package/esm/collapsible/root/CollapsibleRoot.d.ts +1 -1
- package/esm/collapsible/root/CollapsibleRootContext.d.ts +0 -2
- package/esm/collapsible/root/useCollapsibleRoot.d.ts +0 -27
- package/esm/collapsible/root/useCollapsibleRoot.js +2 -64
- package/esm/collapsible/trigger/CollapsibleTrigger.js +5 -6
- package/esm/combobox/arrow/ComboboxArrow.js +1 -1
- package/esm/combobox/backdrop/ComboboxBackdrop.js +1 -1
- package/esm/combobox/chip/ComboboxChip.js +7 -2
- package/esm/combobox/clear/ComboboxClear.d.ts +4 -0
- package/esm/combobox/clear/ComboboxClear.js +1 -0
- package/esm/combobox/clear/ComboboxClearDataAttributes.d.ts +4 -0
- package/esm/combobox/clear/ComboboxClearDataAttributes.js +4 -0
- package/esm/combobox/icon/ComboboxIcon.js +1 -1
- package/esm/combobox/input/ComboboxInput.js +16 -7
- package/esm/combobox/item/ComboboxItem.js +8 -14
- package/esm/combobox/item-indicator/ComboboxItemIndicator.js +1 -2
- package/esm/combobox/root/AriaCombobox.js +62 -29
- package/esm/combobox/store.d.ts +4 -8
- package/esm/combobox/store.js +2 -1
- package/esm/combobox/utils/ComboboxInternalDismissButton.js +2 -3
- package/esm/csp-provider/CSPProvider.js +1 -1
- package/esm/dialog/close/DialogClose.js +6 -6
- package/esm/dialog/popup/DialogPopup.js +9 -4
- package/esm/dialog/root/DialogRoot.d.ts +1 -2
- package/esm/dialog/root/DialogRoot.js +4 -72
- package/esm/dialog/root/DialogRootContext.d.ts +1 -0
- package/esm/dialog/root/DialogRootContext.js +2 -0
- package/esm/dialog/root/useDialogRoot.d.ts +12 -4
- package/esm/dialog/root/useDialogRoot.js +28 -27
- package/esm/dialog/root/useRenderDialogRoot.d.ts +4 -0
- package/esm/dialog/root/useRenderDialogRoot.js +90 -0
- package/esm/dialog/store/DialogHandle.d.ts +1 -1
- package/esm/dialog/store/DialogHandle.js +2 -2
- package/esm/dialog/store/DialogStore.d.ts +88 -1
- package/esm/dialog/store/DialogStore.js +13 -18
- package/esm/dialog/trigger/DialogTrigger.d.ts +1 -1
- package/esm/dialog/trigger/DialogTrigger.js +12 -5
- package/esm/dialog/viewport/DialogViewport.js +4 -3
- package/esm/drawer/popup/DrawerPopup.js +14 -9
- package/esm/drawer/root/DrawerRoot.js +11 -11
- package/esm/drawer/root/DrawerRootContext.d.ts +1 -1
- package/esm/drawer/swipe-area/DrawerSwipeArea.js +6 -5
- package/esm/drawer/viewport/DrawerViewport.js +13 -14
- package/esm/field/control/FieldControl.js +2 -6
- package/esm/field/item/FieldItem.js +1 -4
- package/esm/field/root/FieldRoot.js +11 -3
- package/esm/field/root/useFieldValidation.d.ts +1 -0
- package/esm/field/root/useFieldValidation.js +23 -20
- package/esm/field/utils/getCombinedFieldValidityData.d.ts +1 -1
- package/esm/field/validity/FieldValidity.d.ts +1 -1
- package/esm/floating-ui-react/components/FloatingDelayGroup.js +3 -3
- package/esm/floating-ui-react/components/FloatingFocusManager.d.ts +1 -1
- package/esm/floating-ui-react/components/FloatingFocusManager.js +20 -8
- package/esm/floating-ui-react/components/FloatingPortal.js +3 -3
- package/esm/floating-ui-react/hooks/useClick.js +83 -74
- package/esm/floating-ui-react/hooks/useClientPoint.js +29 -20
- package/esm/floating-ui-react/hooks/useDismiss.d.ts +1 -1
- package/esm/floating-ui-react/hooks/useDismiss.js +82 -93
- package/esm/floating-ui-react/hooks/useFloating.js +37 -32
- package/esm/floating-ui-react/hooks/useFloatingRootContext.d.ts +1 -1
- package/esm/floating-ui-react/hooks/useFloatingRootContext.js +2 -2
- package/esm/floating-ui-react/hooks/useFocus.js +84 -81
- package/esm/floating-ui-react/hooks/useHover.js +72 -76
- package/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +49 -44
- package/esm/floating-ui-react/hooks/useHoverInteractionSharedState.js +1 -1
- package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.d.ts +7 -2
- package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +44 -39
- package/esm/floating-ui-react/hooks/useHoverShared.d.ts +2 -1
- package/esm/floating-ui-react/hooks/useHoverShared.js +4 -0
- package/esm/floating-ui-react/hooks/useListNavigation.d.ts +1 -3
- package/esm/floating-ui-react/hooks/useListNavigation.js +83 -74
- package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.d.ts +9 -6
- package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +25 -20
- package/esm/floating-ui-react/hooks/useTypeahead.d.ts +2 -2
- package/esm/floating-ui-react/hooks/useTypeahead.js +33 -52
- package/esm/floating-ui-react/index.d.ts +0 -2
- package/esm/floating-ui-react/index.js +0 -2
- package/esm/floating-ui-react/types.d.ts +2 -7
- package/esm/floating-ui-react/utils/composite.js +2 -0
- package/esm/floating-ui-react/utils/enqueueFocus.d.ts +1 -1
- package/esm/floating-ui-react/utils/enqueueFocus.js +10 -7
- package/esm/floating-ui-react/utils/getEmptyRootContext.js +1 -1
- package/esm/form/Form.js +2 -2
- package/esm/index.js +1 -1
- package/esm/internals/composite/composite.d.ts +0 -1
- package/esm/internals/composite/composite.js +1 -2
- package/esm/internals/composite/root/useCompositeRoot.js +2 -2
- package/esm/internals/createBaseUIEventDetails.d.ts +2 -0
- package/esm/internals/csp-context/index.d.ts +2 -0
- package/esm/internals/csp-context/index.js +1 -0
- package/esm/internals/field-register-control/index.d.ts +0 -1
- package/esm/internals/field-register-control/useFieldControlRegistration.d.ts +2 -1
- package/esm/internals/field-register-control/useFieldControlRegistration.js +11 -14
- package/esm/internals/field-register-control/useRegisterFieldControl.d.ts +1 -4
- package/esm/internals/field-register-control/useRegisterFieldControl.js +6 -11
- package/esm/internals/field-root-context/FieldRootContext.d.ts +1 -0
- package/esm/internals/field-root-context/FieldRootContext.js +3 -2
- package/esm/internals/form-context/FormContext.d.ts +5 -1
- package/esm/internals/reason-parts.d.ts +2 -0
- package/esm/internals/reason-parts.js +2 -0
- package/esm/internals/types.d.ts +1 -0
- package/esm/internals/use-button/useButton.js +4 -4
- package/esm/internals/usePressAndHold.js +2 -2
- package/esm/internals/useRenderElement.js +2 -0
- package/esm/menu/arrow/MenuArrow.js +1 -1
- package/esm/menu/backdrop/MenuBackdrop.js +1 -1
- package/esm/menu/checkbox-item/MenuCheckboxItem.js +5 -7
- package/esm/menu/group/MenuGroup.js +1 -4
- package/esm/menu/group/MenuGroupContext.d.ts +1 -3
- package/esm/menu/group/MenuGroupContext.js +1 -1
- package/esm/menu/group-label/MenuGroupLabel.js +4 -6
- package/esm/menu/link-item/MenuLinkItem.js +2 -2
- package/esm/menu/popup/MenuPopup.js +5 -5
- package/esm/menu/radio-group/MenuRadioGroup.js +11 -5
- package/esm/menu/radio-item/MenuRadioItem.js +5 -7
- package/esm/menu/root/MenuRoot.js +63 -68
- package/esm/menu/store/MenuHandle.js +1 -1
- package/esm/menu/store/MenuStore.d.ts +87 -0
- package/esm/menu/submenu-trigger/MenuSubmenuTrigger.js +8 -5
- package/esm/menu/trigger/MenuTrigger.js +13 -10
- package/esm/menu/viewport/MenuViewport.d.ts +2 -2
- package/esm/menu/viewport/MenuViewport.js +2 -2
- package/esm/navigation-menu/arrow/NavigationMenuArrow.js +1 -1
- package/esm/navigation-menu/backdrop/NavigationMenuBackdrop.js +1 -1
- package/esm/navigation-menu/content/NavigationMenuContent.js +8 -5
- package/esm/navigation-menu/icon/NavigationMenuIcon.js +1 -1
- package/esm/navigation-menu/item/NavigationMenuItem.js +2 -2
- package/esm/navigation-menu/list/NavigationMenuList.js +1 -1
- package/esm/navigation-menu/popup/NavigationMenuPopup.js +2 -2
- package/esm/navigation-menu/root/NavigationMenuRoot.js +1 -3
- package/esm/navigation-menu/trigger/NavigationMenuTrigger.js +24 -17
- package/esm/navigation-menu/utils/isOutsideMenuEvent.d.ts +0 -1
- package/esm/navigation-menu/utils/isOutsideMenuEvent.js +1 -5
- package/esm/navigation-menu/viewport/NavigationMenuViewport.js +2 -3
- package/esm/number-field/input/NumberFieldInput.js +3 -5
- package/esm/number-field/root/NumberFieldRoot.js +5 -2
- package/esm/number-field/scrub-area/NumberFieldScrubArea.js +7 -3
- package/esm/otp-field/input/OTPFieldInput.js +43 -29
- package/esm/otp-field/root/OTPFieldRoot.d.ts +17 -8
- package/esm/otp-field/root/OTPFieldRoot.js +33 -33
- package/esm/otp-field/root/OTPFieldRootContext.d.ts +1 -1
- package/esm/otp-field/utils/otp.d.ts +5 -4
- package/esm/otp-field/utils/otp.js +23 -12
- package/esm/popover/arrow/PopoverArrow.js +1 -1
- package/esm/popover/backdrop/PopoverBackdrop.js +1 -1
- package/esm/popover/close/PopoverClose.js +2 -2
- package/esm/popover/description/PopoverDescription.js +1 -7
- package/esm/popover/popup/PopoverPopup.d.ts +1 -1
- package/esm/popover/popup/PopoverPopup.js +16 -10
- package/esm/popover/popup/PopoverPopupDataAttributes.d.ts +1 -1
- package/esm/popover/popup/PopoverPopupDataAttributes.js +1 -1
- package/esm/popover/positioner/PopoverPositioner.js +5 -5
- package/esm/popover/root/PopoverRoot.d.ts +1 -1
- package/esm/popover/root/PopoverRoot.js +42 -47
- package/esm/popover/store/PopoverHandle.js +1 -1
- package/esm/popover/store/PopoverStore.d.ts +91 -4
- package/esm/popover/store/PopoverStore.js +17 -18
- package/esm/popover/title/PopoverTitle.js +1 -7
- package/esm/popover/trigger/PopoverTrigger.js +24 -17
- package/esm/popover/viewport/PopoverViewport.d.ts +3 -3
- package/esm/popover/viewport/PopoverViewport.js +2 -2
- package/esm/popover/viewport/PopoverViewportDataAttributes.d.ts +1 -1
- package/esm/popover/viewport/PopoverViewportDataAttributes.js +1 -1
- package/esm/preview-card/positioner/PreviewCardPositioner.js +11 -1
- package/esm/preview-card/root/PreviewCardRoot.d.ts +1 -1
- package/esm/preview-card/root/PreviewCardRoot.js +32 -22
- package/esm/preview-card/store/PreviewCardHandle.js +1 -1
- package/esm/preview-card/store/PreviewCardStore.d.ts +90 -2
- package/esm/preview-card/store/PreviewCardStore.js +19 -31
- package/esm/preview-card/trigger/PreviewCardTrigger.js +6 -3
- package/esm/preview-card/viewport/PreviewCardViewport.d.ts +2 -2
- package/esm/preview-card/viewport/PreviewCardViewport.js +2 -2
- package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +2 -2
- package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.js +2 -2
- package/esm/progress/indicator/ProgressIndicator.js +6 -11
- package/esm/progress/root/ProgressRoot.d.ts +1 -1
- package/esm/radio/root/RadioRoot.js +7 -3
- package/esm/radio-group/RadioGroup.js +4 -11
- package/esm/radio-group/RadioGroupContext.d.ts +0 -1
- package/esm/scroll-area/content/ScrollAreaContent.js +4 -4
- package/esm/scroll-area/root/ScrollAreaRoot.js +1 -1
- package/esm/scroll-area/scrollbar/ScrollAreaScrollbar.js +16 -20
- package/esm/scroll-area/viewport/ScrollAreaViewport.js +6 -10
- package/esm/select/arrow/SelectArrow.js +1 -1
- package/esm/select/backdrop/SelectBackdrop.js +1 -1
- package/esm/select/group/SelectGroup.js +1 -1
- package/esm/select/group-label/SelectGroupLabel.js +2 -2
- package/esm/select/icon/SelectIcon.js +1 -1
- package/esm/select/item/SelectItem.js +46 -32
- package/esm/select/item/SelectItemContext.d.ts +1 -1
- package/esm/select/item-indicator/SelectItemIndicator.js +1 -2
- package/esm/select/item-text/SelectItemText.js +9 -6
- package/esm/select/list/SelectList.js +1 -1
- package/esm/select/popup/SelectPopup.js +8 -3
- package/esm/select/positioner/SelectPositioner.js +3 -0
- package/esm/select/root/SelectRoot.js +46 -40
- package/esm/select/root/SelectRootContext.d.ts +4 -5
- package/esm/select/store.d.ts +3 -0
- package/esm/select/store.js +1 -0
- package/esm/select/trigger/SelectTrigger.d.ts +5 -0
- package/esm/select/trigger/SelectTrigger.js +19 -33
- package/esm/select/trigger/SelectTriggerDataAttributes.d.ts +5 -0
- package/esm/select/trigger/SelectTriggerDataAttributes.js +5 -0
- package/esm/slider/control/SliderControl.js +10 -12
- package/esm/slider/root/SliderRoot.js +1 -4
- package/esm/slider/thumb/SliderThumb.js +32 -30
- package/esm/slider/value/SliderValue.js +7 -15
- package/esm/switch/root/SwitchRoot.js +10 -10
- package/esm/switch/thumb/SwitchThumb.js +1 -9
- package/esm/tabs/indicator/TabsIndicator.js +14 -19
- package/esm/tabs/list/TabsList.js +4 -10
- package/esm/tabs/list/TabsListContext.d.ts +2 -1
- package/esm/tabs/panel/TabsPanel.js +1 -1
- package/esm/tabs/root/TabsRoot.d.ts +16 -1
- package/esm/tabs/root/TabsRoot.js +73 -25
- package/esm/tabs/root/TabsRootContext.d.ts +0 -2
- package/esm/toast/provider/ToastProvider.js +1 -1
- package/esm/toast/root/ToastRoot.d.ts +1 -1
- package/esm/toast/root/ToastRoot.js +108 -131
- package/esm/toast/root/ToastRootDataAttributes.d.ts +1 -1
- package/esm/toast/root/ToastRootDataAttributes.js +1 -1
- package/esm/toast/store.d.ts +9 -1
- package/esm/toast/store.js +19 -13
- package/esm/toast/useToastManager.d.ts +1 -1
- package/esm/toast/viewport/ToastViewport.js +1 -1
- package/esm/toggle/Toggle.js +5 -9
- package/esm/toggle-group/ToggleGroup.d.ts +2 -2
- package/esm/toggle-group/ToggleGroup.js +6 -13
- package/esm/toolbar/link/ToolbarLink.d.ts +1 -1
- package/esm/toolbar/link/ToolbarLink.js +1 -2
- package/esm/tooltip/arrow/TooltipArrow.js +3 -3
- package/esm/tooltip/popup/TooltipPopup.js +5 -4
- package/esm/tooltip/root/TooltipRoot.js +35 -26
- package/esm/tooltip/store/TooltipHandle.js +1 -1
- package/esm/tooltip/store/TooltipStore.d.ts +90 -2
- package/esm/tooltip/store/TooltipStore.js +18 -31
- package/esm/tooltip/trigger/TooltipTrigger.js +151 -20
- package/esm/tooltip/viewport/TooltipViewport.d.ts +2 -2
- package/esm/tooltip/viewport/TooltipViewport.js +2 -2
- package/esm/tooltip/viewport/TooltipViewportDataAttributes.d.ts +1 -1
- package/esm/tooltip/viewport/TooltipViewportDataAttributes.js +1 -1
- package/esm/unstable-use-media-query/index.js +1 -1
- package/esm/utils/popups/index.d.ts +1 -0
- package/esm/utils/popups/index.js +1 -0
- package/esm/utils/popups/inlineRect.d.ts +15 -0
- package/esm/utils/popups/inlineRect.js +191 -0
- package/esm/utils/popups/popupStoreUtils.d.ts +28 -10
- package/esm/utils/popups/popupStoreUtils.js +105 -20
- package/esm/utils/popups/popupTriggerMap.js +2 -0
- package/esm/utils/popups/store.d.ts +15 -2
- package/esm/utils/popups/store.js +38 -2
- package/esm/utils/popups/useTriggerFocusGuards.js +4 -5
- package/esm/utils/useAnchorPositioning.d.ts +5 -0
- package/esm/utils/useAnchorPositioning.js +12 -9
- package/esm/utils/useOpenInteractionType.d.ts +4 -0
- package/esm/utils/useOpenInteractionType.js +23 -18
- package/field/control/FieldControl.js +2 -6
- package/field/item/FieldItem.js +1 -4
- package/field/root/FieldRoot.js +11 -3
- package/field/root/useFieldValidation.d.ts +1 -0
- package/field/root/useFieldValidation.js +23 -20
- package/field/utils/getCombinedFieldValidityData.d.ts +1 -1
- package/field/validity/FieldValidity.d.ts +1 -1
- package/floating-ui-react/components/FloatingDelayGroup.js +3 -3
- package/floating-ui-react/components/FloatingFocusManager.d.ts +1 -1
- package/floating-ui-react/components/FloatingFocusManager.js +20 -8
- package/floating-ui-react/components/FloatingPortal.js +3 -3
- package/floating-ui-react/hooks/useClick.js +82 -73
- package/floating-ui-react/hooks/useClientPoint.js +29 -20
- package/floating-ui-react/hooks/useDismiss.d.ts +1 -1
- package/floating-ui-react/hooks/useDismiss.js +82 -92
- package/floating-ui-react/hooks/useFloating.js +36 -32
- package/floating-ui-react/hooks/useFloatingRootContext.d.ts +1 -1
- package/floating-ui-react/hooks/useFloatingRootContext.js +2 -2
- package/floating-ui-react/hooks/useFocus.js +84 -81
- package/floating-ui-react/hooks/useHover.js +74 -78
- package/floating-ui-react/hooks/useHoverFloatingInteraction.js +48 -43
- package/floating-ui-react/hooks/useHoverInteractionSharedState.js +1 -1
- package/floating-ui-react/hooks/useHoverReferenceInteraction.d.ts +7 -2
- package/floating-ui-react/hooks/useHoverReferenceInteraction.js +43 -38
- package/floating-ui-react/hooks/useHoverShared.d.ts +2 -1
- package/floating-ui-react/hooks/useHoverShared.js +11 -0
- package/floating-ui-react/hooks/useListNavigation.d.ts +1 -3
- package/floating-ui-react/hooks/useListNavigation.js +83 -74
- package/floating-ui-react/hooks/useSyncedFloatingRootContext.d.ts +9 -6
- package/floating-ui-react/hooks/useSyncedFloatingRootContext.js +26 -20
- package/floating-ui-react/hooks/useTypeahead.d.ts +2 -2
- package/floating-ui-react/hooks/useTypeahead.js +33 -52
- package/floating-ui-react/index.d.ts +0 -2
- package/floating-ui-react/index.js +0 -14
- package/floating-ui-react/types.d.ts +2 -7
- package/floating-ui-react/utils/composite.js +2 -0
- package/floating-ui-react/utils/enqueueFocus.d.ts +1 -1
- package/floating-ui-react/utils/enqueueFocus.js +10 -7
- package/floating-ui-react/utils/getEmptyRootContext.js +1 -1
- package/form/Form.js +2 -2
- package/index.js +1 -1
- package/internals/composite/composite.d.ts +0 -1
- package/internals/composite/composite.js +2 -3
- package/internals/composite/root/useCompositeRoot.js +1 -1
- package/internals/createBaseUIEventDetails.d.ts +2 -0
- package/internals/csp-context/index.d.ts +2 -0
- package/internals/csp-context/index.js +18 -0
- package/internals/field-register-control/index.d.ts +0 -1
- package/internals/field-register-control/useFieldControlRegistration.d.ts +2 -1
- package/internals/field-register-control/useFieldControlRegistration.js +11 -14
- package/internals/field-register-control/useRegisterFieldControl.d.ts +1 -4
- package/internals/field-register-control/useRegisterFieldControl.js +6 -11
- package/internals/field-root-context/FieldRootContext.d.ts +1 -0
- package/internals/field-root-context/FieldRootContext.js +4 -3
- package/internals/form-context/FormContext.d.ts +5 -1
- package/internals/reason-parts.d.ts +2 -0
- package/internals/reason-parts.js +3 -1
- package/internals/types.d.ts +1 -0
- package/internals/use-button/useButton.js +4 -4
- package/internals/usePressAndHold.js +2 -2
- package/internals/useRenderElement.js +2 -0
- package/menu/arrow/MenuArrow.js +1 -1
- package/menu/backdrop/MenuBackdrop.js +1 -1
- package/menu/checkbox-item/MenuCheckboxItem.js +5 -7
- package/menu/group/MenuGroup.js +1 -4
- package/menu/group/MenuGroupContext.d.ts +1 -3
- package/menu/group/MenuGroupContext.js +1 -1
- package/menu/group-label/MenuGroupLabel.js +4 -6
- package/menu/link-item/MenuLinkItem.js +2 -2
- package/menu/popup/MenuPopup.js +5 -5
- package/menu/radio-group/MenuRadioGroup.js +11 -5
- package/menu/radio-item/MenuRadioItem.js +5 -7
- package/menu/root/MenuRoot.js +60 -65
- package/menu/store/MenuHandle.js +1 -1
- package/menu/store/MenuStore.d.ts +87 -0
- package/menu/submenu-trigger/MenuSubmenuTrigger.js +7 -4
- package/menu/trigger/MenuTrigger.js +12 -9
- package/menu/viewport/MenuViewport.d.ts +2 -2
- package/menu/viewport/MenuViewport.js +2 -2
- package/navigation-menu/arrow/NavigationMenuArrow.js +1 -1
- package/navigation-menu/backdrop/NavigationMenuBackdrop.js +1 -1
- package/navigation-menu/content/NavigationMenuContent.js +8 -5
- package/navigation-menu/icon/NavigationMenuIcon.js +1 -1
- package/navigation-menu/item/NavigationMenuItem.js +2 -2
- package/navigation-menu/list/NavigationMenuList.js +1 -1
- package/navigation-menu/popup/NavigationMenuPopup.js +2 -2
- package/navigation-menu/root/NavigationMenuRoot.js +1 -3
- package/navigation-menu/trigger/NavigationMenuTrigger.js +23 -16
- package/navigation-menu/utils/isOutsideMenuEvent.d.ts +0 -1
- package/navigation-menu/utils/isOutsideMenuEvent.js +1 -5
- package/navigation-menu/viewport/NavigationMenuViewport.js +2 -3
- package/number-field/input/NumberFieldInput.js +3 -5
- package/number-field/root/NumberFieldRoot.js +5 -2
- package/number-field/scrub-area/NumberFieldScrubArea.js +7 -3
- package/otp-field/input/OTPFieldInput.js +42 -28
- package/otp-field/root/OTPFieldRoot.d.ts +17 -8
- package/otp-field/root/OTPFieldRoot.js +32 -32
- package/otp-field/root/OTPFieldRootContext.d.ts +1 -1
- package/otp-field/utils/otp.d.ts +5 -4
- package/otp-field/utils/otp.js +24 -12
- package/package.json +331 -317
- package/popover/arrow/PopoverArrow.js +1 -1
- package/popover/backdrop/PopoverBackdrop.js +1 -1
- package/popover/close/PopoverClose.js +2 -2
- package/popover/description/PopoverDescription.js +1 -7
- package/popover/popup/PopoverPopup.d.ts +1 -1
- package/popover/popup/PopoverPopup.js +16 -10
- package/popover/popup/PopoverPopupDataAttributes.d.ts +1 -1
- package/popover/popup/PopoverPopupDataAttributes.js +1 -1
- package/popover/positioner/PopoverPositioner.js +5 -5
- package/popover/root/PopoverRoot.d.ts +1 -1
- package/popover/root/PopoverRoot.js +39 -44
- package/popover/store/PopoverHandle.js +1 -1
- package/popover/store/PopoverStore.d.ts +91 -4
- package/popover/store/PopoverStore.js +16 -19
- package/popover/title/PopoverTitle.js +1 -7
- package/popover/trigger/PopoverTrigger.js +23 -16
- package/popover/viewport/PopoverViewport.d.ts +3 -3
- package/popover/viewport/PopoverViewport.js +2 -2
- package/popover/viewport/PopoverViewportDataAttributes.d.ts +1 -1
- package/popover/viewport/PopoverViewportDataAttributes.js +1 -1
- package/preview-card/positioner/PreviewCardPositioner.js +11 -1
- package/preview-card/root/PreviewCardRoot.d.ts +1 -1
- package/preview-card/root/PreviewCardRoot.js +30 -20
- package/preview-card/store/PreviewCardHandle.js +1 -1
- package/preview-card/store/PreviewCardStore.d.ts +90 -2
- package/preview-card/store/PreviewCardStore.js +18 -30
- package/preview-card/trigger/PreviewCardTrigger.js +5 -2
- package/preview-card/viewport/PreviewCardViewport.d.ts +2 -2
- package/preview-card/viewport/PreviewCardViewport.js +2 -2
- package/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +2 -2
- package/preview-card/viewport/PreviewCardViewportDataAttributes.js +2 -2
- package/progress/indicator/ProgressIndicator.js +6 -11
- package/progress/root/ProgressRoot.d.ts +1 -1
- package/radio/root/RadioRoot.js +7 -3
- package/radio-group/RadioGroup.js +4 -11
- package/radio-group/RadioGroupContext.d.ts +0 -1
- package/scroll-area/content/ScrollAreaContent.js +4 -4
- package/scroll-area/root/ScrollAreaRoot.js +1 -1
- package/scroll-area/scrollbar/ScrollAreaScrollbar.js +16 -20
- package/scroll-area/viewport/ScrollAreaViewport.js +6 -10
- package/select/arrow/SelectArrow.js +1 -1
- package/select/backdrop/SelectBackdrop.js +1 -1
- package/select/group/SelectGroup.js +1 -1
- package/select/group-label/SelectGroupLabel.js +2 -2
- package/select/icon/SelectIcon.js +1 -1
- package/select/item/SelectItem.js +46 -32
- package/select/item/SelectItemContext.d.ts +1 -1
- package/select/item-indicator/SelectItemIndicator.js +1 -2
- package/select/item-text/SelectItemText.js +9 -6
- package/select/list/SelectList.js +1 -1
- package/select/popup/SelectPopup.js +8 -3
- package/select/positioner/SelectPositioner.js +3 -0
- package/select/root/SelectRoot.js +45 -39
- package/select/root/SelectRootContext.d.ts +4 -5
- package/select/store.d.ts +3 -0
- package/select/store.js +1 -0
- package/select/trigger/SelectTrigger.d.ts +5 -0
- package/select/trigger/SelectTrigger.js +19 -33
- package/select/trigger/SelectTriggerDataAttributes.d.ts +5 -0
- package/select/trigger/SelectTriggerDataAttributes.js +5 -0
- package/slider/control/SliderControl.js +9 -11
- package/slider/root/SliderRoot.js +1 -4
- package/slider/thumb/SliderThumb.js +32 -30
- package/slider/value/SliderValue.js +7 -15
- package/switch/root/SwitchRoot.js +10 -10
- package/switch/thumb/SwitchThumb.js +1 -9
- package/tabs/indicator/TabsIndicator.js +14 -19
- package/tabs/list/TabsList.js +4 -10
- package/tabs/list/TabsListContext.d.ts +2 -1
- package/tabs/panel/TabsPanel.js +1 -1
- package/tabs/root/TabsRoot.d.ts +16 -1
- package/tabs/root/TabsRoot.js +71 -24
- package/tabs/root/TabsRootContext.d.ts +0 -2
- package/toast/provider/ToastProvider.js +1 -1
- package/toast/root/ToastRoot.d.ts +1 -1
- package/toast/root/ToastRoot.js +110 -133
- package/toast/root/ToastRootDataAttributes.d.ts +1 -1
- package/toast/root/ToastRootDataAttributes.js +1 -1
- package/toast/store.d.ts +9 -1
- package/toast/store.js +18 -12
- package/toast/useToastManager.d.ts +1 -1
- package/toast/viewport/ToastViewport.js +1 -1
- package/toggle/Toggle.js +5 -9
- package/toggle-group/ToggleGroup.d.ts +2 -2
- package/toggle-group/ToggleGroup.js +6 -13
- package/toolbar/link/ToolbarLink.d.ts +1 -1
- package/toolbar/link/ToolbarLink.js +1 -2
- package/tooltip/arrow/TooltipArrow.js +3 -3
- package/tooltip/popup/TooltipPopup.js +5 -4
- package/tooltip/root/TooltipRoot.js +32 -23
- package/tooltip/store/TooltipHandle.js +1 -1
- package/tooltip/store/TooltipStore.d.ts +90 -2
- package/tooltip/store/TooltipStore.js +17 -30
- package/tooltip/trigger/TooltipTrigger.js +152 -20
- package/tooltip/viewport/TooltipViewport.d.ts +2 -2
- package/tooltip/viewport/TooltipViewport.js +2 -2
- package/tooltip/viewport/TooltipViewportDataAttributes.d.ts +1 -1
- package/tooltip/viewport/TooltipViewportDataAttributes.js +1 -1
- package/unstable-use-media-query/index.js +1 -1
- package/utils/popups/index.d.ts +1 -0
- package/utils/popups/index.js +11 -0
- package/utils/popups/inlineRect.d.ts +15 -0
- package/utils/popups/inlineRect.js +198 -0
- package/utils/popups/popupStoreUtils.d.ts +28 -10
- package/utils/popups/popupStoreUtils.js +110 -20
- package/utils/popups/popupTriggerMap.js +2 -0
- package/utils/popups/store.d.ts +15 -2
- package/utils/popups/store.js +39 -2
- package/utils/popups/useTriggerFocusGuards.js +4 -5
- package/utils/useAnchorPositioning.d.ts +5 -0
- package/utils/useAnchorPositioning.js +12 -9
- package/utils/useOpenInteractionType.d.ts +4 -0
- package/utils/useOpenInteractionType.js +24 -17
- package/checkbox-group/index.parts.d.ts +0 -1
- package/checkbox-group/index.parts.js +0 -12
- package/esm/checkbox-group/index.parts.d.ts +0 -1
- package/esm/checkbox-group/index.parts.js +0 -1
- package/esm/floating-ui-react/hooks/useInteractions.d.ts +0 -20
- package/esm/floating-ui-react/hooks/useInteractions.js +0 -88
- package/esm/floating-ui-react/hooks/useRole.d.ts +0 -17
- package/esm/floating-ui-react/hooks/useRole.js +0 -113
- package/floating-ui-react/hooks/useInteractions.d.ts +0 -20
- package/floating-ui-react/hooks/useInteractions.js +0 -95
- package/floating-ui-react/hooks/useRole.d.ts +0 -17
- package/floating-ui-react/hooks/useRole.js +0 -120
- /package/{csp-provider → esm/internals/csp-context}/CSPContext.d.ts +0 -0
- /package/esm/{csp-provider → internals/csp-context}/CSPContext.js +0 -0
- /package/{esm/csp-provider → internals/csp-context}/CSPContext.d.ts +0 -0
- /package/{csp-provider → internals/csp-context}/CSPContext.js +0 -0
|
@@ -9,7 +9,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
exports.TooltipTrigger = void 0;
|
|
10
10
|
var _formatErrorMessage2 = _interopRequireDefault(require("@base-ui/utils/formatErrorMessage"));
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _dom = require("@floating-ui/utils/dom");
|
|
12
13
|
var _fastHooks = require("@base-ui/utils/fastHooks");
|
|
14
|
+
var _useTimeout = require("@base-ui/utils/useTimeout");
|
|
15
|
+
var _useValueAsRef = require("@base-ui/utils/useValueAsRef");
|
|
13
16
|
var _TooltipRootContext = require("../root/TooltipRootContext");
|
|
14
17
|
var _popupStateMapping = require("../../utils/popupStateMapping");
|
|
15
18
|
var _useRenderElement = require("../../internals/useRenderElement");
|
|
@@ -17,8 +20,47 @@ var _popups = require("../../utils/popups");
|
|
|
17
20
|
var _useBaseUiId = require("../../internals/useBaseUiId");
|
|
18
21
|
var _TooltipProviderContext = require("../provider/TooltipProviderContext");
|
|
19
22
|
var _floatingUiReact = require("../../floating-ui-react");
|
|
23
|
+
var _element = require("../../floating-ui-react/utils/element");
|
|
24
|
+
var _event = require("../../floating-ui-react/utils/event");
|
|
25
|
+
var _createBaseUIEventDetails = require("../../internals/createBaseUIEventDetails");
|
|
26
|
+
var _reasons = require("../../internals/reasons");
|
|
20
27
|
var _TooltipTriggerDataAttributes = require("./TooltipTriggerDataAttributes");
|
|
28
|
+
var _useHoverInteractionSharedState = require("../../floating-ui-react/hooks/useHoverInteractionSharedState");
|
|
21
29
|
var _constants = require("../utils/constants");
|
|
30
|
+
const TOOLTIP_TRIGGER_IDENTIFIER = 'data-base-ui-tooltip-trigger';
|
|
31
|
+
function getTargetElement(event) {
|
|
32
|
+
if ('composedPath' in event) {
|
|
33
|
+
const path = event.composedPath();
|
|
34
|
+
for (let i = 0; i < path.length; i += 1) {
|
|
35
|
+
const element = path[i];
|
|
36
|
+
if ((0, _dom.isElement)(element)) {
|
|
37
|
+
return element;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const target = event.target;
|
|
42
|
+
if ((0, _dom.isElement)(target)) {
|
|
43
|
+
return target;
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
function closestEnabledTooltipTrigger(element) {
|
|
48
|
+
let current = element;
|
|
49
|
+
while (current) {
|
|
50
|
+
if (current.hasAttribute(TOOLTIP_TRIGGER_IDENTIFIER)) {
|
|
51
|
+
return current;
|
|
52
|
+
}
|
|
53
|
+
const parentElement = current.parentElement;
|
|
54
|
+
if (parentElement) {
|
|
55
|
+
current = parentElement;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const root = current.getRootNode();
|
|
59
|
+
current = 'host' in root && (0, _dom.isElement)(root.host) ? root.host : null;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
|
|
22
64
|
/**
|
|
23
65
|
* An element to attach the tooltip to.
|
|
24
66
|
* Renders a `<button>` element.
|
|
@@ -27,8 +69,9 @@ var _constants = require("../utils/constants");
|
|
|
27
69
|
*/
|
|
28
70
|
const TooltipTrigger = exports.TooltipTrigger = (0, _fastHooks.fastComponentRef)(function TooltipTrigger(componentProps, forwardedRef) {
|
|
29
71
|
const {
|
|
30
|
-
className,
|
|
31
72
|
render,
|
|
73
|
+
className,
|
|
74
|
+
style,
|
|
32
75
|
handle,
|
|
33
76
|
payload,
|
|
34
77
|
disabled: disabledProp,
|
|
@@ -36,7 +79,6 @@ const TooltipTrigger = exports.TooltipTrigger = (0, _fastHooks.fastComponentRef)
|
|
|
36
79
|
closeOnClick = true,
|
|
37
80
|
closeDelay,
|
|
38
81
|
id: idProp,
|
|
39
|
-
style,
|
|
40
82
|
...elementProps
|
|
41
83
|
} = componentProps;
|
|
42
84
|
const rootContext = (0, _TooltipRootContext.useTooltipRootContext)(true);
|
|
@@ -67,29 +109,55 @@ const TooltipTrigger = exports.TooltipTrigger = (0, _fastHooks.fastComponentRef)
|
|
|
67
109
|
} = (0, _floatingUiReact.useDelayGroup)(floatingRootContext, {
|
|
68
110
|
open: isOpenedByThisTrigger
|
|
69
111
|
});
|
|
112
|
+
const hoverInteraction = (0, _useHoverInteractionSharedState.useHoverInteractionSharedState)(floatingRootContext);
|
|
70
113
|
store.useSyncedValue('isInstantPhase', isInstantPhase);
|
|
71
114
|
const rootDisabled = store.useState('disabled');
|
|
72
115
|
const disabled = disabledProp ?? rootDisabled;
|
|
116
|
+
const disabledRef = (0, _useValueAsRef.useValueAsRef)(disabled);
|
|
73
117
|
const trackCursorAxis = store.useState('trackCursorAxis');
|
|
74
118
|
const disableHoverablePopup = store.useState('disableHoverablePopup');
|
|
119
|
+
const isNestedTriggerHoveredRef = React.useRef(false);
|
|
120
|
+
const nestedTriggerOpenTimeout = (0, _useTimeout.useTimeout)();
|
|
121
|
+
// Local copy so it can be cleared on mouseLeave without resetting the hover hook's own pointerType.
|
|
122
|
+
const pointerTypeRef = React.useRef(undefined);
|
|
123
|
+
function getOpenDelay() {
|
|
124
|
+
const providerDelay = providerContext?.delay;
|
|
125
|
+
const groupOpenValue = typeof delayRef.current === 'object' ? delayRef.current.open : undefined;
|
|
126
|
+
let computedOpenDelay = delayWithDefault;
|
|
127
|
+
if (hasProvider) {
|
|
128
|
+
if (groupOpenValue !== 0) {
|
|
129
|
+
computedOpenDelay = delay ?? providerDelay ?? delayWithDefault;
|
|
130
|
+
} else {
|
|
131
|
+
computedOpenDelay = 0;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return computedOpenDelay;
|
|
135
|
+
}
|
|
136
|
+
function isEnabledNestedTriggerTarget(target) {
|
|
137
|
+
const triggerEl = triggerElementRef.current;
|
|
138
|
+
if (!triggerEl || !target) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
const nearestTrigger = closestEnabledTooltipTrigger(target);
|
|
142
|
+
return nearestTrigger !== null && nearestTrigger !== triggerEl && (0, _element.contains)(triggerEl, nearestTrigger);
|
|
143
|
+
}
|
|
144
|
+
function detectNestedTriggerHover(target) {
|
|
145
|
+
const nestedTriggerHovered = isEnabledNestedTriggerTarget(target);
|
|
146
|
+
isNestedTriggerHoveredRef.current = nestedTriggerHovered;
|
|
147
|
+
if (nestedTriggerHovered) {
|
|
148
|
+
hoverInteraction.openChangeTimeout.clear();
|
|
149
|
+
hoverInteraction.restTimeout.clear();
|
|
150
|
+
hoverInteraction.restTimeoutPending = false;
|
|
151
|
+
nestedTriggerOpenTimeout.clear();
|
|
152
|
+
}
|
|
153
|
+
return nestedTriggerHovered;
|
|
154
|
+
}
|
|
75
155
|
const hoverProps = (0, _floatingUiReact.useHoverReferenceInteraction)(floatingRootContext, {
|
|
76
156
|
enabled: !disabled,
|
|
77
157
|
mouseOnly: true,
|
|
78
158
|
move: false,
|
|
79
159
|
handleClose: !disableHoverablePopup && trackCursorAxis !== 'both' ? (0, _floatingUiReact.safePolygon)() : null,
|
|
80
|
-
restMs
|
|
81
|
-
const providerDelay = providerContext?.delay;
|
|
82
|
-
const groupOpenValue = typeof delayRef.current === 'object' ? delayRef.current.open : undefined;
|
|
83
|
-
let computedRestMs = delayWithDefault;
|
|
84
|
-
if (hasProvider) {
|
|
85
|
-
if (groupOpenValue !== 0) {
|
|
86
|
-
computedRestMs = delay ?? providerDelay ?? delayWithDefault;
|
|
87
|
-
} else {
|
|
88
|
-
computedRestMs = 0;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return computedRestMs;
|
|
92
|
-
},
|
|
160
|
+
restMs: getOpenDelay,
|
|
93
161
|
delay() {
|
|
94
162
|
const closeValue = typeof delayRef.current === 'object' ? delayRef.current.close : undefined;
|
|
95
163
|
let computedCloseDelay = closeDelayWithDefault;
|
|
@@ -102,24 +170,88 @@ const TooltipTrigger = exports.TooltipTrigger = (0, _fastHooks.fastComponentRef)
|
|
|
102
170
|
},
|
|
103
171
|
triggerElementRef,
|
|
104
172
|
isActiveTrigger: isTriggerActive,
|
|
105
|
-
isClosing: () => store.select('transitionStatus') === 'ending'
|
|
173
|
+
isClosing: () => store.select('transitionStatus') === 'ending',
|
|
174
|
+
shouldOpen() {
|
|
175
|
+
return !isNestedTriggerHoveredRef.current;
|
|
176
|
+
}
|
|
106
177
|
});
|
|
107
178
|
const focusProps = (0, _floatingUiReact.useFocus)(floatingRootContext, {
|
|
108
179
|
enabled: !disabled
|
|
109
180
|
}).reference;
|
|
181
|
+
const handleNestedTriggerHover = event => {
|
|
182
|
+
const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current;
|
|
183
|
+
const target = getTargetElement(event);
|
|
184
|
+
const nestedTriggerHovered = detectNestedTriggerHover(target);
|
|
185
|
+
const triggerEl = triggerElementRef.current;
|
|
186
|
+
const targetInsideTrigger = triggerEl && target && (0, _element.contains)(triggerEl, target);
|
|
187
|
+
|
|
188
|
+
// Only close hover-opened parents. Focus/click-like opens remain owned by
|
|
189
|
+
// their original interaction and should not be clobbered by nested hover.
|
|
190
|
+
if (nestedTriggerHovered && store.select('open') && store.select('lastOpenChangeReason') === _reasons.REASONS.triggerHover) {
|
|
191
|
+
store.setOpen(false, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.triggerHover, event));
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store.select('open') && triggerEl &&
|
|
195
|
+
// Match the hover hook's non-strict mouse fallback for mouse-only event sequences.
|
|
196
|
+
(0, _event.isMouseLikePointerType)(pointerTypeRef.current)) {
|
|
197
|
+
const open = () => {
|
|
198
|
+
if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store.select('open')) {
|
|
199
|
+
store.setOpen(true, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.triggerHover, event, triggerEl));
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
const openDelay = getOpenDelay();
|
|
203
|
+
|
|
204
|
+
// With `move: false`, the hover hook only listens to mouseenter/mouseleave
|
|
205
|
+
// on the parent trigger. Leaving a nested child for the parent area fires
|
|
206
|
+
// no event the hook can react to, so reopen locally.
|
|
207
|
+
if (openDelay === 0) {
|
|
208
|
+
nestedTriggerOpenTimeout.clear();
|
|
209
|
+
open();
|
|
210
|
+
} else {
|
|
211
|
+
nestedTriggerOpenTimeout.start(openDelay, open);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);
|
|
216
|
+
const shouldApplyRootTriggerProps = isMountedByThisTrigger || trackCursorAxis !== 'none';
|
|
110
217
|
const state = {
|
|
111
218
|
open: isOpenedByThisTrigger
|
|
112
219
|
};
|
|
113
|
-
const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);
|
|
114
220
|
const element = (0, _useRenderElement.useRenderElement)('button', componentProps, {
|
|
115
221
|
state,
|
|
116
222
|
ref: [forwardedRef, registerTrigger, triggerElementRef],
|
|
117
|
-
props: [hoverProps, focusProps, rootTriggerProps, {
|
|
118
|
-
|
|
223
|
+
props: [hoverProps, focusProps, shouldApplyRootTriggerProps ? rootTriggerProps : undefined, {
|
|
224
|
+
onMouseOver(event) {
|
|
225
|
+
handleNestedTriggerHover(event.nativeEvent);
|
|
226
|
+
},
|
|
227
|
+
onFocus(event) {
|
|
228
|
+
if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) {
|
|
229
|
+
event.preventBaseUIHandler();
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
onMouseLeave() {
|
|
233
|
+
isNestedTriggerHoveredRef.current = false;
|
|
234
|
+
nestedTriggerOpenTimeout.clear();
|
|
235
|
+
pointerTypeRef.current = undefined;
|
|
236
|
+
},
|
|
237
|
+
onPointerEnter(event) {
|
|
238
|
+
pointerTypeRef.current = event.pointerType;
|
|
239
|
+
},
|
|
240
|
+
onPointerDown(event) {
|
|
241
|
+
pointerTypeRef.current = event.pointerType;
|
|
119
242
|
store.set('closeOnClick', closeOnClick);
|
|
243
|
+
if (closeOnClick && !store.select('open')) {
|
|
244
|
+
store.cancelPendingOpen(event.nativeEvent);
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
onClick(event) {
|
|
248
|
+
if (closeOnClick && !store.select('open')) {
|
|
249
|
+
store.cancelPendingOpen(event.nativeEvent);
|
|
250
|
+
}
|
|
120
251
|
},
|
|
121
252
|
id: thisTriggerId,
|
|
122
|
-
[_TooltipTriggerDataAttributes.TooltipTriggerDataAttributes.triggerDisabled]: disabled ? '' : undefined
|
|
253
|
+
[_TooltipTriggerDataAttributes.TooltipTriggerDataAttributes.triggerDisabled]: disabled ? '' : undefined,
|
|
254
|
+
[TOOLTIP_TRIGGER_IDENTIFIER]: disabled ? undefined : ''
|
|
123
255
|
}, elementProps],
|
|
124
256
|
stateAttributesMapping: _popupStateMapping.triggerOpenStateMapping
|
|
125
257
|
});
|
|
@@ -2,8 +2,8 @@ import * as React from 'react';
|
|
|
2
2
|
import { BaseUIComponentProps } from "../../internals/types.js";
|
|
3
3
|
/**
|
|
4
4
|
* A viewport for displaying content transitions.
|
|
5
|
-
* This component is only required if one popup can be opened by multiple triggers, its content
|
|
6
|
-
* and switching between them is animated.
|
|
5
|
+
* This component is only required if one popup can be opened by multiple triggers, its content
|
|
6
|
+
* changes based on the trigger, and switching between them is animated.
|
|
7
7
|
* Renders a `<div>` element.
|
|
8
8
|
*
|
|
9
9
|
* Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)
|
|
@@ -20,8 +20,8 @@ const stateAttributesMapping = {
|
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* A viewport for displaying content transitions.
|
|
23
|
-
* This component is only required if one popup can be opened by multiple triggers, its content
|
|
24
|
-
* and switching between them is animated.
|
|
23
|
+
* This component is only required if one popup can be opened by multiple triggers, its content
|
|
24
|
+
* changes based on the trigger, and switching between them is animated.
|
|
25
25
|
* Renders a `<div>` element.
|
|
26
26
|
*
|
|
27
27
|
* Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)
|
|
@@ -11,7 +11,7 @@ export declare enum TooltipViewportDataAttributes {
|
|
|
11
11
|
* Indicates the direction from which the popup was activated.
|
|
12
12
|
* This can be used to create directional animations based on how the popup was triggered.
|
|
13
13
|
* Contains space-separated values for both horizontal and vertical axes.
|
|
14
|
-
* @type {`${'left' | 'right'} {'top' | 'bottom'}`}
|
|
14
|
+
* @type {`${'left' | 'right'} ${'top' | 'bottom'}`}
|
|
15
15
|
*/
|
|
16
16
|
activationDirection = "data-activation-direction",
|
|
17
17
|
/**
|
|
@@ -17,7 +17,7 @@ let TooltipViewportDataAttributes = exports.TooltipViewportDataAttributes = /*#_
|
|
|
17
17
|
* Indicates the direction from which the popup was activated.
|
|
18
18
|
* This can be used to create directional animations based on how the popup was triggered.
|
|
19
19
|
* Contains space-separated values for both horizontal and vertical axes.
|
|
20
|
-
* @type {`${'left' | 'right'} {'top' | 'bottom'}`}
|
|
20
|
+
* @type {`${'left' | 'right'} ${'top' | 'bottom'}`}
|
|
21
21
|
*/
|
|
22
22
|
TooltipViewportDataAttributes["activationDirection"] = "data-activation-direction";
|
|
23
23
|
/**
|
|
@@ -12,7 +12,7 @@ function useMediaQuery(query, options) {
|
|
|
12
12
|
// Wait for jsdom to support the match media feature.
|
|
13
13
|
// All the browsers Base UI support have this built-in.
|
|
14
14
|
// This defensive check is here for simplicity.
|
|
15
|
-
// Most of the time, the match media logic isn't central to people tests.
|
|
15
|
+
// Most of the time, the match media logic isn't central to people's tests.
|
|
16
16
|
const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';
|
|
17
17
|
query = query.replace(/^@media( ?)/m, '');
|
|
18
18
|
const {
|
package/utils/popups/index.d.ts
CHANGED
package/utils/popups/index.js
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _inlineRect = require("./inlineRect");
|
|
7
|
+
Object.keys(_inlineRect).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _inlineRect[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _inlineRect[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
6
17
|
var _popupStoreUtils = require("./popupStoreUtils");
|
|
7
18
|
Object.keys(_popupStoreUtils).forEach(function (key) {
|
|
8
19
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { Middleware } from '@floating-ui/react-dom';
|
|
3
|
+
export interface InlineRectCoords {
|
|
4
|
+
/** The x position in viewport coordinates. */
|
|
5
|
+
x: number;
|
|
6
|
+
/** The y position in viewport coordinates. */
|
|
7
|
+
y: number;
|
|
8
|
+
/** The line index under the pointer when coordinates were captured. */
|
|
9
|
+
lineIndex?: number | undefined;
|
|
10
|
+
/** The trigger element whose rects produced these coordinates. */
|
|
11
|
+
element: Element;
|
|
12
|
+
}
|
|
13
|
+
export declare function getInlineRectTriggerProps(coordsRef: React.RefObject<InlineRectCoords | undefined>, isOpen: boolean): Pick<React.HTMLAttributes<Element>, 'onFocus' | 'onMouseEnter' | 'onMouseMove'>;
|
|
14
|
+
export declare function updateInlineRectCoords(coordsRef: React.RefObject<InlineRectCoords | undefined>, element: Element, clientX: number, clientY: number): InlineRectCoords | undefined;
|
|
15
|
+
export declare function createInlineMiddleware(coordsRef: React.RefObject<InlineRectCoords | undefined>): Middleware;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createInlineMiddleware = createInlineMiddleware;
|
|
7
|
+
exports.getInlineRectTriggerProps = getInlineRectTriggerProps;
|
|
8
|
+
exports.updateInlineRectCoords = updateInlineRectCoords;
|
|
9
|
+
var _dom = require("@floating-ui/utils/dom");
|
|
10
|
+
// Floating UI ships an `inline()` middleware. This local version mirrors its line-rect
|
|
11
|
+
// selection while adding trigger identity checks, delayed-open hit-line reuse, and
|
|
12
|
+
// improved left/right edge grouping for Preview Card's reusable trigger model.
|
|
13
|
+
|
|
14
|
+
function createRect(left, top, right, bottom) {
|
|
15
|
+
return {
|
|
16
|
+
left,
|
|
17
|
+
top,
|
|
18
|
+
right,
|
|
19
|
+
bottom,
|
|
20
|
+
x: left,
|
|
21
|
+
y: top,
|
|
22
|
+
width: right - left,
|
|
23
|
+
height: bottom - top
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function copyRect(rect) {
|
|
27
|
+
return {
|
|
28
|
+
left: rect.left,
|
|
29
|
+
top: rect.top,
|
|
30
|
+
right: rect.right,
|
|
31
|
+
bottom: rect.bottom,
|
|
32
|
+
width: rect.width,
|
|
33
|
+
height: rect.height
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function getLineRects(rects) {
|
|
37
|
+
const lines = [];
|
|
38
|
+
let previousRect;
|
|
39
|
+
let left = Number.POSITIVE_INFINITY;
|
|
40
|
+
let top = Number.POSITIVE_INFINITY;
|
|
41
|
+
let right = Number.NEGATIVE_INFINITY;
|
|
42
|
+
let bottom = Number.NEGATIVE_INFINITY;
|
|
43
|
+
for (const rect of Array.from(rects).sort((a, b) => a.top - b.top)) {
|
|
44
|
+
left = Math.min(left, rect.left);
|
|
45
|
+
top = Math.min(top, rect.top);
|
|
46
|
+
right = Math.max(right, rect.right);
|
|
47
|
+
bottom = Math.max(bottom, rect.bottom);
|
|
48
|
+
if (!previousRect || rect.top - previousRect.top > previousRect.height / 2) {
|
|
49
|
+
lines.push(copyRect(rect));
|
|
50
|
+
} else {
|
|
51
|
+
const line = lines[lines.length - 1];
|
|
52
|
+
line.left = Math.min(line.left, rect.left);
|
|
53
|
+
line.right = Math.max(line.right, rect.right);
|
|
54
|
+
line.bottom = Math.max(line.bottom, rect.bottom);
|
|
55
|
+
line.width = line.right - line.left;
|
|
56
|
+
line.height = line.bottom - line.top;
|
|
57
|
+
}
|
|
58
|
+
previousRect = rect;
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
lines,
|
|
62
|
+
fallback: createRect(left, top, right, bottom)
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function findLineIndex(lines, x, y) {
|
|
66
|
+
return lines.findIndex(lineRect => x > lineRect.left - 2 && x < lineRect.right + 2 && y > lineRect.top - 2 && y < lineRect.bottom + 2);
|
|
67
|
+
}
|
|
68
|
+
function createClientRect(rect) {
|
|
69
|
+
return createRect(rect.left, rect.top, rect.right, rect.bottom);
|
|
70
|
+
}
|
|
71
|
+
function getInlineRectCoords(element, clientX, clientY) {
|
|
72
|
+
const {
|
|
73
|
+
lines
|
|
74
|
+
} = getLineRects(element.getClientRects());
|
|
75
|
+
if (lines.length < 2) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
const lineIndex = findLineIndex(lines, clientX, clientY);
|
|
79
|
+
return {
|
|
80
|
+
x: clientX,
|
|
81
|
+
y: clientY,
|
|
82
|
+
lineIndex: lineIndex === -1 ? undefined : lineIndex,
|
|
83
|
+
element
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function getInlineReferenceRect(reference, placement, coords) {
|
|
87
|
+
const {
|
|
88
|
+
lines,
|
|
89
|
+
fallback
|
|
90
|
+
} = getLineRects(reference.getClientRects());
|
|
91
|
+
if (lines.length < 2) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const x = coords?.x;
|
|
95
|
+
const y = coords?.y;
|
|
96
|
+
const side = placement[0];
|
|
97
|
+
if (coords?.lineIndex != null && lines[coords.lineIndex]) {
|
|
98
|
+
return createClientRect(lines[coords.lineIndex]);
|
|
99
|
+
}
|
|
100
|
+
if (x != null && y != null) {
|
|
101
|
+
const lineIndex = findLineIndex(lines, x, y);
|
|
102
|
+
if (lineIndex !== -1) {
|
|
103
|
+
return createClientRect(lines[lineIndex]);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (lines.length === 2 && lines[0].left > lines[1].right && x != null && y != null) {
|
|
107
|
+
return fallback;
|
|
108
|
+
}
|
|
109
|
+
if (side === 't' || side === 'b') {
|
|
110
|
+
const firstRect = lines[0];
|
|
111
|
+
const lastRect = lines[lines.length - 1];
|
|
112
|
+
const targetRect = side === 't' ? firstRect : lastRect;
|
|
113
|
+
return createRect(targetRect.left, firstRect.top, targetRect.right, lastRect.bottom);
|
|
114
|
+
}
|
|
115
|
+
const isLeft = side === 'l';
|
|
116
|
+
let left = lines[0].left;
|
|
117
|
+
let right = lines[0].right;
|
|
118
|
+
let edge = isLeft ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
|
|
119
|
+
let targetFirstRect = lines[0];
|
|
120
|
+
let targetLastRect = lines[0];
|
|
121
|
+
for (const rect of lines) {
|
|
122
|
+
left = Math.min(left, rect.left);
|
|
123
|
+
right = Math.max(right, rect.right);
|
|
124
|
+
const nextEdge = isLeft ? rect.left : rect.right;
|
|
125
|
+
if (isLeft && nextEdge < edge || !isLeft && nextEdge > edge) {
|
|
126
|
+
edge = nextEdge;
|
|
127
|
+
targetFirstRect = rect;
|
|
128
|
+
targetLastRect = rect;
|
|
129
|
+
} else if (nextEdge === edge) {
|
|
130
|
+
targetLastRect = rect;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return createRect(left, targetFirstRect.top, right, targetLastRect.bottom);
|
|
134
|
+
}
|
|
135
|
+
function getContextElement(reference) {
|
|
136
|
+
if ('contextElement' in reference && reference.contextElement) {
|
|
137
|
+
return reference.contextElement;
|
|
138
|
+
}
|
|
139
|
+
return (0, _dom.isElement)(reference) ? reference : undefined;
|
|
140
|
+
}
|
|
141
|
+
function getInlineRectTriggerProps(coordsRef, isOpen) {
|
|
142
|
+
function updateCoords(event) {
|
|
143
|
+
updateInlineRectCoords(coordsRef, event.currentTarget, event.clientX, event.clientY);
|
|
144
|
+
}
|
|
145
|
+
function updateCoordsOnMove(event) {
|
|
146
|
+
if (!isOpen) {
|
|
147
|
+
updateCoords(event);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
onFocus() {
|
|
152
|
+
coordsRef.current = undefined;
|
|
153
|
+
},
|
|
154
|
+
onMouseEnter: updateCoords,
|
|
155
|
+
onMouseMove: updateCoordsOnMove
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function updateInlineRectCoords(coordsRef, element, clientX, clientY) {
|
|
159
|
+
const nextCoords = getInlineRectCoords(element, clientX, clientY);
|
|
160
|
+
coordsRef.current = nextCoords;
|
|
161
|
+
return nextCoords;
|
|
162
|
+
}
|
|
163
|
+
function createInlineMiddleware(coordsRef) {
|
|
164
|
+
return {
|
|
165
|
+
name: 'inline',
|
|
166
|
+
async fn(state) {
|
|
167
|
+
const reference = state.elements.reference;
|
|
168
|
+
if (typeof reference?.getClientRects !== 'function') {
|
|
169
|
+
return {};
|
|
170
|
+
}
|
|
171
|
+
const contextElement = getContextElement(reference);
|
|
172
|
+
const coords = coordsRef.current;
|
|
173
|
+
const currentCoords = coords?.element === reference || coords?.element === contextElement ? coords : undefined;
|
|
174
|
+
const rect = getInlineReferenceRect(reference, state.placement, currentCoords);
|
|
175
|
+
if (!rect || typeof state.platform.getElementRects !== 'function') {
|
|
176
|
+
return {};
|
|
177
|
+
}
|
|
178
|
+
const resetRects = await state.platform.getElementRects({
|
|
179
|
+
reference: {
|
|
180
|
+
contextElement,
|
|
181
|
+
getBoundingClientRect() {
|
|
182
|
+
return rect;
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
floating: state.elements.floating,
|
|
186
|
+
strategy: state.strategy
|
|
187
|
+
});
|
|
188
|
+
if (state.rects.reference.x === resetRects.reference.x && state.rects.reference.y === resetRects.reference.y && state.rects.reference.width === resetRects.reference.width && state.rects.reference.height === resetRects.reference.height) {
|
|
189
|
+
return {};
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
reset: {
|
|
193
|
+
rects: resetRects
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
@@ -1,21 +1,35 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { ReactStore } from '@base-ui/utils/store';
|
|
3
|
+
import type { InteractionType } from '@base-ui/utils/useEnhancedClickHandler';
|
|
4
|
+
import type { BaseUIChangeEventDetails } from "../../internals/createBaseUIEventDetails.js";
|
|
3
5
|
import { PopupStoreState, PopupStoreContext, popupStoreSelectors, PopupStoreSelectors } from "./store.js";
|
|
6
|
+
export declare const FOCUSABLE_POPUP_PROPS: {
|
|
7
|
+
tabIndex: number;
|
|
8
|
+
"data-base-ui-focusable": string;
|
|
9
|
+
};
|
|
10
|
+
type PopupStoreWithOpen<State extends PopupStoreState<unknown>, SetOpenEventDetails extends BaseUIChangeEventDetails<string>> = ReactStore<State, PopupStoreContext<never>, PopupStoreSelectors> & {
|
|
11
|
+
setOpen(open: boolean, eventDetails: SetOpenEventDetails): void;
|
|
12
|
+
};
|
|
13
|
+
export declare function usePopupStore<State extends PopupStoreState<unknown>, SetOpenEventDetails extends BaseUIChangeEventDetails<string>, Store extends PopupStoreWithOpen<State, SetOpenEventDetails>>(externalStore: Store | undefined, createStore: (floatingId: string | undefined, nested: boolean) => Store, treatPopupAsFloatingElement?: boolean): {
|
|
14
|
+
store: Store;
|
|
15
|
+
internalStore: Store | null;
|
|
16
|
+
};
|
|
4
17
|
/**
|
|
5
18
|
* Returns a callback ref that registers/unregisters the trigger element in the store.
|
|
6
19
|
*
|
|
7
20
|
* @param store The Store instance where the trigger should be registered.
|
|
8
21
|
*/
|
|
9
|
-
export declare function useTriggerRegistration<State extends PopupStoreState<
|
|
22
|
+
export declare function useTriggerRegistration<State extends PopupStoreState<unknown>>(id: string | undefined, store: ReactStore<State, PopupStoreContext<never>, PopupStoreSelectors>): (element: Element | null) => void;
|
|
23
|
+
export declare function setOpenTriggerState(state: Partial<PopupStoreState<unknown>>, open: boolean, trigger: Element | undefined): void;
|
|
10
24
|
/**
|
|
11
25
|
* Sets up trigger data forwarding to the store.
|
|
12
26
|
*
|
|
13
27
|
* @param triggerId Id of the trigger.
|
|
14
|
-
* @param
|
|
28
|
+
* @param triggerElementRef Ref for the trigger DOM element.
|
|
15
29
|
* @param store The Store instance managing the popup state.
|
|
16
30
|
* @param stateUpdates An object with state updates to apply when the trigger is active.
|
|
17
31
|
*/
|
|
18
|
-
export declare function useTriggerDataForwarding<State extends PopupStoreState<
|
|
32
|
+
export declare function useTriggerDataForwarding<State extends PopupStoreState<unknown>>(triggerId: string | undefined, triggerElementRef: React.RefObject<Element | null>, store: ReactStore<State, PopupStoreContext<never>, typeof popupStoreSelectors>, stateUpdates: Omit<Partial<State>, 'activeTriggerId' | 'activeTriggerElement'>): {
|
|
19
33
|
registerTrigger: (element: Element | null) => void;
|
|
20
34
|
isMountedByThisTrigger: boolean;
|
|
21
35
|
};
|
|
@@ -24,17 +38,16 @@ export type PayloadChildRenderFunction<Payload> = (arg: {
|
|
|
24
38
|
}) => React.ReactNode;
|
|
25
39
|
/**
|
|
26
40
|
* Ensures that when there's only one trigger element registered, it is set as the active trigger.
|
|
27
|
-
* This allows controlled popups to work correctly without
|
|
28
|
-
* with
|
|
41
|
+
* This keeps triggerCount reactive while open and allows controlled popups to work correctly without
|
|
42
|
+
* an explicit triggerId, maintaining compatibility with contained triggers.
|
|
29
43
|
*
|
|
30
44
|
* This should be called on the Root part.
|
|
31
45
|
*
|
|
32
|
-
* @param open Whether the popup is open.
|
|
33
46
|
* @param store The Store instance managing the popup state.
|
|
34
47
|
*/
|
|
35
|
-
export declare function useImplicitActiveTrigger<State extends PopupStoreState<
|
|
48
|
+
export declare function useImplicitActiveTrigger<State extends PopupStoreState<unknown>>(store: ReactStore<State, PopupStoreContext<never>, typeof popupStoreSelectors>): void;
|
|
36
49
|
/**
|
|
37
|
-
*
|
|
50
|
+
* Manages the mounted state of the popup.
|
|
38
51
|
* Sets up the transition status listeners and handles unmounting when needed.
|
|
39
52
|
* Updates the `mounted` and `transitionStatus` states in the store.
|
|
40
53
|
*
|
|
@@ -44,7 +57,12 @@ export declare function useImplicitActiveTrigger<State extends PopupStoreState<a
|
|
|
44
57
|
*
|
|
45
58
|
* @returns A function to forcibly unmount the popup.
|
|
46
59
|
*/
|
|
47
|
-
export declare function useOpenStateTransitions<State extends PopupStoreState<
|
|
60
|
+
export declare function useOpenStateTransitions<State extends PopupStoreState<unknown>>(open: boolean, store: ReactStore<State, PopupStoreContext<never>, typeof popupStoreSelectors>, onUnmount?: () => void): {
|
|
48
61
|
forceUnmount: () => void;
|
|
49
62
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
50
|
-
};
|
|
63
|
+
};
|
|
64
|
+
export declare function usePopupInteractionProps<State extends PopupStoreState<unknown>>(store: ReactStore<State, PopupStoreContext<never>, typeof popupStoreSelectors>, statePart: Partial<State> & Pick<State, 'activeTriggerProps' | 'inactiveTriggerProps' | 'popupProps'>): void;
|
|
65
|
+
export declare function usePopupRootSync<State extends PopupStoreState<unknown> & {
|
|
66
|
+
openMethod: InteractionType | null;
|
|
67
|
+
}>(store: ReactStore<State, PopupStoreContext<never>, typeof popupStoreSelectors>, open: boolean): void;
|
|
68
|
+
export {};
|