@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
|
@@ -8,9 +8,7 @@ exports.PreviewCardStore = void 0;
|
|
|
8
8
|
var React = _interopRequireWildcard(require("react"));
|
|
9
9
|
var ReactDOM = _interopRequireWildcard(require("react-dom"));
|
|
10
10
|
var _store = require("@base-ui/utils/store");
|
|
11
|
-
var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
|
|
12
11
|
var _popups = require("../../utils/popups");
|
|
13
|
-
var _floatingUiReact = require("../../floating-ui-react");
|
|
14
12
|
var _reasons = require("../../internals/reasons");
|
|
15
13
|
var _constants = require("../utils/constants");
|
|
16
14
|
const selectors = {
|
|
@@ -19,17 +17,23 @@ const selectors = {
|
|
|
19
17
|
hasViewport: (0, _store.createSelector)(state => state.hasViewport)
|
|
20
18
|
};
|
|
21
19
|
class PreviewCardStore extends _store.ReactStore {
|
|
22
|
-
constructor(initialState) {
|
|
23
|
-
|
|
20
|
+
constructor(initialState, floatingId, nested = false) {
|
|
21
|
+
const triggerElements = new _popups.PopupTriggerMap();
|
|
22
|
+
const state = {
|
|
24
23
|
...createInitialState(),
|
|
25
24
|
...initialState
|
|
26
|
-
}
|
|
25
|
+
};
|
|
26
|
+
state.floatingRootContext = (0, _popups.createPopupFloatingRootContext)(triggerElements, floatingId, nested);
|
|
27
|
+
super(state, {
|
|
27
28
|
popupRef: /*#__PURE__*/React.createRef(),
|
|
28
29
|
onOpenChange: undefined,
|
|
29
30
|
onOpenChangeComplete: undefined,
|
|
30
|
-
triggerElements
|
|
31
|
+
triggerElements,
|
|
31
32
|
closeDelayRef: {
|
|
32
33
|
current: _constants.CLOSE_DELAY
|
|
34
|
+
},
|
|
35
|
+
inlineRectCoordsRef: {
|
|
36
|
+
current: undefined
|
|
33
37
|
}
|
|
34
38
|
}, selectors);
|
|
35
39
|
}
|
|
@@ -45,6 +49,10 @@ class PreviewCardStore extends _store.ReactStore {
|
|
|
45
49
|
if (eventDetails.isCanceled) {
|
|
46
50
|
return;
|
|
47
51
|
}
|
|
52
|
+
const event = eventDetails.event;
|
|
53
|
+
if (nextOpen && isHover && eventDetails.trigger && 'clientX' in event && 'clientY' in event && this.context.inlineRectCoordsRef.current?.element !== eventDetails.trigger) {
|
|
54
|
+
(0, _popups.updateInlineRectCoords)(this.context.inlineRectCoordsRef, eventDetails.trigger, event.clientX, event.clientY);
|
|
55
|
+
}
|
|
48
56
|
this.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
|
|
49
57
|
const changeState = () => {
|
|
50
58
|
const updatedState = {
|
|
@@ -57,14 +65,7 @@ class PreviewCardStore extends _store.ReactStore {
|
|
|
57
65
|
} else if (reason === _reasons.REASONS.triggerHover) {
|
|
58
66
|
updatedState.instantType = undefined;
|
|
59
67
|
}
|
|
60
|
-
|
|
61
|
-
// If a popup is closing, the `trigger` may be null.
|
|
62
|
-
// We want to keep the previous value so that exit animations are played and focus is returned correctly.
|
|
63
|
-
const newTriggerId = eventDetails.trigger?.id ?? null;
|
|
64
|
-
if (newTriggerId || nextOpen) {
|
|
65
|
-
updatedState.activeTriggerId = newTriggerId;
|
|
66
|
-
updatedState.activeTriggerElement = eventDetails.trigger ?? null;
|
|
67
|
-
}
|
|
68
|
+
(0, _popups.setOpenTriggerState)(updatedState, nextOpen, eventDetails.trigger);
|
|
68
69
|
this.update(updatedState);
|
|
69
70
|
};
|
|
70
71
|
if (isHover) {
|
|
@@ -76,23 +77,10 @@ class PreviewCardStore extends _store.ReactStore {
|
|
|
76
77
|
}
|
|
77
78
|
};
|
|
78
79
|
static useStore(externalStore, initialState) {
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
}).current;
|
|
83
|
-
const store = externalStore ?? internalStore;
|
|
84
|
-
|
|
85
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
86
|
-
const floatingRootContext = (0, _floatingUiReact.useSyncedFloatingRootContext)({
|
|
87
|
-
popupStore: store,
|
|
88
|
-
onOpenChange: store.setOpen
|
|
89
|
-
});
|
|
80
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
|
81
|
+
const store = (0, _popups.usePopupStore)(externalStore, (floatingId, nested) => new PreviewCardStore(initialState, floatingId, nested)).store;
|
|
82
|
+
/* eslint-enable react-hooks/rules-of-hooks */
|
|
90
83
|
|
|
91
|
-
// It's safe to set this here because when this code runs for the first time,
|
|
92
|
-
// nothing has had a chance to subscribe to the `store` yet.
|
|
93
|
-
// For subsequent renders, the `floatingRootContext` reference remains the same,
|
|
94
|
-
// so it's basically a no-op.
|
|
95
|
-
store.state.floatingRootContext = floatingRootContext;
|
|
96
84
|
return store;
|
|
97
85
|
}
|
|
98
86
|
}
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
exports.PreviewCardTrigger = void 0;
|
|
10
10
|
var _formatErrorMessage2 = _interopRequireDefault(require("@base-ui/utils/formatErrorMessage"));
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _fastHooks = require("@base-ui/utils/fastHooks");
|
|
12
13
|
var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
|
|
13
14
|
var _PreviewCardContext = require("../root/PreviewCardContext");
|
|
14
15
|
var _popupStateMapping = require("../../utils/popupStateMapping");
|
|
@@ -23,7 +24,7 @@ var _floatingUiReact = require("../../floating-ui-react");
|
|
|
23
24
|
*
|
|
24
25
|
* Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
|
|
25
26
|
*/
|
|
26
|
-
const PreviewCardTrigger = exports.PreviewCardTrigger =
|
|
27
|
+
const PreviewCardTrigger = exports.PreviewCardTrigger = (0, _fastHooks.fastComponentRef)(function PreviewCardTrigger(componentProps, forwardedRef) {
|
|
27
28
|
const {
|
|
28
29
|
render,
|
|
29
30
|
className,
|
|
@@ -44,6 +45,7 @@ const PreviewCardTrigger = exports.PreviewCardTrigger = /*#__PURE__*/React.forwa
|
|
|
44
45
|
const isTriggerActive = store.useState('isTriggerActive', thisTriggerId);
|
|
45
46
|
const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);
|
|
46
47
|
const floatingRootContext = store.useState('floatingRootContext');
|
|
48
|
+
const inlineRectCoordsRef = store.context.inlineRectCoordsRef;
|
|
47
49
|
const triggerElementRef = React.useRef(null);
|
|
48
50
|
const delayWithDefault = delay ?? _constants.OPEN_DELAY;
|
|
49
51
|
const closeDelayWithDefault = closeDelay ?? _constants.CLOSE_DELAY;
|
|
@@ -77,10 +79,11 @@ const PreviewCardTrigger = exports.PreviewCardTrigger = /*#__PURE__*/React.forwa
|
|
|
77
79
|
open: isOpenedByThisTrigger
|
|
78
80
|
};
|
|
79
81
|
const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);
|
|
82
|
+
const inlineRectTriggerProps = (0, _popups.getInlineRectTriggerProps)(inlineRectCoordsRef, isOpenedByThisTrigger);
|
|
80
83
|
const element = (0, _useRenderElement.useRenderElement)('a', componentProps, {
|
|
81
84
|
state,
|
|
82
85
|
ref: [forwardedRef, registerTrigger, triggerElementRef],
|
|
83
|
-
props: [hoverProps, focusProps.reference, rootTriggerProps, {
|
|
86
|
+
props: [hoverProps, focusProps.reference, rootTriggerProps, inlineRectTriggerProps, {
|
|
84
87
|
id: thisTriggerId
|
|
85
88
|
}, elementProps],
|
|
86
89
|
stateAttributesMapping: _popupStateMapping.triggerOpenStateMapping
|
|
@@ -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 Preview Card](https://base-ui.com/react/components/preview-card)
|
|
@@ -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 Preview Card](https://base-ui.com/react/components/preview-card)
|
|
@@ -11,7 +11,7 @@ export declare enum PreviewCardViewportDataAttributes {
|
|
|
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
|
/**
|
|
@@ -20,7 +20,7 @@ export declare enum PreviewCardViewportDataAttributes {
|
|
|
20
20
|
transitioning = "data-transitioning",
|
|
21
21
|
/**
|
|
22
22
|
* Present if animations should be instant.
|
|
23
|
-
* @type {'
|
|
23
|
+
* @type {'dismiss' | 'focus'}
|
|
24
24
|
*/
|
|
25
25
|
instant = "data-instant",
|
|
26
26
|
}
|
|
@@ -17,7 +17,7 @@ let PreviewCardViewportDataAttributes = exports.PreviewCardViewportDataAttribute
|
|
|
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
|
PreviewCardViewportDataAttributes["activationDirection"] = "data-activation-direction";
|
|
23
23
|
/**
|
|
@@ -26,7 +26,7 @@ let PreviewCardViewportDataAttributes = exports.PreviewCardViewportDataAttribute
|
|
|
26
26
|
PreviewCardViewportDataAttributes["transitioning"] = "data-transitioning";
|
|
27
27
|
/**
|
|
28
28
|
* Present if animations should be instant.
|
|
29
|
-
* @type {'
|
|
29
|
+
* @type {'dismiss' | 'focus'}
|
|
30
30
|
*/
|
|
31
31
|
PreviewCardViewportDataAttributes["instant"] = "data-instant";
|
|
32
32
|
return PreviewCardViewportDataAttributes;
|
|
@@ -31,21 +31,16 @@ const ProgressIndicator = exports.ProgressIndicator = /*#__PURE__*/React.forward
|
|
|
31
31
|
state
|
|
32
32
|
} = (0, _ProgressRootContext.useProgressRootContext)();
|
|
33
33
|
const percentageValue = Number.isFinite(value) && value !== null ? (0, _valueToPercent.valueToPercent)(value, min, max) : null;
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
insetInlineStart: 0,
|
|
40
|
-
height: 'inherit',
|
|
41
|
-
width: `${percentageValue}%`
|
|
42
|
-
};
|
|
43
|
-
}, [percentageValue]);
|
|
34
|
+
const indicatorStyle = percentageValue == null ? {} : {
|
|
35
|
+
insetInlineStart: 0,
|
|
36
|
+
height: 'inherit',
|
|
37
|
+
width: `${percentageValue}%`
|
|
38
|
+
};
|
|
44
39
|
const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
|
|
45
40
|
state,
|
|
46
41
|
ref: forwardedRef,
|
|
47
42
|
props: [{
|
|
48
|
-
style:
|
|
43
|
+
style: indicatorStyle
|
|
49
44
|
}, elementProps],
|
|
50
45
|
stateAttributesMapping: _stateAttributesMapping.progressStateAttributesMapping
|
|
51
46
|
});
|
|
@@ -16,7 +16,7 @@ export interface ProgressRootState {
|
|
|
16
16
|
}
|
|
17
17
|
export interface ProgressRootProps extends BaseUIComponentProps<'div', ProgressRootState> {
|
|
18
18
|
/**
|
|
19
|
-
* A string value that provides a user-friendly name for `aria-valuenow`, the current value of the
|
|
19
|
+
* A string value that provides a user-friendly name for `aria-valuenow`, the current value of the progress bar.
|
|
20
20
|
*/
|
|
21
21
|
'aria-valuetext'?: React.AriaAttributes['aria-valuetext'] | undefined;
|
|
22
22
|
/**
|
package/radio/root/RadioRoot.js
CHANGED
|
@@ -12,6 +12,7 @@ var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
|
|
|
12
12
|
var _useStableCallback = require("@base-ui/utils/useStableCallback");
|
|
13
13
|
var _visuallyHidden = require("@base-ui/utils/visuallyHidden");
|
|
14
14
|
var _empty = require("@base-ui/utils/empty");
|
|
15
|
+
var _owner = require("@base-ui/utils/owner");
|
|
15
16
|
var _createBaseUIEventDetails = require("../../internals/createBaseUIEventDetails");
|
|
16
17
|
var _reasons = require("../../internals/reasons");
|
|
17
18
|
var _noop = require("../../internals/noop");
|
|
@@ -84,7 +85,6 @@ const RadioRoot = exports.RadioRoot = /*#__PURE__*/React.forwardRef(function Rad
|
|
|
84
85
|
const required = requiredGroup || requiredProp;
|
|
85
86
|
const form = formGroup;
|
|
86
87
|
const checked = groupContext ? checkedValue === value : value === '';
|
|
87
|
-
const serializedValue = React.useMemo(() => (0, _serializeValue.serializeValue)(value), [value]);
|
|
88
88
|
const radioRef = React.useRef(null);
|
|
89
89
|
const inputRef = React.useRef(null);
|
|
90
90
|
const handleControlRef = (0, _useStableCallback.useStableCallback)(element => {
|
|
@@ -138,7 +138,11 @@ const RadioRoot = exports.RadioRoot = /*#__PURE__*/React.forwardRef(function Rad
|
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
140
140
|
event.preventDefault();
|
|
141
|
-
inputRef.current
|
|
141
|
+
const input = inputRef.current;
|
|
142
|
+
if (!input) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
input.dispatchEvent(new ((0, _owner.ownerWindow)(input).PointerEvent)('click', {
|
|
142
146
|
bubbles: true,
|
|
143
147
|
shiftKey: event.shiftKey,
|
|
144
148
|
ctrlKey: event.ctrlKey,
|
|
@@ -171,7 +175,7 @@ const RadioRoot = exports.RadioRoot = /*#__PURE__*/React.forwardRef(function Rad
|
|
|
171
175
|
style: name ? _visuallyHidden.visuallyHiddenInput : _visuallyHidden.visuallyHidden,
|
|
172
176
|
'aria-hidden': true,
|
|
173
177
|
...(value !== undefined ? {
|
|
174
|
-
value:
|
|
178
|
+
value: (0, _serializeValue.serializeValue)(value)
|
|
175
179
|
} : _empty.EMPTY_OBJECT),
|
|
176
180
|
disabled,
|
|
177
181
|
checked,
|
|
@@ -76,9 +76,9 @@ const RadioGroup = exports.RadioGroup = /*#__PURE__*/React.forwardRef(function R
|
|
|
76
76
|
name: 'RadioGroup',
|
|
77
77
|
state: 'value'
|
|
78
78
|
});
|
|
79
|
-
const
|
|
79
|
+
const [touched, setTouched] = React.useState(false);
|
|
80
80
|
const setCheckedValue = (0, _useStableCallback.useStableCallback)((value, eventDetails) => {
|
|
81
|
-
|
|
81
|
+
onValueChangeProp?.(value, eventDetails);
|
|
82
82
|
if (eventDetails.isCanceled) {
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
@@ -127,12 +127,7 @@ const RadioGroup = exports.RadioGroup = /*#__PURE__*/React.forwardRef(function R
|
|
|
127
127
|
}
|
|
128
128
|
return undefined;
|
|
129
129
|
});
|
|
130
|
-
|
|
131
|
-
(0, _useRegisterFieldControl.useRegisterFieldControl)(controlRef, {
|
|
132
|
-
id,
|
|
133
|
-
value: checkedValue,
|
|
134
|
-
getValue: getFieldValue
|
|
135
|
-
});
|
|
130
|
+
(0, _useRegisterFieldControl.useRegisterFieldControl)(controlRef, id, checkedValue ?? null);
|
|
136
131
|
(0, _useValueChanged.useValueChanged)(checkedValue, () => {
|
|
137
132
|
clearErrors(name);
|
|
138
133
|
setDirty(checkedValue !== validityData.initialValue);
|
|
@@ -147,7 +142,6 @@ const RadioGroup = exports.RadioGroup = /*#__PURE__*/React.forwardRef(function R
|
|
|
147
142
|
setInputRef(fallbackInput);
|
|
148
143
|
}
|
|
149
144
|
});
|
|
150
|
-
const [touched, setTouched] = React.useState(false);
|
|
151
145
|
const ariaLabelledby = elementProps['aria-labelledby'] ?? labelId ?? fieldsetContext?.legendId;
|
|
152
146
|
const state = {
|
|
153
147
|
...fieldState,
|
|
@@ -162,7 +156,6 @@ const RadioGroup = exports.RadioGroup = /*#__PURE__*/React.forwardRef(function R
|
|
|
162
156
|
form,
|
|
163
157
|
validation,
|
|
164
158
|
name,
|
|
165
|
-
onValueChange,
|
|
166
159
|
readOnly,
|
|
167
160
|
registerControlRef,
|
|
168
161
|
registerInputRef,
|
|
@@ -170,7 +163,7 @@ const RadioGroup = exports.RadioGroup = /*#__PURE__*/React.forwardRef(function R
|
|
|
170
163
|
setCheckedValue,
|
|
171
164
|
setTouched,
|
|
172
165
|
touched
|
|
173
|
-
}), [checkedValue, disabled, form, validation, fieldState, name,
|
|
166
|
+
}), [checkedValue, disabled, form, validation, fieldState, name, readOnly, registerControlRef, registerInputRef, required, setCheckedValue, setTouched, touched]);
|
|
174
167
|
const defaultProps = {
|
|
175
168
|
role: 'radiogroup',
|
|
176
169
|
'aria-required': required || undefined,
|
|
@@ -10,7 +10,6 @@ export interface RadioGroupContext<Value> {
|
|
|
10
10
|
name: string | undefined;
|
|
11
11
|
checkedValue: Value | undefined;
|
|
12
12
|
setCheckedValue: (value: Value, eventDetails: BaseUIChangeEventDetails<BaseUIEventReasons['none']>) => void;
|
|
13
|
-
onValueChange: (value: Value, eventDetails: BaseUIChangeEventDetails<BaseUIEventReasons['none']>) => void;
|
|
14
13
|
touched: boolean;
|
|
15
14
|
setTouched: React.Dispatch<React.SetStateAction<boolean>>;
|
|
16
15
|
validation?: UseFieldValidationReturnValue | undefined;
|
|
@@ -25,19 +25,19 @@ const ScrollAreaContent = exports.ScrollAreaContent = /*#__PURE__*/React.forward
|
|
|
25
25
|
style,
|
|
26
26
|
...elementProps
|
|
27
27
|
} = componentProps;
|
|
28
|
-
const contentWrapperRef = React.useRef(null);
|
|
29
28
|
const {
|
|
30
29
|
computeThumbPosition
|
|
31
30
|
} = (0, _ScrollAreaViewportContext.useScrollAreaViewportContext)();
|
|
32
31
|
const {
|
|
33
32
|
viewportState
|
|
34
33
|
} = (0, _ScrollAreaRootContext.useScrollAreaRootContext)();
|
|
34
|
+
const contentWrapperRef = React.useRef(null);
|
|
35
35
|
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
|
|
36
36
|
if (typeof ResizeObserver === 'undefined') {
|
|
37
37
|
return undefined;
|
|
38
38
|
}
|
|
39
39
|
let hasInitialized = false;
|
|
40
|
-
const
|
|
40
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
41
41
|
// ResizeObserver fires once upon observing, so we skip the initial call
|
|
42
42
|
// to avoid double-calculating the thumb position on mount.
|
|
43
43
|
if (!hasInitialized) {
|
|
@@ -47,10 +47,10 @@ const ScrollAreaContent = exports.ScrollAreaContent = /*#__PURE__*/React.forward
|
|
|
47
47
|
computeThumbPosition();
|
|
48
48
|
});
|
|
49
49
|
if (contentWrapperRef.current) {
|
|
50
|
-
|
|
50
|
+
resizeObserver.observe(contentWrapperRef.current);
|
|
51
51
|
}
|
|
52
52
|
return () => {
|
|
53
|
-
|
|
53
|
+
resizeObserver.disconnect();
|
|
54
54
|
};
|
|
55
55
|
}, [computeThumbPosition]);
|
|
56
56
|
const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
|
|
@@ -19,7 +19,7 @@ var _styles = require("../../utils/styles");
|
|
|
19
19
|
var _useBaseUiId = require("../../internals/useBaseUiId");
|
|
20
20
|
var _stateAttributes = require("./stateAttributes");
|
|
21
21
|
var _utils = require("../../floating-ui-react/utils");
|
|
22
|
-
var _CSPContext = require("../../csp-
|
|
22
|
+
var _CSPContext = require("../../internals/csp-context/CSPContext");
|
|
23
23
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
24
|
const DEFAULT_COORDS = {
|
|
25
25
|
x: 0,
|
|
@@ -67,7 +67,12 @@ const ScrollAreaScrollbar = exports.ScrollAreaScrollbar = /*#__PURE__*/React.for
|
|
|
67
67
|
};
|
|
68
68
|
const direction = (0, _DirectionContext.useDirection)();
|
|
69
69
|
const hideTrackUntilMeasured = !hasMeasuredScrollbar && !keepMounted;
|
|
70
|
+
const isHidden = orientation === 'vertical' ? hiddenState.y : hiddenState.x;
|
|
71
|
+
const shouldRender = keepMounted || !isHidden;
|
|
70
72
|
React.useEffect(() => {
|
|
73
|
+
if (!shouldRender) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
71
76
|
const viewportEl = viewportRef.current;
|
|
72
77
|
const scrollbarEl = orientation === 'vertical' ? scrollbarYRef.current : scrollbarXRef.current;
|
|
73
78
|
if (!scrollbarEl) {
|
|
@@ -78,30 +83,23 @@ const ScrollAreaScrollbar = exports.ScrollAreaScrollbar = /*#__PURE__*/React.for
|
|
|
78
83
|
return;
|
|
79
84
|
}
|
|
80
85
|
event.preventDefault();
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
+
const horizontal = orientation === 'horizontal';
|
|
87
|
+
const scrollProperty = horizontal ? 'scrollLeft' : 'scrollTop';
|
|
88
|
+
const delta = horizontal ? event.deltaX : event.deltaY;
|
|
89
|
+
const maxScroll = horizontal ? viewportEl.scrollWidth - viewportEl.clientWidth : viewportEl.scrollHeight - viewportEl.clientHeight;
|
|
90
|
+
// RTL horizontal scrolling uses a negative `scrollLeft` range, from 0 to `-maxScroll`.
|
|
91
|
+
const minScroll = horizontal && direction === 'rtl' ? -maxScroll : 0;
|
|
92
|
+
const maxScrollValue = horizontal && direction === 'rtl' ? 0 : maxScroll;
|
|
93
|
+
const scrollValue = viewportEl[scrollProperty];
|
|
94
|
+
if (scrollValue <= minScroll && delta < 0 || scrollValue >= maxScrollValue && delta > 0) {
|
|
86
95
|
return;
|
|
87
96
|
}
|
|
88
|
-
|
|
89
|
-
if (viewportEl.scrollTop === viewportEl.scrollHeight - viewportEl.clientHeight && event.deltaY > 0) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
} else if (viewportEl.scrollLeft === viewportEl.scrollWidth - viewportEl.clientWidth && event.deltaX > 0) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
if (orientation === 'vertical') {
|
|
96
|
-
viewportEl.scrollTop += event.deltaY;
|
|
97
|
-
} else {
|
|
98
|
-
viewportEl.scrollLeft += event.deltaX;
|
|
99
|
-
}
|
|
97
|
+
viewportEl[scrollProperty] = Math.min(maxScrollValue, Math.max(minScroll, scrollValue + delta));
|
|
100
98
|
}
|
|
101
99
|
return (0, _addEventListener.addEventListener)(scrollbarEl, 'wheel', handleWheel, {
|
|
102
100
|
passive: false
|
|
103
101
|
});
|
|
104
|
-
}, [orientation, scrollbarXRef, scrollbarYRef, viewportRef]);
|
|
102
|
+
}, [direction, orientation, scrollbarXRef, scrollbarYRef, shouldRender, viewportRef]);
|
|
105
103
|
const props = {
|
|
106
104
|
...(rootId && {
|
|
107
105
|
'data-id': `${rootId}-scrollbar`
|
|
@@ -192,8 +190,6 @@ const ScrollAreaScrollbar = exports.ScrollAreaScrollbar = /*#__PURE__*/React.for
|
|
|
192
190
|
const contextValue = React.useMemo(() => ({
|
|
193
191
|
orientation
|
|
194
192
|
}), [orientation]);
|
|
195
|
-
const isHidden = orientation === 'vertical' ? hiddenState.y : hiddenState.x;
|
|
196
|
-
const shouldRender = keepMounted || !isHidden;
|
|
197
193
|
if (!shouldRender) {
|
|
198
194
|
return null;
|
|
199
195
|
}
|
|
@@ -26,6 +26,7 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
26
26
|
// Module-level flag to ensure we only register the CSS properties once,
|
|
27
27
|
// regardless of how many Scroll Area components are mounted.
|
|
28
28
|
let scrollAreaOverflowVarsRegistered = false;
|
|
29
|
+
|
|
29
30
|
/**
|
|
30
31
|
* Removes inheritance of the scroll area overflow CSS variables, which
|
|
31
32
|
* improves rendering performance in complex scroll areas with deep subtrees.
|
|
@@ -259,7 +260,7 @@ const ScrollAreaViewport = exports.ScrollAreaViewport = /*#__PURE__*/React.forwa
|
|
|
259
260
|
return undefined;
|
|
260
261
|
}
|
|
261
262
|
let hasInitialized = false;
|
|
262
|
-
const
|
|
263
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
263
264
|
// Avoid duplicate mount-time recompute when observer data matches what the mount
|
|
264
265
|
// scheduling pass already measured. If dimensions changed before the first observer
|
|
265
266
|
// delivery, keep the recompute so overflow transitions stay in sync.
|
|
@@ -272,15 +273,10 @@ const ScrollAreaViewport = exports.ScrollAreaViewport = /*#__PURE__*/React.forwa
|
|
|
272
273
|
}
|
|
273
274
|
computeThumbPosition();
|
|
274
275
|
});
|
|
275
|
-
|
|
276
|
+
resizeObserver.observe(viewport);
|
|
276
277
|
|
|
277
|
-
//
|
|
278
|
-
//
|
|
279
|
-
// and the popup is using a transform for the animation, which affects the size of the viewport.
|
|
280
|
-
// Without this, the thumb position will be incorrect until scrolling (i.e. if the scrollbar shows
|
|
281
|
-
// on hover, the thumb has an incorrect size).
|
|
282
|
-
// We assume the user is using `onOpenChangeComplete` to hide the scrollbar
|
|
283
|
-
// until animations complete because otherwise the scrollbar would show the thumb resizing mid-animation.
|
|
278
|
+
// Wait for subtree animations to finish, then recompute thumb geometry that
|
|
279
|
+
// may have been affected by transform-based animations.
|
|
284
280
|
waitForAnimationsTimeout.start(0, () => {
|
|
285
281
|
const animations = viewport.getAnimations({
|
|
286
282
|
subtree: true
|
|
@@ -291,7 +287,7 @@ const ScrollAreaViewport = exports.ScrollAreaViewport = /*#__PURE__*/React.forwa
|
|
|
291
287
|
Promise.allSettled(animations.map(animation => animation.finished)).then(computeThumbPosition).catch(() => {});
|
|
292
288
|
});
|
|
293
289
|
return () => {
|
|
294
|
-
|
|
290
|
+
resizeObserver.disconnect();
|
|
295
291
|
waitForAnimationsTimeout.clear();
|
|
296
292
|
};
|
|
297
293
|
}, [computeThumbPosition, viewportRef, waitForAnimationsTimeout]);
|
|
@@ -27,8 +27,8 @@ const stateAttributesMapping = {
|
|
|
27
27
|
*/
|
|
28
28
|
const SelectArrow = exports.SelectArrow = /*#__PURE__*/React.forwardRef(function SelectArrow(componentProps, forwardedRef) {
|
|
29
29
|
const {
|
|
30
|
-
className,
|
|
31
30
|
render,
|
|
31
|
+
className,
|
|
32
32
|
style,
|
|
33
33
|
...elementProps
|
|
34
34
|
} = componentProps;
|
|
@@ -26,8 +26,8 @@ const stateAttributesMapping = {
|
|
|
26
26
|
*/
|
|
27
27
|
const SelectBackdrop = exports.SelectBackdrop = /*#__PURE__*/React.forwardRef(function SelectBackdrop(componentProps, forwardedRef) {
|
|
28
28
|
const {
|
|
29
|
-
className,
|
|
30
29
|
render,
|
|
30
|
+
className,
|
|
31
31
|
style,
|
|
32
32
|
...elementProps
|
|
33
33
|
} = componentProps;
|
|
@@ -18,8 +18,8 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
18
18
|
*/
|
|
19
19
|
const SelectGroup = exports.SelectGroup = /*#__PURE__*/React.forwardRef(function SelectGroup(componentProps, forwardedRef) {
|
|
20
20
|
const {
|
|
21
|
-
className,
|
|
22
21
|
render,
|
|
22
|
+
className,
|
|
23
23
|
style,
|
|
24
24
|
...elementProps
|
|
25
25
|
} = componentProps;
|
|
@@ -19,10 +19,10 @@ var _useRenderElement = require("../../internals/useRenderElement");
|
|
|
19
19
|
*/
|
|
20
20
|
const SelectGroupLabel = exports.SelectGroupLabel = /*#__PURE__*/React.forwardRef(function SelectGroupLabel(componentProps, forwardedRef) {
|
|
21
21
|
const {
|
|
22
|
-
className,
|
|
23
22
|
render,
|
|
24
|
-
|
|
23
|
+
className,
|
|
25
24
|
style,
|
|
25
|
+
id: idProp,
|
|
26
26
|
...elementProps
|
|
27
27
|
} = componentProps;
|
|
28
28
|
const {
|
|
@@ -20,8 +20,8 @@ var _store2 = require("../store");
|
|
|
20
20
|
*/
|
|
21
21
|
const SelectIcon = exports.SelectIcon = /*#__PURE__*/React.forwardRef(function SelectIcon(componentProps, forwardedRef) {
|
|
22
22
|
const {
|
|
23
|
-
className,
|
|
24
23
|
render,
|
|
24
|
+
className,
|
|
25
25
|
style,
|
|
26
26
|
...elementProps
|
|
27
27
|
} = componentProps;
|