@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
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useRenderDialogRoot = useRenderDialogRoot;
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _useOnFirstRender = require("@base-ui/utils/useOnFirstRender");
|
|
11
|
+
var _useDialogRoot = require("./useDialogRoot");
|
|
12
|
+
var _DialogRootContext = require("./DialogRootContext");
|
|
13
|
+
var _DialogStore = require("../store/DialogStore");
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
function useRenderDialogRoot(props, mode = 'dialog') {
|
|
16
|
+
const {
|
|
17
|
+
children,
|
|
18
|
+
open: openProp,
|
|
19
|
+
defaultOpen = false,
|
|
20
|
+
onOpenChange,
|
|
21
|
+
onOpenChangeComplete,
|
|
22
|
+
disablePointerDismissal: disablePointerDismissalProp = false,
|
|
23
|
+
modal: modalProp = true,
|
|
24
|
+
actionsRef,
|
|
25
|
+
handle,
|
|
26
|
+
triggerId: triggerIdProp,
|
|
27
|
+
defaultTriggerId: defaultTriggerIdProp = null
|
|
28
|
+
} = props;
|
|
29
|
+
const isDrawer = mode === 'drawer';
|
|
30
|
+
const isAlertDialog = mode === 'alert-dialog';
|
|
31
|
+
const modal = isAlertDialog ? true : modalProp;
|
|
32
|
+
const disablePointerDismissal = isAlertDialog || disablePointerDismissalProp;
|
|
33
|
+
const role = isAlertDialog ? 'alertdialog' : 'dialog';
|
|
34
|
+
const parentDialogRootContext = (0, _DialogRootContext.useDialogRootContext)(true);
|
|
35
|
+
const nested = Boolean(parentDialogRootContext);
|
|
36
|
+
const rootState = {
|
|
37
|
+
modal,
|
|
38
|
+
disablePointerDismissal,
|
|
39
|
+
nested,
|
|
40
|
+
role
|
|
41
|
+
};
|
|
42
|
+
const store = _DialogStore.DialogStore.useStore(handle?.store, {
|
|
43
|
+
open: defaultOpen,
|
|
44
|
+
openProp,
|
|
45
|
+
activeTriggerId: defaultTriggerIdProp,
|
|
46
|
+
triggerIdProp,
|
|
47
|
+
...rootState
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// Support initially open state when uncontrolled
|
|
51
|
+
(0, _useOnFirstRender.useOnFirstRender)(() => {
|
|
52
|
+
const nextState = openProp === undefined && store.state.open === false && defaultOpen === true ? {
|
|
53
|
+
open: true,
|
|
54
|
+
activeTriggerId: defaultTriggerIdProp
|
|
55
|
+
} : null;
|
|
56
|
+
if (isAlertDialog) {
|
|
57
|
+
// Handles can reuse plain Dialog stores; alert dialog invariants must exist immediately.
|
|
58
|
+
store.update(nextState ? {
|
|
59
|
+
...rootState,
|
|
60
|
+
...nextState
|
|
61
|
+
} : rootState);
|
|
62
|
+
} else if (nextState) {
|
|
63
|
+
store.update(nextState);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
store.useControlledProp('openProp', openProp);
|
|
67
|
+
store.useControlledProp('triggerIdProp', triggerIdProp);
|
|
68
|
+
store.useSyncedValues(rootState);
|
|
69
|
+
store.useContextCallback('onOpenChange', onOpenChange);
|
|
70
|
+
store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);
|
|
71
|
+
const open = store.useState('open');
|
|
72
|
+
const mounted = store.useState('mounted');
|
|
73
|
+
const payload = store.useState('payload');
|
|
74
|
+
const dialogRoot = (0, _useDialogRoot.useDialogRoot)({
|
|
75
|
+
store,
|
|
76
|
+
actionsRef,
|
|
77
|
+
parentContext: parentDialogRootContext?.store.context,
|
|
78
|
+
isDrawer
|
|
79
|
+
});
|
|
80
|
+
const shouldRenderInteractions = open || mounted;
|
|
81
|
+
const contextValue = React.useMemo(() => ({
|
|
82
|
+
store
|
|
83
|
+
}), [store]);
|
|
84
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogRootContext.IsDrawerContext.Provider, {
|
|
85
|
+
value: false,
|
|
86
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_DialogRootContext.DialogRootContext.Provider, {
|
|
87
|
+
value: contextValue,
|
|
88
|
+
children: [shouldRenderInteractions && /*#__PURE__*/(0, _jsxRuntime.jsx)(_useDialogRoot.DialogInteractions, {
|
|
89
|
+
store: store,
|
|
90
|
+
dialogRoot: dialogRoot
|
|
91
|
+
}), typeof children === 'function' ? children({
|
|
92
|
+
payload
|
|
93
|
+
}) : children]
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
}
|
|
@@ -11,7 +11,7 @@ export declare class DialogHandle<Payload> {
|
|
|
11
11
|
constructor(store?: DialogStore<Payload>);
|
|
12
12
|
/**
|
|
13
13
|
* Opens the dialog and associates it with the trigger with the given id.
|
|
14
|
-
* The trigger, if provided, must be a
|
|
14
|
+
* The trigger, if provided, must be a matching Trigger component with this handle passed as a prop.
|
|
15
15
|
*
|
|
16
16
|
* This method should only be called in an event handler or an effect (not during rendering).
|
|
17
17
|
*
|
|
@@ -23,7 +23,7 @@ class DialogHandle {
|
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Opens the dialog and associates it with the trigger with the given id.
|
|
26
|
-
* The trigger, if provided, must be a
|
|
26
|
+
* The trigger, if provided, must be a matching Trigger component with this handle passed as a prop.
|
|
27
27
|
*
|
|
28
28
|
* This method should only be called in an event handler or an effect (not during rendering).
|
|
29
29
|
*
|
|
@@ -61,7 +61,7 @@ class DialogHandle {
|
|
|
61
61
|
* Indicates whether the dialog is currently open.
|
|
62
62
|
*/
|
|
63
63
|
get isOpen() {
|
|
64
|
-
return this.store.
|
|
64
|
+
return this.store.select('open');
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -40,6 +40,8 @@ declare const selectors: {
|
|
|
40
40
|
mounted: boolean;
|
|
41
41
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
42
42
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
43
|
+
floatingId: string | undefined;
|
|
44
|
+
triggerCount: number;
|
|
43
45
|
preventUnmountingOnClose: boolean;
|
|
44
46
|
payload: unknown;
|
|
45
47
|
activeTriggerId: string | null;
|
|
@@ -57,6 +59,8 @@ declare const selectors: {
|
|
|
57
59
|
mounted: boolean;
|
|
58
60
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
59
61
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
62
|
+
floatingId: string | undefined;
|
|
63
|
+
triggerCount: number;
|
|
60
64
|
preventUnmountingOnClose: boolean;
|
|
61
65
|
payload: unknown;
|
|
62
66
|
activeTriggerId: string | null;
|
|
@@ -74,6 +78,8 @@ declare const selectors: {
|
|
|
74
78
|
mounted: boolean;
|
|
75
79
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
76
80
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
81
|
+
floatingId: string | undefined;
|
|
82
|
+
triggerCount: number;
|
|
77
83
|
preventUnmountingOnClose: boolean;
|
|
78
84
|
payload: unknown;
|
|
79
85
|
activeTriggerId: string | null;
|
|
@@ -91,6 +97,8 @@ declare const selectors: {
|
|
|
91
97
|
mounted: boolean;
|
|
92
98
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
93
99
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
100
|
+
floatingId: string | undefined;
|
|
101
|
+
triggerCount: number;
|
|
94
102
|
preventUnmountingOnClose: boolean;
|
|
95
103
|
payload: unknown;
|
|
96
104
|
activeTriggerId: string | null;
|
|
@@ -102,12 +110,33 @@ declare const selectors: {
|
|
|
102
110
|
inactiveTriggerProps: import("../../index.js").HTMLProps;
|
|
103
111
|
popupProps: import("../../index.js").HTMLProps;
|
|
104
112
|
}) => import("../../floating-ui-react/components/FloatingRootStore.js").FloatingRootStore;
|
|
113
|
+
triggerCount: (state: {
|
|
114
|
+
open: boolean;
|
|
115
|
+
readonly openProp: boolean | undefined;
|
|
116
|
+
mounted: boolean;
|
|
117
|
+
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
118
|
+
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
119
|
+
floatingId: string | undefined;
|
|
120
|
+
triggerCount: number;
|
|
121
|
+
preventUnmountingOnClose: boolean;
|
|
122
|
+
payload: unknown;
|
|
123
|
+
activeTriggerId: string | null;
|
|
124
|
+
activeTriggerElement: Element | null;
|
|
125
|
+
readonly triggerIdProp: string | null | undefined;
|
|
126
|
+
popupElement: HTMLElement | null;
|
|
127
|
+
positionerElement: HTMLElement | null;
|
|
128
|
+
activeTriggerProps: import("../../index.js").HTMLProps;
|
|
129
|
+
inactiveTriggerProps: import("../../index.js").HTMLProps;
|
|
130
|
+
popupProps: import("../../index.js").HTMLProps;
|
|
131
|
+
}) => number;
|
|
105
132
|
preventUnmountingOnClose: (state: {
|
|
106
133
|
open: boolean;
|
|
107
134
|
readonly openProp: boolean | undefined;
|
|
108
135
|
mounted: boolean;
|
|
109
136
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
110
137
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
138
|
+
floatingId: string | undefined;
|
|
139
|
+
triggerCount: number;
|
|
111
140
|
preventUnmountingOnClose: boolean;
|
|
112
141
|
payload: unknown;
|
|
113
142
|
activeTriggerId: string | null;
|
|
@@ -125,6 +154,8 @@ declare const selectors: {
|
|
|
125
154
|
mounted: boolean;
|
|
126
155
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
127
156
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
157
|
+
floatingId: string | undefined;
|
|
158
|
+
triggerCount: number;
|
|
128
159
|
preventUnmountingOnClose: boolean;
|
|
129
160
|
payload: unknown;
|
|
130
161
|
activeTriggerId: string | null;
|
|
@@ -142,6 +173,8 @@ declare const selectors: {
|
|
|
142
173
|
mounted: boolean;
|
|
143
174
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
144
175
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
176
|
+
floatingId: string | undefined;
|
|
177
|
+
triggerCount: number;
|
|
145
178
|
preventUnmountingOnClose: boolean;
|
|
146
179
|
payload: unknown;
|
|
147
180
|
activeTriggerId: string | null;
|
|
@@ -159,6 +192,8 @@ declare const selectors: {
|
|
|
159
192
|
mounted: boolean;
|
|
160
193
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
161
194
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
195
|
+
floatingId: string | undefined;
|
|
196
|
+
triggerCount: number;
|
|
162
197
|
preventUnmountingOnClose: boolean;
|
|
163
198
|
payload: unknown;
|
|
164
199
|
activeTriggerId: string | null;
|
|
@@ -170,12 +205,33 @@ declare const selectors: {
|
|
|
170
205
|
inactiveTriggerProps: import("../../index.js").HTMLProps;
|
|
171
206
|
popupProps: import("../../index.js").HTMLProps;
|
|
172
207
|
}) => Element | null;
|
|
208
|
+
popupId: (state: {
|
|
209
|
+
open: boolean;
|
|
210
|
+
readonly openProp: boolean | undefined;
|
|
211
|
+
mounted: boolean;
|
|
212
|
+
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
213
|
+
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
214
|
+
floatingId: string | undefined;
|
|
215
|
+
triggerCount: number;
|
|
216
|
+
preventUnmountingOnClose: boolean;
|
|
217
|
+
payload: unknown;
|
|
218
|
+
activeTriggerId: string | null;
|
|
219
|
+
activeTriggerElement: Element | null;
|
|
220
|
+
readonly triggerIdProp: string | null | undefined;
|
|
221
|
+
popupElement: HTMLElement | null;
|
|
222
|
+
positionerElement: HTMLElement | null;
|
|
223
|
+
activeTriggerProps: import("../../index.js").HTMLProps;
|
|
224
|
+
inactiveTriggerProps: import("../../index.js").HTMLProps;
|
|
225
|
+
popupProps: import("../../index.js").HTMLProps;
|
|
226
|
+
}) => string | undefined;
|
|
173
227
|
isTriggerActive: (state: {
|
|
174
228
|
open: boolean;
|
|
175
229
|
readonly openProp: boolean | undefined;
|
|
176
230
|
mounted: boolean;
|
|
177
231
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
178
232
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
233
|
+
floatingId: string | undefined;
|
|
234
|
+
triggerCount: number;
|
|
179
235
|
preventUnmountingOnClose: boolean;
|
|
180
236
|
payload: unknown;
|
|
181
237
|
activeTriggerId: string | null;
|
|
@@ -193,6 +249,8 @@ declare const selectors: {
|
|
|
193
249
|
mounted: boolean;
|
|
194
250
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
195
251
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
252
|
+
floatingId: string | undefined;
|
|
253
|
+
triggerCount: number;
|
|
196
254
|
preventUnmountingOnClose: boolean;
|
|
197
255
|
payload: unknown;
|
|
198
256
|
activeTriggerId: string | null;
|
|
@@ -210,6 +268,8 @@ declare const selectors: {
|
|
|
210
268
|
mounted: boolean;
|
|
211
269
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
212
270
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
271
|
+
floatingId: string | undefined;
|
|
272
|
+
triggerCount: number;
|
|
213
273
|
preventUnmountingOnClose: boolean;
|
|
214
274
|
payload: unknown;
|
|
215
275
|
activeTriggerId: string | null;
|
|
@@ -227,6 +287,8 @@ declare const selectors: {
|
|
|
227
287
|
mounted: boolean;
|
|
228
288
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
229
289
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
290
|
+
floatingId: string | undefined;
|
|
291
|
+
triggerCount: number;
|
|
230
292
|
preventUnmountingOnClose: boolean;
|
|
231
293
|
payload: unknown;
|
|
232
294
|
activeTriggerId: string | null;
|
|
@@ -238,12 +300,33 @@ declare const selectors: {
|
|
|
238
300
|
inactiveTriggerProps: import("../../index.js").HTMLProps;
|
|
239
301
|
popupProps: import("../../index.js").HTMLProps;
|
|
240
302
|
}, isActive: boolean) => import("../../index.js").HTMLProps;
|
|
303
|
+
triggerPopupId: (state: {
|
|
304
|
+
open: boolean;
|
|
305
|
+
readonly openProp: boolean | undefined;
|
|
306
|
+
mounted: boolean;
|
|
307
|
+
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
308
|
+
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
309
|
+
floatingId: string | undefined;
|
|
310
|
+
triggerCount: number;
|
|
311
|
+
preventUnmountingOnClose: boolean;
|
|
312
|
+
payload: unknown;
|
|
313
|
+
activeTriggerId: string | null;
|
|
314
|
+
activeTriggerElement: Element | null;
|
|
315
|
+
readonly triggerIdProp: string | null | undefined;
|
|
316
|
+
popupElement: HTMLElement | null;
|
|
317
|
+
positionerElement: HTMLElement | null;
|
|
318
|
+
activeTriggerProps: import("../../index.js").HTMLProps;
|
|
319
|
+
inactiveTriggerProps: import("../../index.js").HTMLProps;
|
|
320
|
+
popupProps: import("../../index.js").HTMLProps;
|
|
321
|
+
}, triggerId: string | undefined) => string | undefined;
|
|
241
322
|
popupProps: (state: {
|
|
242
323
|
open: boolean;
|
|
243
324
|
readonly openProp: boolean | undefined;
|
|
244
325
|
mounted: boolean;
|
|
245
326
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
246
327
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
328
|
+
floatingId: string | undefined;
|
|
329
|
+
triggerCount: number;
|
|
247
330
|
preventUnmountingOnClose: boolean;
|
|
248
331
|
payload: unknown;
|
|
249
332
|
activeTriggerId: string | null;
|
|
@@ -261,6 +344,8 @@ declare const selectors: {
|
|
|
261
344
|
mounted: boolean;
|
|
262
345
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
263
346
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
347
|
+
floatingId: string | undefined;
|
|
348
|
+
triggerCount: number;
|
|
264
349
|
preventUnmountingOnClose: boolean;
|
|
265
350
|
payload: unknown;
|
|
266
351
|
activeTriggerId: string | null;
|
|
@@ -278,6 +363,8 @@ declare const selectors: {
|
|
|
278
363
|
mounted: boolean;
|
|
279
364
|
transitionStatus: import("../../internals/useTransitionStatus.js").TransitionStatus;
|
|
280
365
|
floatingRootContext: import("../../floating-ui-react/index.js").FloatingRootContext;
|
|
366
|
+
floatingId: string | undefined;
|
|
367
|
+
triggerCount: number;
|
|
281
368
|
preventUnmountingOnClose: boolean;
|
|
282
369
|
payload: unknown;
|
|
283
370
|
activeTriggerId: string | null;
|
|
@@ -291,7 +378,7 @@ declare const selectors: {
|
|
|
291
378
|
}) => HTMLElement | null;
|
|
292
379
|
};
|
|
293
380
|
export declare class DialogStore<Payload> extends ReactStore<Readonly<State<Payload>>, Context, typeof selectors> {
|
|
294
|
-
constructor(initialState?: Partial<State<Payload
|
|
381
|
+
constructor(initialState?: Partial<State<Payload>>, floatingId?: string | undefined, nested?: boolean);
|
|
295
382
|
setOpen: (nextOpen: boolean, eventDetails: Omit<DialogRoot.ChangeEventDetails, "preventUnmountOnClose">) => void;
|
|
296
383
|
static useStore<Payload>(externalStore: DialogStore<Payload> | undefined, initialState?: Partial<State<Payload>>): DialogStore<Payload>;
|
|
297
384
|
}
|
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.DialogStore = void 0;
|
|
8
8
|
var React = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _store = require("@base-ui/utils/store");
|
|
10
|
-
var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
|
|
11
10
|
var _popups = require("../../utils/popups");
|
|
12
11
|
const selectors = {
|
|
13
12
|
..._popups.popupStoreSelectors,
|
|
@@ -23,15 +22,18 @@ const selectors = {
|
|
|
23
22
|
role: (0, _store.createSelector)(state => state.role)
|
|
24
23
|
};
|
|
25
24
|
class DialogStore extends _store.ReactStore {
|
|
26
|
-
constructor(initialState) {
|
|
27
|
-
|
|
25
|
+
constructor(initialState, floatingId, nested = false) {
|
|
26
|
+
const triggerElements = new _popups.PopupTriggerMap();
|
|
27
|
+
const state = createInitialState(initialState);
|
|
28
|
+
state.floatingRootContext = (0, _popups.createPopupFloatingRootContext)(triggerElements, floatingId, nested);
|
|
29
|
+
super(state, {
|
|
28
30
|
popupRef: /*#__PURE__*/React.createRef(),
|
|
29
31
|
backdropRef: /*#__PURE__*/React.createRef(),
|
|
30
32
|
internalBackdropRef: /*#__PURE__*/React.createRef(),
|
|
31
33
|
outsidePressEnabledRef: {
|
|
32
34
|
current: true
|
|
33
35
|
},
|
|
34
|
-
triggerElements
|
|
36
|
+
triggerElements,
|
|
35
37
|
onOpenChange: undefined,
|
|
36
38
|
onOpenChangeComplete: undefined
|
|
37
39
|
}, selectors);
|
|
@@ -53,22 +55,15 @@ class DialogStore extends _store.ReactStore {
|
|
|
53
55
|
const updatedState = {
|
|
54
56
|
open: nextOpen
|
|
55
57
|
};
|
|
56
|
-
|
|
57
|
-
// If a popup is closing, the `trigger` may be null.
|
|
58
|
-
// We want to keep the previous value so that exit animations are played and focus is returned correctly.
|
|
59
|
-
const newTriggerId = eventDetails.trigger?.id ?? null;
|
|
60
|
-
if (newTriggerId || nextOpen) {
|
|
61
|
-
updatedState.activeTriggerId = newTriggerId;
|
|
62
|
-
updatedState.activeTriggerElement = eventDetails.trigger ?? null;
|
|
63
|
-
}
|
|
58
|
+
(0, _popups.setOpenTriggerState)(updatedState, nextOpen, eventDetails.trigger);
|
|
64
59
|
this.update(updatedState);
|
|
65
60
|
};
|
|
66
61
|
static useStore(externalStore, initialState) {
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return
|
|
62
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
|
63
|
+
const store = (0, _popups.usePopupStore)(externalStore, (floatingId, nested) => new DialogStore(initialState, floatingId, nested), true).store;
|
|
64
|
+
/* eslint-enable react-hooks/rules-of-hooks */
|
|
65
|
+
|
|
66
|
+
return store;
|
|
72
67
|
}
|
|
73
68
|
}
|
|
74
69
|
exports.DialogStore = DialogStore;
|
|
@@ -23,7 +23,7 @@ export interface DialogTriggerProps<Payload = unknown> extends NativeButtonProps
|
|
|
23
23
|
payload?: Payload | undefined;
|
|
24
24
|
/**
|
|
25
25
|
* ID of the trigger. In addition to being forwarded to the rendered element,
|
|
26
|
-
* it is also used to specify the active trigger for the
|
|
26
|
+
* it is also used to specify the active trigger for the dialog in controlled mode (with the DialogRoot `triggerId` prop).
|
|
27
27
|
*/
|
|
28
28
|
id?: string | undefined;
|
|
29
29
|
}
|
|
@@ -17,6 +17,7 @@ var _constants = require("../../internals/constants");
|
|
|
17
17
|
var _popups = require("../../utils/popups");
|
|
18
18
|
var _useBaseUiId = require("../../internals/useBaseUiId");
|
|
19
19
|
var _floatingUiReact = require("../../floating-ui-react");
|
|
20
|
+
var _useOpenInteractionType = require("../../utils/useOpenInteractionType");
|
|
20
21
|
/**
|
|
21
22
|
* A button that opens the dialog.
|
|
22
23
|
* Renders a `<button>` element.
|
|
@@ -27,12 +28,12 @@ const DialogTrigger = exports.DialogTrigger = /*#__PURE__*/React.forwardRef(func
|
|
|
27
28
|
const {
|
|
28
29
|
render,
|
|
29
30
|
className,
|
|
31
|
+
style,
|
|
30
32
|
disabled = false,
|
|
31
33
|
nativeButton = true,
|
|
32
34
|
id: idProp,
|
|
33
35
|
payload,
|
|
34
36
|
handle,
|
|
35
|
-
style,
|
|
36
37
|
...elementProps
|
|
37
38
|
} = componentProps;
|
|
38
39
|
const dialogRootContext = (0, _DialogRootContext.useDialogRootContext)(true);
|
|
@@ -43,6 +44,7 @@ const DialogTrigger = exports.DialogTrigger = /*#__PURE__*/React.forwardRef(func
|
|
|
43
44
|
const thisTriggerId = (0, _useBaseUiId.useBaseUiId)(idProp);
|
|
44
45
|
const floatingContext = store.useState('floatingRootContext');
|
|
45
46
|
const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);
|
|
47
|
+
const popupId = store.useState('triggerPopupId', thisTriggerId);
|
|
46
48
|
const triggerElementRef = React.useRef(null);
|
|
47
49
|
const {
|
|
48
50
|
registerTrigger,
|
|
@@ -60,7 +62,9 @@ const DialogTrigger = exports.DialogTrigger = /*#__PURE__*/React.forwardRef(func
|
|
|
60
62
|
const click = (0, _floatingUiReact.useClick)(floatingContext, {
|
|
61
63
|
enabled: floatingContext != null
|
|
62
64
|
});
|
|
63
|
-
const
|
|
65
|
+
const interactionTypeProps = (0, _useOpenInteractionType.useOpenMethodTriggerProps)(() => store.select('open'), interactionType => {
|
|
66
|
+
store.set('openMethod', interactionType);
|
|
67
|
+
});
|
|
64
68
|
const state = {
|
|
65
69
|
disabled,
|
|
66
70
|
open: isOpenedByThisTrigger
|
|
@@ -69,9 +73,12 @@ const DialogTrigger = exports.DialogTrigger = /*#__PURE__*/React.forwardRef(func
|
|
|
69
73
|
return (0, _useRenderElement.useRenderElement)('button', componentProps, {
|
|
70
74
|
state,
|
|
71
75
|
ref: [buttonRef, forwardedRef, registerTrigger, triggerElementRef],
|
|
72
|
-
props: [
|
|
76
|
+
props: [click.reference, rootTriggerProps, interactionTypeProps, {
|
|
73
77
|
[_constants.CLICK_TRIGGER_IDENTIFIER]: '',
|
|
74
|
-
id: thisTriggerId
|
|
78
|
+
id: thisTriggerId,
|
|
79
|
+
'aria-haspopup': 'dialog',
|
|
80
|
+
'aria-expanded': isOpenedByThisTrigger,
|
|
81
|
+
'aria-controls': popupId
|
|
75
82
|
}, elementProps, getButtonProps],
|
|
76
83
|
stateAttributesMapping: _popupStateMapping.triggerOpenStateMapping
|
|
77
84
|
});
|
|
@@ -36,10 +36,10 @@ const stateAttributesMapping = {
|
|
|
36
36
|
*/
|
|
37
37
|
const DialogViewport = exports.DialogViewport = /*#__PURE__*/React.forwardRef(function DialogViewport(componentProps, forwardedRef) {
|
|
38
38
|
const {
|
|
39
|
-
className,
|
|
40
39
|
render,
|
|
41
|
-
|
|
40
|
+
className,
|
|
42
41
|
style,
|
|
42
|
+
children,
|
|
43
43
|
...elementProps
|
|
44
44
|
} = componentProps;
|
|
45
45
|
const keepMounted = (0, _DialogPortalContext.useDialogPortalContext)();
|
|
@@ -51,6 +51,7 @@ const DialogViewport = exports.DialogViewport = /*#__PURE__*/React.forwardRef(fu
|
|
|
51
51
|
const transitionStatus = store.useState('transitionStatus');
|
|
52
52
|
const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');
|
|
53
53
|
const mounted = store.useState('mounted');
|
|
54
|
+
const setViewportElement = store.useStateSetter('viewportElement');
|
|
54
55
|
const nestedDialogOpen = nestedOpenDialogCount > 0;
|
|
55
56
|
const state = {
|
|
56
57
|
open,
|
|
@@ -62,7 +63,7 @@ const DialogViewport = exports.DialogViewport = /*#__PURE__*/React.forwardRef(fu
|
|
|
62
63
|
return (0, _useRenderElement.useRenderElement)('div', componentProps, {
|
|
63
64
|
enabled: shouldRender,
|
|
64
65
|
state,
|
|
65
|
-
ref: [forwardedRef,
|
|
66
|
+
ref: [forwardedRef, setViewportElement],
|
|
66
67
|
stateAttributesMapping,
|
|
67
68
|
props: [{
|
|
68
69
|
role: 'presentation',
|
|
@@ -26,6 +26,7 @@ var _composite = require("../../internals/composite/composite");
|
|
|
26
26
|
var _DrawerRootContext = require("../root/DrawerRootContext");
|
|
27
27
|
var _useDrawerSnapPoints = require("../root/useDrawerSnapPoints");
|
|
28
28
|
var _DrawerViewportContext = require("../viewport/DrawerViewportContext");
|
|
29
|
+
var _popups = require("../../utils/popups");
|
|
29
30
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
30
31
|
// Module-level flag to ensure we only register the CSS properties once,
|
|
31
32
|
// regardless of how many Drawer components are mounted.
|
|
@@ -34,7 +35,6 @@ let drawerSwipeVarsRegistered = false;
|
|
|
34
35
|
/**
|
|
35
36
|
* Removes inheritance of high-frequency drawer swipe CSS variables, which
|
|
36
37
|
* reduces style recalculation cost in complex drawers with deep subtrees.
|
|
37
|
-
* Child elements that need these values can still opt-in by using `inherit`.
|
|
38
38
|
* See https://motion.dev/blog/web-animation-performance-tier-list
|
|
39
39
|
* under the "Improving CSS variable performance" section.
|
|
40
40
|
*/
|
|
@@ -122,11 +122,11 @@ const stateAttributesMapping = {
|
|
|
122
122
|
*/
|
|
123
123
|
const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function DrawerPopup(componentProps, forwardedRef) {
|
|
124
124
|
const {
|
|
125
|
+
render,
|
|
125
126
|
className,
|
|
127
|
+
style,
|
|
126
128
|
finalFocus,
|
|
127
129
|
initialFocus,
|
|
128
|
-
render,
|
|
129
|
-
style,
|
|
130
130
|
...elementProps
|
|
131
131
|
} = componentProps;
|
|
132
132
|
const {
|
|
@@ -155,16 +155,18 @@ const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function
|
|
|
155
155
|
const openMethod = store.useState('openMethod');
|
|
156
156
|
const titleElementId = store.useState('titleElementId');
|
|
157
157
|
const role = store.useState('role');
|
|
158
|
-
const
|
|
158
|
+
const floatingId = floatingRootContext.useState('floatingId');
|
|
159
|
+
const popupId = elementProps.id ?? floatingId;
|
|
159
160
|
const swipe = (0, _DrawerViewportContext.useDrawerViewportContext)(true);
|
|
160
|
-
|
|
161
|
-
const swipeStrength = swipe?.swipeStrength ?? null;
|
|
161
|
+
(0, _DialogPortalContext.useDialogPortalContext)();
|
|
162
162
|
const {
|
|
163
163
|
snapPoints,
|
|
164
164
|
activeSnapPoint,
|
|
165
165
|
activeSnapPointOffset
|
|
166
166
|
} = (0, _useDrawerSnapPoints.useDrawerSnapPoints)();
|
|
167
|
-
|
|
167
|
+
const nestedDrawerOpen = nestedOpenDrawerCount > 0;
|
|
168
|
+
const swiping = swipe?.swiping ?? false;
|
|
169
|
+
const swipeStrength = swipe?.swipeStrength ?? null;
|
|
168
170
|
const [popupHeight, setPopupHeight] = React.useState(0);
|
|
169
171
|
const popupHeightRef = React.useRef(0);
|
|
170
172
|
if (process.env.NODE_ENV !== 'production') {
|
|
@@ -279,6 +281,7 @@ const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function
|
|
|
279
281
|
}
|
|
280
282
|
});
|
|
281
283
|
const resolvedInitialFocus = initialFocus === undefined ? store.context.popupRef : initialFocus;
|
|
284
|
+
const setPopupElement = store.useStateSetter('popupElement');
|
|
282
285
|
const state = {
|
|
283
286
|
open,
|
|
284
287
|
nested,
|
|
@@ -324,10 +327,11 @@ const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function
|
|
|
324
327
|
const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
|
|
325
328
|
state,
|
|
326
329
|
props: [rootPopupProps, {
|
|
330
|
+
id: popupId,
|
|
327
331
|
'aria-labelledby': titleElementId,
|
|
328
332
|
'aria-describedby': descriptionElementId,
|
|
329
333
|
role,
|
|
330
|
-
|
|
334
|
+
..._popups.FOCUSABLE_POPUP_PROPS,
|
|
331
335
|
hidden: !mounted,
|
|
332
336
|
onKeyDown(event) {
|
|
333
337
|
if (_composite.COMPOSITE_KEYS.has(event.key)) {
|
|
@@ -344,7 +348,7 @@ const DrawerPopup = exports.DrawerPopup = /*#__PURE__*/React.forwardRef(function
|
|
|
344
348
|
[_DrawerPopupCssVars.DrawerPopupCssVars.swipeStrength]: typeof swipeStrength === 'number' && Number.isFinite(swipeStrength) && swipeStrength > 0 ? `${swipeStrength}` : '1'
|
|
345
349
|
}
|
|
346
350
|
}, elementProps],
|
|
347
|
-
ref: [forwardedRef, store.context.popupRef,
|
|
351
|
+
ref: [forwardedRef, store.context.popupRef, setPopupElement],
|
|
348
352
|
stateAttributesMapping
|
|
349
353
|
});
|
|
350
354
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingUiReact.FloatingFocusManager, {
|
|
@@ -15,7 +15,6 @@ var _detectBrowser = require("@base-ui/utils/detectBrowser");
|
|
|
15
15
|
var _useId = require("@base-ui/utils/useId");
|
|
16
16
|
var _DrawerRootContext = require("./DrawerRootContext");
|
|
17
17
|
var _dialog = require("../../dialog");
|
|
18
|
-
var _DialogRoot = require("../../dialog/root/DialogRoot");
|
|
19
18
|
var _createBaseUIEventDetails = require("../../internals/createBaseUIEventDetails");
|
|
20
19
|
var _reasons = require("../../internals/reasons");
|
|
21
20
|
var _DialogRootContext = require("../../dialog/root/DialogRootContext");
|
|
@@ -46,9 +45,8 @@ function DrawerRoot(props) {
|
|
|
46
45
|
snapPoints,
|
|
47
46
|
snapPoint: snapPointProp,
|
|
48
47
|
defaultSnapPoint,
|
|
49
|
-
onSnapPointChange
|
|
48
|
+
onSnapPointChange
|
|
50
49
|
} = props;
|
|
51
|
-
const onSnapPointChange = (0, _useStableCallback.useStableCallback)(onSnapPointChangeProp);
|
|
52
50
|
const parentDrawerRootContext = (0, _DrawerRootContext.useDrawerRootContext)(true);
|
|
53
51
|
const notifyParentSwipeProgressChange = parentDrawerRootContext?.onNestedSwipeProgressChange;
|
|
54
52
|
const notifyParentFrontmostHeight = parentDrawerRootContext?.onNestedFrontmostHeightChange;
|
|
@@ -153,7 +151,7 @@ function DrawerRoot(props) {
|
|
|
153
151
|
});
|
|
154
152
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DrawerRootContext.DrawerRootContext.Provider, {
|
|
155
153
|
value: contextValue,
|
|
156
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
154
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogRootContext.IsDrawerContext.Provider, {
|
|
157
155
|
value: true,
|
|
158
156
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dialog.Dialog.Root, {
|
|
159
157
|
open: openProp,
|
|
@@ -197,10 +195,12 @@ function createNestedSwipeProgressStore() {
|
|
|
197
195
|
function DrawerProviderReporter() {
|
|
198
196
|
const drawerId = (0, _useId.useId)();
|
|
199
197
|
const providerContext = (0, _DrawerProviderContext.useDrawerProviderContext)(true);
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
const
|
|
198
|
+
const {
|
|
199
|
+
store
|
|
200
|
+
} = (0, _DialogRootContext.useDialogRootContext)(false);
|
|
201
|
+
const open = store.useState('open');
|
|
202
|
+
const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');
|
|
203
|
+
const popupElement = store.useState('popupElement');
|
|
204
204
|
const isTopmost = nestedOpenDialogCount === 0;
|
|
205
205
|
React.useEffect(() => {
|
|
206
206
|
if (!providerContext || drawerId == null) {
|
|
@@ -228,10 +228,10 @@ function DrawerProviderReporter() {
|
|
|
228
228
|
return undefined;
|
|
229
229
|
}
|
|
230
230
|
function handleCloseWatcher(event) {
|
|
231
|
-
if (!
|
|
231
|
+
if (!store.select('open')) {
|
|
232
232
|
return;
|
|
233
233
|
}
|
|
234
|
-
|
|
234
|
+
store.setOpen(false, (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.closeWatcher, event));
|
|
235
235
|
}
|
|
236
236
|
const closeWatcher = new CloseWatcherCtor();
|
|
237
237
|
const unsubscribe = (0, _addEventListener.addEventListener)(closeWatcher, 'close', handleCloseWatcher);
|
|
@@ -239,6 +239,6 @@ function DrawerProviderReporter() {
|
|
|
239
239
|
unsubscribe();
|
|
240
240
|
closeWatcher.destroy();
|
|
241
241
|
};
|
|
242
|
-
}, [
|
|
242
|
+
}, [store, isTopmost, open, popupElement]);
|
|
243
243
|
return null;
|
|
244
244
|
}
|
|
@@ -10,7 +10,7 @@ export interface DrawerNestedSwipeProgressStore {
|
|
|
10
10
|
export interface DrawerRootContext {
|
|
11
11
|
swipeDirection: DrawerSwipeDirection;
|
|
12
12
|
/**
|
|
13
|
-
* Whether
|
|
13
|
+
* Whether to disable velocity-based snap skipping.
|
|
14
14
|
*/
|
|
15
15
|
snapToSequentialPoints: boolean;
|
|
16
16
|
/**
|