@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
|
@@ -30,10 +30,12 @@ var _useLabelableId = require("../../internals/labelable-provider/useLabelableId
|
|
|
30
30
|
var _resolveAriaLabelledBy = require("../../utils/resolveAriaLabelledBy");
|
|
31
31
|
const BOUNDARY_OFFSET = 2;
|
|
32
32
|
const SELECTED_DELAY = 400;
|
|
33
|
-
const UNSELECTED_DELAY = 200;
|
|
34
33
|
const stateAttributesMapping = {
|
|
35
34
|
..._popupStateMapping.pressableTriggerOpenStateMapping,
|
|
36
35
|
..._constants.fieldValidityMapping,
|
|
36
|
+
popupSide: side => side ? {
|
|
37
|
+
'data-popup-side': side
|
|
38
|
+
} : null,
|
|
37
39
|
value: () => null
|
|
38
40
|
};
|
|
39
41
|
|
|
@@ -76,15 +78,16 @@ const SelectTrigger = exports.SelectTrigger = /*#__PURE__*/React.forwardRef(func
|
|
|
76
78
|
} = (0, _SelectRootContext.useSelectRootContext)();
|
|
77
79
|
const disabled = fieldDisabled || selectDisabled || disabledProp;
|
|
78
80
|
const open = (0, _store.useStore)(store, _store2.selectors.open);
|
|
81
|
+
const mounted = (0, _store.useStore)(store, _store2.selectors.mounted);
|
|
79
82
|
const value = (0, _store.useStore)(store, _store2.selectors.value);
|
|
80
83
|
const triggerProps = (0, _store.useStore)(store, _store2.selectors.triggerProps);
|
|
81
84
|
const positionerElement = (0, _store.useStore)(store, _store2.selectors.positionerElement);
|
|
82
85
|
const listElement = (0, _store.useStore)(store, _store2.selectors.listElement);
|
|
86
|
+
const popupSideValue = (0, _store.useStore)(store, _store2.selectors.popupSide);
|
|
83
87
|
const rootId = (0, _store.useStore)(store, _store2.selectors.id);
|
|
84
88
|
const selectLabelId = (0, _store.useStore)(store, _store2.selectors.labelId);
|
|
85
89
|
const hasSelectedValue = (0, _store.useStore)(store, _store2.selectors.hasSelectedValue);
|
|
86
|
-
const
|
|
87
|
-
const hasNullItemLabel = (0, _store.useStore)(store, _store2.selectors.hasNullItemLabel, shouldCheckNullItemLabel);
|
|
90
|
+
const popupSide = mounted && positionerElement ? popupSideValue : null;
|
|
88
91
|
const id = idProp ?? rootId;
|
|
89
92
|
const ariaLabelledBy = (0, _resolveAriaLabelledBy.resolveAriaLabelledBy)(fieldLabelId, selectLabelId);
|
|
90
93
|
(0, _useLabelableId.useLabelableId)({
|
|
@@ -106,52 +109,34 @@ const SelectTrigger = exports.SelectTrigger = /*#__PURE__*/React.forwardRef(func
|
|
|
106
109
|
const timeoutFocus = (0, _useTimeout.useTimeout)();
|
|
107
110
|
const timeoutMouseDown = (0, _useTimeout.useTimeout)();
|
|
108
111
|
const selectedDelayTimeout = (0, _useTimeout.useTimeout)();
|
|
109
|
-
const unselectedDelayTimeout = (0, _useTimeout.useTimeout)();
|
|
110
112
|
React.useEffect(() => {
|
|
111
113
|
if (open) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
selectionRef.current.allowUnselectedMouseUp = true;
|
|
121
|
-
selectionRef.current.allowSelectedMouseUp = true;
|
|
122
|
-
});
|
|
123
|
-
} else {
|
|
124
|
-
// mousedown -> move to unselected item -> mouseup should not select within 200ms.
|
|
125
|
-
unselectedDelayTimeout.start(UNSELECTED_DELAY, () => {
|
|
126
|
-
selectionRef.current.allowUnselectedMouseUp = true;
|
|
127
|
-
|
|
128
|
-
// mousedown -> mouseup on selected item should not select within 400ms.
|
|
129
|
-
selectedDelayTimeout.start(UNSELECTED_DELAY, () => {
|
|
130
|
-
selectionRef.current.allowSelectedMouseUp = true;
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
}
|
|
114
|
+
// A mousedown on the trigger can open the popup under the cursor. Keep mouseup selection
|
|
115
|
+
// disabled briefly so releasing over either the selected item or a neighboring item doesn't
|
|
116
|
+
// commit an accidental selection. SelectItem can still opt into unselected mouseup sooner
|
|
117
|
+
// after a real drag over the item.
|
|
118
|
+
selectedDelayTimeout.start(SELECTED_DELAY, () => {
|
|
119
|
+
selectionRef.current.allowUnselectedMouseUp = true;
|
|
120
|
+
selectionRef.current.allowSelectedMouseUp = true;
|
|
121
|
+
});
|
|
134
122
|
return () => {
|
|
135
123
|
selectedDelayTimeout.clear();
|
|
136
|
-
unselectedDelayTimeout.clear();
|
|
137
124
|
};
|
|
138
125
|
}
|
|
139
126
|
selectionRef.current = {
|
|
140
127
|
allowSelectedMouseUp: false,
|
|
141
|
-
allowUnselectedMouseUp: false
|
|
128
|
+
allowUnselectedMouseUp: false,
|
|
129
|
+
dragY: 0
|
|
142
130
|
};
|
|
143
131
|
timeoutMouseDown.clear();
|
|
144
132
|
return undefined;
|
|
145
|
-
}, [open,
|
|
146
|
-
const ariaControlsId = React.useMemo(() => {
|
|
147
|
-
return listElement?.id ?? (0, _utils.getFloatingFocusElement)(positionerElement)?.id;
|
|
148
|
-
}, [listElement, positionerElement]);
|
|
133
|
+
}, [open, selectionRef, timeoutMouseDown, selectedDelayTimeout]);
|
|
149
134
|
const props = (0, _mergeProps.mergeProps)(triggerProps, {
|
|
150
135
|
id,
|
|
151
136
|
role: 'combobox',
|
|
152
137
|
'aria-expanded': open ? 'true' : 'false',
|
|
153
138
|
'aria-haspopup': 'listbox',
|
|
154
|
-
'aria-controls': open ?
|
|
139
|
+
'aria-controls': open ? listElement?.id ?? (0, _utils.getFloatingFocusElement)(positionerElement)?.id : undefined,
|
|
155
140
|
'aria-labelledby': ariaLabelledBy,
|
|
156
141
|
'aria-readonly': readOnly || undefined,
|
|
157
142
|
'aria-required': required || undefined,
|
|
@@ -231,6 +216,7 @@ const SelectTrigger = exports.SelectTrigger = /*#__PURE__*/React.forwardRef(func
|
|
|
231
216
|
disabled,
|
|
232
217
|
value,
|
|
233
218
|
readOnly,
|
|
219
|
+
popupSide,
|
|
234
220
|
placeholder: !hasSelectedValue
|
|
235
221
|
};
|
|
236
222
|
return (0, _useRenderElement.useRenderElement)('button', componentProps, {
|
|
@@ -15,6 +15,11 @@ export declare enum SelectTriggerDataAttributes {
|
|
|
15
15
|
* Present when the select is readonly.
|
|
16
16
|
*/
|
|
17
17
|
readonly = "data-readonly",
|
|
18
|
+
/**
|
|
19
|
+
* Indicates which side the corresponding popup is positioned relative to its anchor.
|
|
20
|
+
* @type {'top' | 'bottom' | 'left' | 'right' | 'inline-end' | 'inline-start' | null}
|
|
21
|
+
*/
|
|
22
|
+
popupSide = "data-popup-side",
|
|
18
23
|
/**
|
|
19
24
|
* Present when the select is required.
|
|
20
25
|
*/
|
|
@@ -22,6 +22,11 @@ let SelectTriggerDataAttributes = exports.SelectTriggerDataAttributes = function
|
|
|
22
22
|
* Present when the select is readonly.
|
|
23
23
|
*/
|
|
24
24
|
SelectTriggerDataAttributes["readonly"] = "data-readonly";
|
|
25
|
+
/**
|
|
26
|
+
* Indicates which side the corresponding popup is positioned relative to its anchor.
|
|
27
|
+
* @type {'top' | 'bottom' | 'left' | 'right' | 'inline-end' | 'inline-start' | null}
|
|
28
|
+
*/
|
|
29
|
+
SelectTriggerDataAttributes["popupSide"] = "data-popup-side";
|
|
25
30
|
/**
|
|
26
31
|
* Present when the select is required.
|
|
27
32
|
*/
|
|
@@ -113,9 +113,7 @@ const SliderControl = exports.SliderControl = /*#__PURE__*/React.forwardRef(func
|
|
|
113
113
|
const stylesRef = React.useRef(null);
|
|
114
114
|
const setStylesRef = (0, _useStableCallback.useStableCallback)(element => {
|
|
115
115
|
if (element && stylesRef.current == null) {
|
|
116
|
-
|
|
117
|
-
stylesRef.current = getComputedStyle(element);
|
|
118
|
-
}
|
|
116
|
+
stylesRef.current = (0, _owner.ownerWindow)(element).getComputedStyle(element);
|
|
119
117
|
}
|
|
120
118
|
});
|
|
121
119
|
|
|
@@ -127,7 +125,7 @@ const SliderControl = exports.SliderControl = /*#__PURE__*/React.forwardRef(func
|
|
|
127
125
|
// This value should be equal to the radius or half the width/height of the thumb.
|
|
128
126
|
const insetThumbOffsetRef = React.useRef(0);
|
|
129
127
|
const latestValuesRef = (0, _useValueAsRef.useValueAsRef)(values);
|
|
130
|
-
|
|
128
|
+
function updatePressedThumb(nextIndex) {
|
|
131
129
|
if (pressedThumbIndexRef.current !== nextIndex) {
|
|
132
130
|
pressedThumbIndexRef.current = nextIndex;
|
|
133
131
|
}
|
|
@@ -138,8 +136,8 @@ const SliderControl = exports.SliderControl = /*#__PURE__*/React.forwardRef(func
|
|
|
138
136
|
return;
|
|
139
137
|
}
|
|
140
138
|
pressedInputRef.current = thumbElement.querySelector('input[type="range"]');
|
|
141
|
-
}
|
|
142
|
-
|
|
139
|
+
}
|
|
140
|
+
function getFingerState(fingerCoords) {
|
|
143
141
|
const control = controlRef.current;
|
|
144
142
|
if (!control) {
|
|
145
143
|
return null;
|
|
@@ -192,8 +190,8 @@ const SliderControl = exports.SliderControl = /*#__PURE__*/React.forwardRef(func
|
|
|
192
190
|
pressedThumbIndexRef.current = collisionResult.thumbIndex;
|
|
193
191
|
}
|
|
194
192
|
return collisionResult;
|
|
195
|
-
}
|
|
196
|
-
|
|
193
|
+
}
|
|
194
|
+
function startPressing(fingerCoords) {
|
|
197
195
|
pressedValuesRef.current = range ? values.slice() : null;
|
|
198
196
|
latestValuesRef.current = values;
|
|
199
197
|
const pressedThumbIndex = pressedThumbIndexRef.current;
|
|
@@ -234,8 +232,8 @@ const SliderControl = exports.SliderControl = /*#__PURE__*/React.forwardRef(func
|
|
|
234
232
|
insetThumbOffsetRef.current = thumbRect[side] / 2;
|
|
235
233
|
}
|
|
236
234
|
}
|
|
237
|
-
}
|
|
238
|
-
|
|
235
|
+
}
|
|
236
|
+
function focusThumb(thumbIndex) {
|
|
239
237
|
const input = thumbRefs.current?.[thumbIndex]?.querySelector('input[type="range"]');
|
|
240
238
|
if (!input) {
|
|
241
239
|
return;
|
|
@@ -246,7 +244,7 @@ const SliderControl = exports.SliderControl = /*#__PURE__*/React.forwardRef(func
|
|
|
246
244
|
// Supported in Chrome from 144+.
|
|
247
245
|
focusVisible: false
|
|
248
246
|
});
|
|
249
|
-
}
|
|
247
|
+
}
|
|
250
248
|
const handleTouchMove = (0, _useStableCallback.useStableCallback)(nativeEvent => {
|
|
251
249
|
const fingerCoords = getFingerCoords(nativeEvent, touchIdRef);
|
|
252
250
|
if (fingerCoords == null) {
|
|
@@ -141,10 +141,7 @@ const SliderRoot = exports.SliderRoot = /*#__PURE__*/React.forwardRef(function S
|
|
|
141
141
|
setLastUsedThumbIndex(value);
|
|
142
142
|
}
|
|
143
143
|
});
|
|
144
|
-
(0, _useRegisterFieldControl.useRegisterFieldControl)(controlRef,
|
|
145
|
-
id,
|
|
146
|
-
value: valueUnwrapped
|
|
147
|
-
});
|
|
144
|
+
(0, _useRegisterFieldControl.useRegisterFieldControl)(controlRef, id, valueUnwrapped);
|
|
148
145
|
(0, _useValueChanged.useValueChanged)(valueUnwrapped, () => {
|
|
149
146
|
clearErrors(name);
|
|
150
147
|
if (shouldValidateOnChange()) {
|
|
@@ -11,6 +11,7 @@ var _useStableCallback = require("@base-ui/utils/useStableCallback");
|
|
|
11
11
|
var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
|
|
12
12
|
var _useMergedRefs = require("@base-ui/utils/useMergedRefs");
|
|
13
13
|
var _visuallyHidden = require("@base-ui/utils/visuallyHidden");
|
|
14
|
+
var _owner = require("@base-ui/utils/owner");
|
|
14
15
|
var _clamp = require("../../internals/clamp");
|
|
15
16
|
var _formatNumber = require("../../utils/formatNumber");
|
|
16
17
|
var _mergeProps = require("../../merge-props");
|
|
@@ -21,7 +22,7 @@ var _valueToPercent = require("../../utils/valueToPercent");
|
|
|
21
22
|
var _composite = require("../../internals/composite/composite");
|
|
22
23
|
var _useCompositeListItem = require("../../internals/composite/list/useCompositeListItem");
|
|
23
24
|
var _DirectionContext = require("../../internals/direction-context/DirectionContext");
|
|
24
|
-
var _CSPContext = require("../../csp-
|
|
25
|
+
var _CSPContext = require("../../internals/csp-context/CSPContext");
|
|
25
26
|
var _FieldRootContext = require("../../internals/field-root-context/FieldRootContext");
|
|
26
27
|
var _element = require("../../floating-ui-react/utils/element");
|
|
27
28
|
var _useLabelableId = require("../../internals/labelable-provider/useLabelableId");
|
|
@@ -33,7 +34,7 @@ var _stateAttributesMapping = require("../root/stateAttributesMapping");
|
|
|
33
34
|
var _SliderThumbDataAttributes = require("./SliderThumbDataAttributes");
|
|
34
35
|
var _prehydrationScript = require("./prehydrationScript.min");
|
|
35
36
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
36
|
-
const ALL_KEYS = new Set([_composite.
|
|
37
|
+
const ALL_KEYS = new Set([..._composite.COMPOSITE_KEYS, _composite.PAGE_UP, _composite.PAGE_DOWN]);
|
|
37
38
|
function getDefaultAriaValueText(values, index, format, locale) {
|
|
38
39
|
if (index < 0) {
|
|
39
40
|
return undefined;
|
|
@@ -176,7 +177,7 @@ const SliderThumb = exports.SliderThumb = /*#__PURE__*/React.forwardRef(function
|
|
|
176
177
|
}
|
|
177
178
|
}, [getInsetPosition, inset, thumbValuePercent]);
|
|
178
179
|
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
|
|
179
|
-
if (!inset
|
|
180
|
+
if (!inset) {
|
|
180
181
|
return undefined;
|
|
181
182
|
}
|
|
182
183
|
const control = controlRef.current;
|
|
@@ -184,39 +185,32 @@ const SliderThumb = exports.SliderThumb = /*#__PURE__*/React.forwardRef(function
|
|
|
184
185
|
if (!control || !thumb) {
|
|
185
186
|
return undefined;
|
|
186
187
|
}
|
|
187
|
-
const
|
|
188
|
+
const ResizeObserverCtor = (0, _owner.ownerWindow)(control).ResizeObserver;
|
|
189
|
+
if (typeof ResizeObserverCtor !== 'function') {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
const resizeObserver = new ResizeObserverCtor(getInsetPosition);
|
|
188
193
|
resizeObserver.observe(control);
|
|
189
194
|
resizeObserver.observe(thumb);
|
|
190
195
|
return () => {
|
|
191
196
|
resizeObserver.disconnect();
|
|
192
197
|
};
|
|
193
198
|
}, [controlRef, getInsetPosition, inset]);
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
if (
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
} else if (safeLastUsedThumbIndex === index) {
|
|
202
|
-
zIndex = 1;
|
|
203
|
-
}
|
|
204
|
-
} else if (activeIndex === index) {
|
|
199
|
+
const startEdge = vertical ? 'bottom' : 'insetInlineStart';
|
|
200
|
+
const crossOffsetProperty = vertical ? 'left' : 'top';
|
|
201
|
+
let zIndex;
|
|
202
|
+
if (range) {
|
|
203
|
+
if (activeIndex === index) {
|
|
204
|
+
zIndex = 2;
|
|
205
|
+
} else if (safeLastUsedThumbIndex === index) {
|
|
205
206
|
zIndex = 1;
|
|
206
207
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
[startEdge]: `${thumbValuePercent}%`,
|
|
214
|
-
[crossOffsetProperty]: '50%',
|
|
215
|
-
translate: `${(vertical || !rtl ? -1 : 1) * 50}% ${(vertical ? 1 : -1) * 50}%`,
|
|
216
|
-
zIndex
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
return {
|
|
208
|
+
} else if (activeIndex === index) {
|
|
209
|
+
zIndex = 1;
|
|
210
|
+
}
|
|
211
|
+
let thumbStyle;
|
|
212
|
+
if (inset) {
|
|
213
|
+
thumbStyle = {
|
|
220
214
|
['--position']: `${positionPercent ?? 0}%`,
|
|
221
215
|
visibility: renderBeforeHydration && isHydrating || positionPercent === undefined ? 'hidden' : undefined,
|
|
222
216
|
position: 'absolute',
|
|
@@ -225,7 +219,15 @@ const SliderThumb = exports.SliderThumb = /*#__PURE__*/React.forwardRef(function
|
|
|
225
219
|
translate: `${(vertical || !rtl ? -1 : 1) * 50}% ${(vertical ? 1 : -1) * 50}%`,
|
|
226
220
|
zIndex
|
|
227
221
|
};
|
|
228
|
-
}
|
|
222
|
+
} else {
|
|
223
|
+
thumbStyle = !Number.isFinite(thumbValuePercent) ? _visuallyHidden.visuallyHidden : {
|
|
224
|
+
position: 'absolute',
|
|
225
|
+
[startEdge]: `${thumbValuePercent}%`,
|
|
226
|
+
[crossOffsetProperty]: '50%',
|
|
227
|
+
translate: `${(vertical || !rtl ? -1 : 1) * 50}% ${(vertical ? 1 : -1) * 50}%`,
|
|
228
|
+
zIndex
|
|
229
|
+
};
|
|
230
|
+
}
|
|
229
231
|
let cssWritingMode;
|
|
230
232
|
if (orientation === 'vertical') {
|
|
231
233
|
cssWritingMode = rtl ? 'vertical-rl' : 'vertical-lr';
|
|
@@ -381,7 +383,7 @@ const SliderThumb = exports.SliderThumb = /*#__PURE__*/React.forwardRef(function
|
|
|
381
383
|
pressedInputRef.current = inputRef.current;
|
|
382
384
|
}
|
|
383
385
|
},
|
|
384
|
-
style:
|
|
386
|
+
style: thumbStyle,
|
|
385
387
|
suppressHydrationWarning: renderBeforeHydration || undefined
|
|
386
388
|
}, elementProps],
|
|
387
389
|
stateAttributesMapping: _stateAttributesMapping.sliderStateAttributesMapping
|
|
@@ -33,15 +33,13 @@ const SliderValue = exports.SliderValue = /*#__PURE__*/React.forwardRef(function
|
|
|
33
33
|
formatOptionsRef,
|
|
34
34
|
locale
|
|
35
35
|
} = (0, _SliderRootContext.useSliderRootContext)();
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
htmlFor += `${thumbMetadata.inputId} `;
|
|
41
|
-
}
|
|
36
|
+
let htmlFor = '';
|
|
37
|
+
for (const thumbMetadata of thumbMap.values()) {
|
|
38
|
+
if (thumbMetadata?.inputId) {
|
|
39
|
+
htmlFor += `${thumbMetadata.inputId} `;
|
|
42
40
|
}
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
}
|
|
42
|
+
const outputFor = htmlFor.trim() === '' ? undefined : htmlFor.trim();
|
|
45
43
|
const formattedValues = React.useMemo(() => {
|
|
46
44
|
const arr = [];
|
|
47
45
|
for (let i = 0; i < values.length; i += 1) {
|
|
@@ -49,13 +47,7 @@ const SliderValue = exports.SliderValue = /*#__PURE__*/React.forwardRef(function
|
|
|
49
47
|
}
|
|
50
48
|
return arr;
|
|
51
49
|
}, [formatOptionsRef, locale, values]);
|
|
52
|
-
const defaultDisplayValue =
|
|
53
|
-
const arr = [];
|
|
54
|
-
for (let i = 0; i < values.length; i += 1) {
|
|
55
|
-
arr.push(formattedValues[i] || values[i]);
|
|
56
|
-
}
|
|
57
|
-
return arr.join(' – ');
|
|
58
|
-
}, [values, formattedValues]);
|
|
50
|
+
const defaultDisplayValue = values.map((v, i) => formattedValues[i] || v).join(' – ');
|
|
59
51
|
const element = (0, _useRenderElement.useRenderElement)('output', componentProps, {
|
|
60
52
|
state,
|
|
61
53
|
ref: forwardedRef,
|
|
@@ -8,11 +8,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.SwitchRoot = void 0;
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _useControlled = require("@base-ui/utils/useControlled");
|
|
11
|
-
var _useStableCallback = require("@base-ui/utils/useStableCallback");
|
|
12
11
|
var _useMergedRefs = require("@base-ui/utils/useMergedRefs");
|
|
13
12
|
var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
|
|
14
13
|
var _visuallyHidden = require("@base-ui/utils/visuallyHidden");
|
|
15
14
|
var _empty = require("@base-ui/utils/empty");
|
|
15
|
+
var _owner = require("@base-ui/utils/owner");
|
|
16
16
|
var _useRenderElement = require("../../internals/useRenderElement");
|
|
17
17
|
var _mergeProps = require("../../merge-props");
|
|
18
18
|
var _useBaseUiId = require("../../internals/useBaseUiId");
|
|
@@ -46,7 +46,7 @@ const SwitchRoot = exports.SwitchRoot = /*#__PURE__*/React.forwardRef(function S
|
|
|
46
46
|
inputRef: externalInputRef,
|
|
47
47
|
name: nameProp,
|
|
48
48
|
nativeButton = false,
|
|
49
|
-
onCheckedChange
|
|
49
|
+
onCheckedChange,
|
|
50
50
|
readOnly = false,
|
|
51
51
|
required = false,
|
|
52
52
|
disabled: disabledProp = false,
|
|
@@ -77,7 +77,6 @@ const SwitchRoot = exports.SwitchRoot = /*#__PURE__*/React.forwardRef(function S
|
|
|
77
77
|
} = (0, _LabelableContext.useLabelableContext)();
|
|
78
78
|
const disabled = fieldDisabled || disabledProp;
|
|
79
79
|
const name = fieldName ?? nameProp;
|
|
80
|
-
const onCheckedChange = (0, _useStableCallback.useStableCallback)(onCheckedChangeProp);
|
|
81
80
|
const inputRef = React.useRef(null);
|
|
82
81
|
const handleInputRef = (0, _useMergedRefs.useMergedRefs)(inputRef, externalInputRef, validation.inputRef);
|
|
83
82
|
const switchRef = React.useRef(null);
|
|
@@ -94,10 +93,7 @@ const SwitchRoot = exports.SwitchRoot = /*#__PURE__*/React.forwardRef(function S
|
|
|
94
93
|
name: 'Switch',
|
|
95
94
|
state: 'checked'
|
|
96
95
|
});
|
|
97
|
-
(0, _useRegisterFieldControl.useRegisterFieldControl)(switchRef,
|
|
98
|
-
id,
|
|
99
|
-
value: checked
|
|
100
|
-
});
|
|
96
|
+
(0, _useRegisterFieldControl.useRegisterFieldControl)(switchRef, id, checked);
|
|
101
97
|
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
|
|
102
98
|
if (inputRef.current) {
|
|
103
99
|
setFilled(inputRef.current.checked);
|
|
@@ -149,7 +145,11 @@ const SwitchRoot = exports.SwitchRoot = /*#__PURE__*/React.forwardRef(function S
|
|
|
149
145
|
return;
|
|
150
146
|
}
|
|
151
147
|
event.preventDefault();
|
|
152
|
-
inputRef.current
|
|
148
|
+
const input = inputRef.current;
|
|
149
|
+
if (!input) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
input.dispatchEvent(new ((0, _owner.ownerWindow)(input).PointerEvent)('click', {
|
|
153
153
|
bubbles: true,
|
|
154
154
|
shiftKey: event.shiftKey,
|
|
155
155
|
ctrlKey: event.ctrlKey,
|
|
@@ -158,7 +158,7 @@ const SwitchRoot = exports.SwitchRoot = /*#__PURE__*/React.forwardRef(function S
|
|
|
158
158
|
}));
|
|
159
159
|
}
|
|
160
160
|
};
|
|
161
|
-
const inputProps =
|
|
161
|
+
const inputProps = (0, _mergeProps.mergeProps)({
|
|
162
162
|
checked,
|
|
163
163
|
disabled,
|
|
164
164
|
form,
|
|
@@ -195,7 +195,7 @@ const SwitchRoot = exports.SwitchRoot = /*#__PURE__*/React.forwardRef(function S
|
|
|
195
195
|
// To avoid this, we only set the value if it's defined
|
|
196
196
|
value !== undefined ? {
|
|
197
197
|
value
|
|
198
|
-
} : _empty.EMPTY_OBJECT)
|
|
198
|
+
} : _empty.EMPTY_OBJECT);
|
|
199
199
|
const state = React.useMemo(() => ({
|
|
200
200
|
...fieldState,
|
|
201
201
|
checked,
|
|
@@ -9,7 +9,6 @@ exports.SwitchThumb = void 0;
|
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _SwitchRootContext = require("../root/SwitchRootContext");
|
|
11
11
|
var _useRenderElement = require("../../internals/useRenderElement");
|
|
12
|
-
var _FieldRootContext = require("../../internals/field-root-context/FieldRootContext");
|
|
13
12
|
var _stateAttributesMapping = require("../stateAttributesMapping");
|
|
14
13
|
/**
|
|
15
14
|
* The movable part of the switch that indicates whether the switch is on or off.
|
|
@@ -24,16 +23,9 @@ const SwitchThumb = exports.SwitchThumb = /*#__PURE__*/React.forwardRef(function
|
|
|
24
23
|
style,
|
|
25
24
|
...elementProps
|
|
26
25
|
} = componentProps;
|
|
27
|
-
const {
|
|
28
|
-
state: fieldState
|
|
29
|
-
} = (0, _FieldRootContext.useFieldRootContext)();
|
|
30
26
|
const state = (0, _SwitchRootContext.useSwitchRootContext)();
|
|
31
|
-
const extendedState = {
|
|
32
|
-
...fieldState,
|
|
33
|
-
...state
|
|
34
|
-
};
|
|
35
27
|
return (0, _useRenderElement.useRenderElement)('span', componentProps, {
|
|
36
|
-
state
|
|
28
|
+
state,
|
|
37
29
|
ref: forwardedRef,
|
|
38
30
|
stateAttributesMapping: _stateAttributesMapping.stateAttributesMapping,
|
|
39
31
|
props: elementProps
|
|
@@ -16,7 +16,7 @@ var _stateAttributesMapping = require("../root/stateAttributesMapping");
|
|
|
16
16
|
var _TabsListContext = require("../list/TabsListContext");
|
|
17
17
|
var _prehydrationScript = require("./prehydrationScript.min");
|
|
18
18
|
var _TabsIndicatorCssVars = require("./TabsIndicatorCssVars");
|
|
19
|
-
var _CSPContext = require("../../csp-
|
|
19
|
+
var _CSPContext = require("../../internals/csp-context/CSPContext");
|
|
20
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
21
|
const stateAttributesMapping = {
|
|
22
22
|
..._stateAttributesMapping.tabsStateAttributesMapping,
|
|
@@ -30,7 +30,7 @@ const stateAttributesMapping = {
|
|
|
30
30
|
*
|
|
31
31
|
* Documentation: [Base UI Tabs](https://base-ui.com/react/components/tabs)
|
|
32
32
|
*/
|
|
33
|
-
const TabsIndicator = exports.TabsIndicator = /*#__PURE__*/React.forwardRef(function
|
|
33
|
+
const TabsIndicator = exports.TabsIndicator = /*#__PURE__*/React.forwardRef(function TabsIndicator(componentProps, forwardedRef) {
|
|
34
34
|
const {
|
|
35
35
|
className,
|
|
36
36
|
render,
|
|
@@ -95,29 +95,24 @@ const TabsIndicator = exports.TabsIndicator = /*#__PURE__*/React.forwardRef(func
|
|
|
95
95
|
bottom = tabsListElement.scrollHeight - top - height;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
-
const activeTabPosition =
|
|
98
|
+
const activeTabPosition = isTabSelected ? {
|
|
99
99
|
left,
|
|
100
100
|
right,
|
|
101
101
|
top,
|
|
102
102
|
bottom
|
|
103
|
-
} : null
|
|
104
|
-
const activeTabSize =
|
|
103
|
+
} : null;
|
|
104
|
+
const activeTabSize = isTabSelected ? {
|
|
105
105
|
width,
|
|
106
106
|
height
|
|
107
|
-
} : null
|
|
108
|
-
const style =
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
[_TabsIndicatorCssVars.TabsIndicatorCssVars.activeTabBottom]: `${bottom}px`,
|
|
117
|
-
[_TabsIndicatorCssVars.TabsIndicatorCssVars.activeTabWidth]: `${width}px`,
|
|
118
|
-
[_TabsIndicatorCssVars.TabsIndicatorCssVars.activeTabHeight]: `${height}px`
|
|
119
|
-
};
|
|
120
|
-
}, [left, right, top, bottom, width, height, isTabSelected]);
|
|
107
|
+
} : null;
|
|
108
|
+
const style = isTabSelected ? {
|
|
109
|
+
[_TabsIndicatorCssVars.TabsIndicatorCssVars.activeTabLeft]: `${left}px`,
|
|
110
|
+
[_TabsIndicatorCssVars.TabsIndicatorCssVars.activeTabRight]: `${right}px`,
|
|
111
|
+
[_TabsIndicatorCssVars.TabsIndicatorCssVars.activeTabTop]: `${top}px`,
|
|
112
|
+
[_TabsIndicatorCssVars.TabsIndicatorCssVars.activeTabBottom]: `${bottom}px`,
|
|
113
|
+
[_TabsIndicatorCssVars.TabsIndicatorCssVars.activeTabWidth]: `${width}px`,
|
|
114
|
+
[_TabsIndicatorCssVars.TabsIndicatorCssVars.activeTabHeight]: `${height}px`
|
|
115
|
+
} : undefined;
|
|
121
116
|
const displayIndicator = isTabSelected && width > 0 && height > 0;
|
|
122
117
|
const state = {
|
|
123
118
|
orientation,
|
package/tabs/list/TabsList.js
CHANGED
|
@@ -41,20 +41,14 @@ const TabsList = exports.TabsList = /*#__PURE__*/React.forwardRef(function TabsL
|
|
|
41
41
|
const indicatorUpdateListenersRef = React.useRef(new Set());
|
|
42
42
|
const tabResizeObserverElementsRef = React.useRef(new Set());
|
|
43
43
|
const resizeObserverRef = React.useRef(null);
|
|
44
|
-
const notifyIndicatorUpdateListeners = (0, _useStableCallback.useStableCallback)(() => {
|
|
45
|
-
indicatorUpdateListenersRef.current.forEach(listener => {
|
|
46
|
-
listener();
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
44
|
React.useEffect(() => {
|
|
50
45
|
if (typeof ResizeObserver === 'undefined') {
|
|
51
46
|
return undefined;
|
|
52
47
|
}
|
|
53
48
|
const resizeObserver = new ResizeObserver(() => {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
notifyIndicatorUpdateListeners();
|
|
49
|
+
indicatorUpdateListenersRef.current.forEach(listener => {
|
|
50
|
+
listener();
|
|
51
|
+
});
|
|
58
52
|
});
|
|
59
53
|
resizeObserverRef.current = resizeObserver;
|
|
60
54
|
if (tabsListElement) {
|
|
@@ -67,7 +61,7 @@ const TabsList = exports.TabsList = /*#__PURE__*/React.forwardRef(function TabsL
|
|
|
67
61
|
resizeObserver.disconnect();
|
|
68
62
|
resizeObserverRef.current = null;
|
|
69
63
|
};
|
|
70
|
-
}, [tabsListElement
|
|
64
|
+
}, [tabsListElement]);
|
|
71
65
|
const registerIndicatorUpdateListener = (0, _useStableCallback.useStableCallback)(listener => {
|
|
72
66
|
indicatorUpdateListenersRef.current.add(listener);
|
|
73
67
|
return () => {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { TabsRoot } from "../root/TabsRoot.js";
|
|
3
|
+
import type { TabsTab } from "../tab/TabsTab.js";
|
|
3
4
|
export interface TabsListContext {
|
|
4
5
|
activateOnFocus: boolean;
|
|
5
6
|
highlightedTabIndex: number;
|
|
6
7
|
registerIndicatorUpdateListener: (listener: () => void) => () => void;
|
|
7
8
|
registerTabResizeObserverElement: (element: HTMLElement) => () => void;
|
|
8
|
-
onTabActivation: (newValue:
|
|
9
|
+
onTabActivation: (newValue: TabsTab.Value, eventDetails: TabsRoot.ChangeEventDetails) => void;
|
|
9
10
|
setHighlightedTabIndex: (index: number) => void;
|
|
10
11
|
tabsListElement: HTMLElement | null;
|
|
11
12
|
}
|
package/tabs/panel/TabsPanel.js
CHANGED
|
@@ -29,7 +29,7 @@ const stateAttributesMapping = {
|
|
|
29
29
|
*
|
|
30
30
|
* Documentation: [Base UI Tabs](https://base-ui.com/react/components/tabs)
|
|
31
31
|
*/
|
|
32
|
-
const TabsPanel = exports.TabsPanel = /*#__PURE__*/React.forwardRef(function
|
|
32
|
+
const TabsPanel = exports.TabsPanel = /*#__PURE__*/React.forwardRef(function TabsPanel(componentProps, forwardedRef) {
|
|
33
33
|
const {
|
|
34
34
|
className,
|
|
35
35
|
value,
|
package/tabs/root/TabsRoot.d.ts
CHANGED
|
@@ -40,10 +40,25 @@ export interface TabsRootProps extends BaseUIComponentProps<'div', TabsRootState
|
|
|
40
40
|
orientation?: TabsRoot.Orientation | undefined;
|
|
41
41
|
/**
|
|
42
42
|
* Callback invoked when new value is being set.
|
|
43
|
+
*
|
|
44
|
+
* The event `reason` is `'none'` for user-initiated changes, such as a click
|
|
45
|
+
* or keyboard navigation; `'initial'` for the first automatic selection or
|
|
46
|
+
* fallback in uncontrolled roots when `defaultValue` is omitted or
|
|
47
|
+
* `undefined`, including when the implicit initial value is disabled or
|
|
48
|
+
* missing; `'disabled'` for automatic fallback when the selected tab becomes
|
|
49
|
+
* disabled in uncontrolled roots; or `'missing'` for automatic fallback when
|
|
50
|
+
* the selected tab is removed, or when an explicit `defaultValue` never
|
|
51
|
+
* matches a mounted tab in uncontrolled roots.
|
|
52
|
+
*
|
|
53
|
+
* For automatic changes, the selected value can be `null` when no enabled Tab
|
|
54
|
+
* is available as a fallback.
|
|
55
|
+
*
|
|
56
|
+
* Automatic changes cannot be canceled; calling `eventDetails.cancel()` for
|
|
57
|
+
* `'initial'`, `'disabled'`, or `'missing'` has no effect.
|
|
43
58
|
*/
|
|
44
59
|
onValueChange?: ((value: TabsTab.Value, eventDetails: TabsRoot.ChangeEventDetails) => void) | undefined;
|
|
45
60
|
}
|
|
46
|
-
export type TabsRootChangeEventReason = typeof REASONS.none;
|
|
61
|
+
export type TabsRootChangeEventReason = typeof REASONS.none | typeof REASONS.disabled | typeof REASONS.missing | typeof REASONS.initial;
|
|
47
62
|
export type TabsRootChangeEventDetails = BaseUIChangeEventDetails<TabsRoot.ChangeEventReason, {
|
|
48
63
|
activationDirection: TabsTab.ActivationDirection;
|
|
49
64
|
}>;
|