@base-ui/react 1.0.0-rc.2 → 1.1.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 +156 -5
- package/README.md +2 -3
- package/accordion/header/AccordionHeader.d.ts +1 -1
- package/accordion/item/AccordionItem.d.ts +1 -1
- package/accordion/panel/AccordionPanel.d.ts +1 -1
- package/accordion/root/AccordionRoot.d.ts +1 -1
- package/accordion/trigger/AccordionTrigger.d.ts +1 -1
- package/accordion/trigger/AccordionTrigger.js +3 -4
- package/alert-dialog/root/AlertDialogRoot.d.ts +3 -3
- package/autocomplete/root/AutocompleteRoot.d.ts +1 -1
- package/avatar/fallback/AvatarFallback.d.ts +1 -1
- package/avatar/image/AvatarImage.d.ts +1 -1
- package/avatar/root/AvatarRoot.d.ts +1 -1
- package/button/Button.d.ts +4 -17
- package/button/Button.js +1 -2
- package/checkbox/indicator/CheckboxIndicator.d.ts +1 -1
- package/checkbox/indicator/CheckboxIndicatorDataAttributes.d.ts +4 -0
- package/checkbox/indicator/CheckboxIndicatorDataAttributes.js +4 -0
- package/checkbox/root/CheckboxRoot.d.ts +1 -1
- package/checkbox/root/CheckboxRoot.js +5 -4
- package/checkbox/root/CheckboxRootDataAttributes.d.ts +4 -0
- package/checkbox/root/CheckboxRootDataAttributes.js +4 -0
- package/checkbox-group/CheckboxGroup.d.ts +1 -1
- package/collapsible/panel/CollapsiblePanel.d.ts +1 -1
- package/collapsible/root/CollapsibleRoot.d.ts +1 -1
- package/collapsible/trigger/CollapsibleTrigger.d.ts +1 -1
- package/collapsible/trigger/CollapsibleTrigger.js +1 -2
- package/combobox/arrow/ComboboxArrow.d.ts +1 -1
- package/combobox/backdrop/ComboboxBackdrop.d.ts +1 -1
- package/combobox/chip/ComboboxChip.d.ts +1 -1
- package/combobox/chip-remove/ComboboxChipRemove.d.ts +1 -1
- package/combobox/chip-remove/ComboboxChipRemove.js +3 -2
- package/combobox/chips/ComboboxChips.d.ts +1 -1
- package/combobox/chips/ComboboxChips.js +7 -1
- package/combobox/clear/ComboboxClear.d.ts +1 -1
- package/combobox/clear/ComboboxClear.js +2 -2
- package/combobox/empty/ComboboxEmpty.d.ts +1 -1
- package/combobox/group/ComboboxGroup.d.ts +1 -1
- package/combobox/group-label/ComboboxGroupLabel.d.ts +1 -1
- package/combobox/icon/ComboboxIcon.d.ts +1 -1
- package/combobox/input/ComboboxInput.d.ts +1 -1
- package/combobox/input/ComboboxInput.js +12 -18
- package/combobox/item/ComboboxItem.d.ts +1 -1
- package/combobox/item/ComboboxItem.js +0 -1
- package/combobox/item-indicator/ComboboxItemIndicator.d.ts +1 -1
- package/combobox/list/ComboboxList.d.ts +1 -1
- package/combobox/popup/ComboboxPopup.d.ts +1 -1
- package/combobox/popup/ComboboxPopup.js +2 -1
- package/combobox/portal/ComboboxPortal.d.ts +1 -1
- package/combobox/positioner/ComboboxPositioner.d.ts +1 -1
- package/combobox/root/AriaCombobox.d.ts +8 -1
- package/combobox/root/AriaCombobox.js +19 -16
- package/combobox/root/ComboboxRoot.d.ts +1 -1
- package/combobox/row/ComboboxRow.d.ts +1 -1
- package/combobox/status/ComboboxStatus.d.ts +1 -1
- package/combobox/store.d.ts +3 -0
- package/combobox/store.js +21 -0
- package/combobox/trigger/ComboboxTrigger.d.ts +14 -1
- package/combobox/trigger/ComboboxTrigger.js +31 -11
- package/combobox/trigger/ComboboxTriggerDataAttributes.d.ts +13 -0
- package/combobox/trigger/ComboboxTriggerDataAttributes.js +13 -0
- package/combobox/utils/stateAttributesMapping.d.ts +14 -0
- package/combobox/utils/stateAttributesMapping.js +18 -0
- package/combobox/value/ComboboxValue.d.ts +5 -0
- package/combobox/value/ComboboxValue.js +15 -6
- package/composite/root/useCompositeRoot.d.ts +1 -1
- package/context-menu/trigger/ContextMenuTrigger.d.ts +1 -1
- package/csp-provider/CSPContext.d.ts +13 -0
- package/csp-provider/CSPContext.js +25 -0
- package/csp-provider/CSPProvider.d.ts +25 -0
- package/csp-provider/CSPProvider.js +32 -0
- package/csp-provider/index.d.ts +2 -0
- package/csp-provider/index.js +12 -0
- package/csp-provider/index.parts.d.ts +1 -0
- package/csp-provider/index.parts.js +12 -0
- package/dialog/backdrop/DialogBackdrop.d.ts +1 -1
- package/dialog/close/DialogClose.d.ts +1 -1
- package/dialog/description/DialogDescription.d.ts +1 -1
- package/dialog/popup/DialogPopup.d.ts +1 -1
- package/dialog/portal/DialogPortal.d.ts +1 -1
- package/dialog/portal/DialogPortal.js +1 -0
- package/dialog/root/DialogRoot.d.ts +4 -4
- package/dialog/store/DialogStore.d.ts +2 -2
- package/dialog/title/DialogTitle.d.ts +1 -1
- package/dialog/viewport/DialogViewport.d.ts +1 -1
- package/esm/accordion/header/AccordionHeader.d.ts +1 -1
- package/esm/accordion/item/AccordionItem.d.ts +1 -1
- package/esm/accordion/panel/AccordionPanel.d.ts +1 -1
- package/esm/accordion/root/AccordionRoot.d.ts +1 -1
- package/esm/accordion/trigger/AccordionTrigger.d.ts +1 -1
- package/esm/accordion/trigger/AccordionTrigger.js +3 -4
- package/esm/alert-dialog/root/AlertDialogRoot.d.ts +3 -3
- package/esm/autocomplete/root/AutocompleteRoot.d.ts +1 -1
- package/esm/avatar/fallback/AvatarFallback.d.ts +1 -1
- package/esm/avatar/image/AvatarImage.d.ts +1 -1
- package/esm/avatar/root/AvatarRoot.d.ts +1 -1
- package/esm/button/Button.d.ts +4 -17
- package/esm/button/Button.js +1 -2
- package/esm/checkbox/indicator/CheckboxIndicator.d.ts +1 -1
- package/esm/checkbox/indicator/CheckboxIndicatorDataAttributes.d.ts +4 -0
- package/esm/checkbox/indicator/CheckboxIndicatorDataAttributes.js +4 -0
- package/esm/checkbox/root/CheckboxRoot.d.ts +1 -1
- package/esm/checkbox/root/CheckboxRoot.js +6 -5
- package/esm/checkbox/root/CheckboxRootDataAttributes.d.ts +4 -0
- package/esm/checkbox/root/CheckboxRootDataAttributes.js +4 -0
- package/esm/checkbox-group/CheckboxGroup.d.ts +1 -1
- package/esm/collapsible/panel/CollapsiblePanel.d.ts +1 -1
- package/esm/collapsible/root/CollapsibleRoot.d.ts +1 -1
- package/esm/collapsible/trigger/CollapsibleTrigger.d.ts +1 -1
- package/esm/collapsible/trigger/CollapsibleTrigger.js +1 -2
- package/esm/combobox/arrow/ComboboxArrow.d.ts +1 -1
- package/esm/combobox/backdrop/ComboboxBackdrop.d.ts +1 -1
- package/esm/combobox/chip/ComboboxChip.d.ts +1 -1
- package/esm/combobox/chip-remove/ComboboxChipRemove.d.ts +1 -1
- package/esm/combobox/chip-remove/ComboboxChipRemove.js +3 -2
- package/esm/combobox/chips/ComboboxChips.d.ts +1 -1
- package/esm/combobox/chips/ComboboxChips.js +7 -1
- package/esm/combobox/clear/ComboboxClear.d.ts +1 -1
- package/esm/combobox/clear/ComboboxClear.js +2 -2
- package/esm/combobox/empty/ComboboxEmpty.d.ts +1 -1
- package/esm/combobox/group/ComboboxGroup.d.ts +1 -1
- package/esm/combobox/group-label/ComboboxGroupLabel.d.ts +1 -1
- package/esm/combobox/icon/ComboboxIcon.d.ts +1 -1
- package/esm/combobox/input/ComboboxInput.d.ts +1 -1
- package/esm/combobox/input/ComboboxInput.js +12 -17
- package/esm/combobox/item/ComboboxItem.d.ts +1 -1
- package/esm/combobox/item/ComboboxItem.js +0 -1
- package/esm/combobox/item-indicator/ComboboxItemIndicator.d.ts +1 -1
- package/esm/combobox/list/ComboboxList.d.ts +1 -1
- package/esm/combobox/popup/ComboboxPopup.d.ts +1 -1
- package/esm/combobox/popup/ComboboxPopup.js +2 -1
- package/esm/combobox/portal/ComboboxPortal.d.ts +1 -1
- package/esm/combobox/positioner/ComboboxPositioner.d.ts +1 -1
- package/esm/combobox/root/AriaCombobox.d.ts +8 -1
- package/esm/combobox/root/AriaCombobox.js +20 -17
- package/esm/combobox/root/ComboboxRoot.d.ts +1 -1
- package/esm/combobox/row/ComboboxRow.d.ts +1 -1
- package/esm/combobox/status/ComboboxStatus.d.ts +1 -1
- package/esm/combobox/store.d.ts +3 -0
- package/esm/combobox/store.js +21 -0
- package/esm/combobox/trigger/ComboboxTrigger.d.ts +14 -1
- package/esm/combobox/trigger/ComboboxTrigger.js +32 -12
- package/esm/combobox/trigger/ComboboxTriggerDataAttributes.d.ts +13 -0
- package/esm/combobox/trigger/ComboboxTriggerDataAttributes.js +13 -0
- package/esm/combobox/utils/stateAttributesMapping.d.ts +14 -0
- package/esm/combobox/utils/stateAttributesMapping.js +12 -0
- package/esm/combobox/value/ComboboxValue.d.ts +5 -0
- package/esm/combobox/value/ComboboxValue.js +16 -7
- package/esm/composite/root/useCompositeRoot.d.ts +1 -1
- package/esm/context-menu/trigger/ContextMenuTrigger.d.ts +1 -1
- package/esm/csp-provider/CSPContext.d.ts +13 -0
- package/esm/csp-provider/CSPContext.js +18 -0
- package/esm/csp-provider/CSPProvider.d.ts +25 -0
- package/esm/csp-provider/CSPProvider.js +27 -0
- package/esm/csp-provider/index.d.ts +2 -0
- package/esm/csp-provider/index.js +1 -0
- package/esm/csp-provider/index.parts.d.ts +1 -0
- package/esm/csp-provider/index.parts.js +1 -0
- package/esm/dialog/backdrop/DialogBackdrop.d.ts +1 -1
- package/esm/dialog/close/DialogClose.d.ts +1 -1
- package/esm/dialog/description/DialogDescription.d.ts +1 -1
- package/esm/dialog/popup/DialogPopup.d.ts +1 -1
- package/esm/dialog/portal/DialogPortal.d.ts +1 -1
- package/esm/dialog/portal/DialogPortal.js +1 -0
- package/esm/dialog/root/DialogRoot.d.ts +4 -4
- package/esm/dialog/store/DialogStore.d.ts +2 -2
- package/esm/dialog/title/DialogTitle.d.ts +1 -1
- package/esm/dialog/viewport/DialogViewport.d.ts +1 -1
- package/esm/field/control/FieldControl.d.ts +1 -1
- package/esm/field/description/FieldDescription.d.ts +1 -1
- package/esm/field/error/FieldError.d.ts +1 -1
- package/esm/field/index.d.ts +2 -1
- package/esm/field/item/FieldItem.d.ts +1 -1
- package/esm/field/label/FieldLabel.d.ts +11 -2
- package/esm/field/label/FieldLabel.js +51 -11
- package/esm/field/root/FieldRoot.d.ts +10 -1
- package/esm/field/root/FieldRoot.js +8 -0
- package/esm/field/useField.js +7 -3
- package/esm/fieldset/legend/FieldsetLegend.d.ts +1 -1
- package/esm/fieldset/root/FieldsetRoot.d.ts +1 -1
- package/esm/floating-ui-react/components/FloatingFocusManager.js +7 -6
- package/esm/floating-ui-react/components/FloatingPortal.d.ts +2 -2
- package/esm/floating-ui-react/components/FloatingPortal.js +11 -2
- package/esm/floating-ui-react/hooks/useClientPoint.js +5 -4
- package/esm/floating-ui-react/hooks/useDismiss.js +16 -3
- package/esm/floating-ui-react/hooks/useFocus.d.ts +5 -0
- package/esm/floating-ui-react/hooks/useFocus.js +43 -9
- package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +17 -4
- package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +3 -0
- package/esm/form/Form.d.ts +18 -1
- package/esm/form/Form.js +17 -0
- package/esm/form/FormContext.d.ts +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.js +2 -1
- package/esm/input/Input.d.ts +1 -1
- package/esm/menu/arrow/MenuArrow.d.ts +1 -1
- package/esm/menu/backdrop/MenuBackdrop.d.ts +1 -1
- package/esm/menu/checkbox-item/MenuCheckboxItem.d.ts +1 -1
- package/esm/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.d.ts +1 -1
- package/esm/menu/group/MenuGroup.d.ts +1 -1
- package/esm/menu/group-label/MenuGroupLabel.d.ts +1 -1
- package/esm/menu/item/MenuItem.d.ts +1 -1
- package/esm/menu/popup/MenuPopup.d.ts +1 -1
- package/esm/menu/popup/MenuPopup.js +4 -3
- package/esm/menu/portal/MenuPortal.d.ts +1 -1
- package/esm/menu/positioner/MenuPositioner.d.ts +1 -1
- package/esm/menu/radio-group/MenuRadioGroup.d.ts +1 -1
- package/esm/menu/radio-item/MenuRadioItem.d.ts +1 -1
- package/esm/menu/radio-item-indicator/MenuRadioItemIndicator.d.ts +1 -1
- package/esm/menu/root/MenuRoot.d.ts +7 -6
- package/esm/menu/root/MenuRoot.js +4 -2
- package/esm/menu/store/MenuStore.js +3 -3
- package/esm/menu/submenu-trigger/MenuSubmenuTrigger.d.ts +1 -1
- package/esm/menu/trigger/MenuTrigger.js +13 -13
- package/esm/menubar/Menubar.d.ts +1 -1
- package/esm/merge-props/mergeProps.d.ts +31 -11
- package/esm/merge-props/mergeProps.js +29 -8
- package/esm/meter/indicator/MeterIndicator.d.ts +1 -1
- package/esm/meter/label/MeterLabel.d.ts +1 -1
- package/esm/meter/root/MeterRoot.d.ts +1 -1
- package/esm/meter/track/MeterTrack.d.ts +1 -1
- package/esm/meter/value/MeterValue.d.ts +1 -1
- package/esm/navigation-menu/arrow/NavigationMenuArrow.d.ts +1 -1
- package/esm/navigation-menu/backdrop/NavigationMenuBackdrop.d.ts +1 -1
- package/esm/navigation-menu/content/NavigationMenuContent.d.ts +1 -1
- package/esm/navigation-menu/content/NavigationMenuContent.js +6 -0
- package/esm/navigation-menu/icon/NavigationMenuIcon.d.ts +1 -1
- package/esm/navigation-menu/item/NavigationMenuItem.d.ts +1 -1
- package/esm/navigation-menu/link/NavigationMenuLink.d.ts +1 -1
- package/esm/navigation-menu/list/NavigationMenuList.d.ts +1 -1
- package/esm/navigation-menu/popup/NavigationMenuPopup.d.ts +1 -1
- package/esm/navigation-menu/portal/NavigationMenuPortal.d.ts +1 -1
- package/esm/navigation-menu/positioner/NavigationMenuPositioner.d.ts +1 -1
- package/esm/navigation-menu/root/NavigationMenuRoot.d.ts +2 -2
- package/esm/navigation-menu/trigger/NavigationMenuTrigger.d.ts +1 -1
- package/esm/navigation-menu/viewport/NavigationMenuViewport.d.ts +1 -1
- package/esm/number-field/decrement/NumberFieldDecrement.d.ts +1 -1
- package/esm/number-field/decrement/NumberFieldDecrement.js +4 -6
- package/esm/number-field/group/NumberFieldGroup.d.ts +1 -1
- package/esm/number-field/increment/NumberFieldIncrement.d.ts +1 -1
- package/esm/number-field/increment/NumberFieldIncrement.js +4 -6
- package/esm/number-field/input/NumberFieldInput.d.ts +1 -1
- package/esm/number-field/input/NumberFieldInput.js +5 -2
- package/esm/number-field/root/NumberFieldRoot.d.ts +5 -4
- package/esm/number-field/root/NumberFieldRoot.js +12 -5
- package/esm/number-field/root/useNumberFieldButton.d.ts +0 -3
- package/esm/number-field/root/useNumberFieldButton.js +5 -11
- package/esm/number-field/scrub-area/NumberFieldScrubArea.d.ts +1 -1
- package/esm/number-field/scrub-area-cursor/NumberFieldScrubAreaCursor.d.ts +1 -1
- package/esm/popover/arrow/PopoverArrow.d.ts +1 -1
- package/esm/popover/backdrop/PopoverBackdrop.d.ts +1 -1
- package/esm/popover/close/PopoverClose.d.ts +1 -1
- package/esm/popover/description/PopoverDescription.d.ts +1 -1
- package/esm/popover/popup/PopoverPopup.d.ts +1 -1
- package/esm/popover/popup/PopoverPopup.js +0 -30
- package/esm/popover/portal/PopoverPortal.d.ts +1 -1
- package/esm/popover/positioner/PopoverPositioner.d.ts +1 -1
- package/esm/popover/positioner/PopoverPositioner.js +2 -1
- package/esm/popover/root/PopoverRoot.d.ts +2 -2
- package/esm/popover/store/PopoverStore.d.ts +4 -2
- package/esm/popover/store/PopoverStore.js +8 -5
- package/esm/popover/title/PopoverTitle.d.ts +1 -1
- package/esm/popover/trigger/PopoverTrigger.js +2 -2
- package/esm/popover/viewport/PopoverViewport.d.ts +1 -1
- package/esm/popover/viewport/PopoverViewport.js +28 -12
- package/esm/preview-card/arrow/PreviewCardArrow.d.ts +1 -1
- package/esm/preview-card/arrow/PreviewCardArrow.js +2 -3
- package/esm/preview-card/backdrop/PreviewCardBackdrop.d.ts +1 -1
- package/esm/preview-card/backdrop/PreviewCardBackdrop.js +4 -5
- package/esm/preview-card/index.parts.d.ts +3 -1
- package/esm/preview-card/index.parts.js +3 -1
- package/esm/preview-card/popup/PreviewCardPopup.d.ts +2 -1
- package/esm/preview-card/popup/PreviewCardPopup.js +17 -11
- package/esm/preview-card/portal/PreviewCardPortal.d.ts +1 -1
- package/esm/preview-card/portal/PreviewCardPortal.js +2 -3
- package/esm/preview-card/positioner/PreviewCardPositioner.d.ts +2 -1
- package/esm/preview-card/positioner/PreviewCardPositioner.js +16 -11
- package/esm/preview-card/root/PreviewCardContext.d.ts +5 -26
- package/esm/preview-card/root/PreviewCardContext.js +2 -2
- package/esm/preview-card/root/PreviewCardRoot.d.ts +35 -10
- package/esm/preview-card/root/PreviewCardRoot.js +61 -116
- package/esm/preview-card/store/PreviewCardHandle.d.ts +33 -0
- package/esm/preview-card/store/PreviewCardHandle.js +55 -0
- package/esm/preview-card/store/PreviewCardStore.d.ts +36 -0
- package/esm/preview-card/store/PreviewCardStore.js +97 -0
- package/esm/preview-card/trigger/PreviewCardTrigger.d.ts +15 -3
- package/esm/preview-card/trigger/PreviewCardTrigger.js +49 -13
- package/esm/preview-card/viewport/PreviewCardViewport.d.ts +22 -0
- package/esm/preview-card/viewport/PreviewCardViewport.js +272 -0
- package/esm/preview-card/viewport/PreviewCardViewportCssVars.d.ts +14 -0
- package/esm/preview-card/viewport/PreviewCardViewportCssVars.js +15 -0
- package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +26 -0
- package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.js +27 -0
- package/esm/progress/indicator/ProgressIndicator.d.ts +1 -1
- package/esm/progress/label/ProgressLabel.d.ts +1 -1
- package/esm/progress/root/ProgressRoot.d.ts +1 -1
- package/esm/progress/track/ProgressTrack.d.ts +1 -1
- package/esm/progress/value/ProgressValue.d.ts +1 -1
- package/esm/radio/indicator/RadioIndicator.d.ts +1 -1
- package/esm/radio/root/RadioRoot.d.ts +1 -1
- package/esm/radio/root/RadioRoot.js +9 -9
- package/esm/radio-group/RadioGroup.d.ts +4 -4
- package/esm/radio-group/RadioGroup.js +2 -2
- package/esm/scroll-area/content/ScrollAreaContent.d.ts +1 -1
- package/esm/scroll-area/content/ScrollAreaContent.js +10 -1
- package/esm/scroll-area/corner/ScrollAreaCorner.d.ts +1 -1
- package/esm/scroll-area/corner/ScrollAreaCorner.js +1 -1
- package/esm/scroll-area/root/ScrollAreaRoot.d.ts +26 -2
- package/esm/scroll-area/root/ScrollAreaRoot.js +33 -29
- package/esm/scroll-area/root/ScrollAreaRootContext.d.ts +10 -43
- package/esm/scroll-area/scrollbar/ScrollAreaScrollbar.d.ts +1 -1
- package/esm/scroll-area/scrollbar/ScrollAreaScrollbar.js +4 -4
- package/esm/scroll-area/thumb/ScrollAreaThumb.d.ts +2 -2
- package/esm/scroll-area/thumb/ScrollAreaThumb.js +1 -1
- package/esm/scroll-area/viewport/ScrollAreaViewport.d.ts +1 -1
- package/esm/scroll-area/viewport/ScrollAreaViewport.js +51 -25
- package/esm/select/arrow/SelectArrow.d.ts +1 -1
- package/esm/select/backdrop/SelectBackdrop.d.ts +1 -1
- package/esm/select/group/SelectGroup.d.ts +1 -1
- package/esm/select/group-label/SelectGroupLabel.d.ts +1 -1
- package/esm/select/icon/SelectIcon.d.ts +1 -1
- package/esm/select/item/SelectItem.d.ts +1 -1
- package/esm/select/item/SelectItem.js +0 -1
- package/esm/select/item-indicator/SelectItemIndicator.d.ts +1 -1
- package/esm/select/item-text/SelectItemText.d.ts +1 -1
- package/esm/select/list/SelectList.d.ts +1 -1
- package/esm/select/popup/SelectPopup.d.ts +1 -1
- package/esm/select/popup/SelectPopup.js +154 -95
- package/esm/select/portal/SelectPortal.d.ts +1 -1
- package/esm/select/positioner/SelectPositioner.d.ts +1 -1
- package/esm/select/root/SelectRoot.d.ts +2 -2
- package/esm/select/root/SelectRoot.js +26 -13
- package/esm/select/scroll-arrow/SelectScrollArrow.d.ts +1 -1
- package/esm/select/scroll-down-arrow/SelectScrollDownArrow.d.ts +1 -1
- package/esm/select/scroll-up-arrow/SelectScrollUpArrow.d.ts +1 -1
- package/esm/select/store.d.ts +2 -1
- package/esm/select/store.js +19 -13
- package/esm/select/trigger/SelectTrigger.d.ts +14 -4
- package/esm/select/trigger/SelectTrigger.js +50 -18
- package/esm/select/value/SelectValue.d.ts +6 -1
- package/esm/select/value/SelectValue.js +19 -5
- package/esm/separator/Separator.d.ts +1 -1
- package/esm/slider/control/SliderControl.d.ts +1 -1
- package/esm/slider/control/SliderControl.js +1 -1
- package/esm/slider/control/SliderControlDataAttributes.d.ts +0 -8
- package/esm/slider/control/SliderControlDataAttributes.js +0 -8
- package/esm/slider/indicator/SliderIndicator.d.ts +1 -1
- package/esm/slider/indicator/SliderIndicatorDataAttributes.d.ts +0 -8
- package/esm/slider/indicator/SliderIndicatorDataAttributes.js +0 -8
- package/esm/slider/root/SliderRootDataAttributes.d.ts +0 -8
- package/esm/slider/root/SliderRootDataAttributes.js +0 -8
- package/esm/slider/thumb/SliderThumb.d.ts +2 -2
- package/esm/slider/thumb/SliderThumb.js +7 -1
- package/esm/slider/thumb/SliderThumbDataAttributes.d.ts +0 -8
- package/esm/slider/thumb/SliderThumbDataAttributes.js +0 -8
- package/esm/slider/track/SliderTrack.d.ts +1 -1
- package/esm/slider/track/SliderTrackDataAttributes.d.ts +0 -8
- package/esm/slider/track/SliderTrackDataAttributes.js +0 -8
- package/esm/slider/value/SliderValue.d.ts +1 -1
- package/esm/slider/value/SliderValueDataAttributes.d.ts +0 -8
- package/esm/slider/value/SliderValueDataAttributes.js +0 -8
- package/esm/switch/root/SwitchRoot.d.ts +6 -1
- package/esm/switch/root/SwitchRoot.js +15 -6
- package/esm/switch/thumb/SwitchThumb.d.ts +1 -1
- package/esm/tabs/indicator/TabsIndicator.d.ts +1 -1
- package/esm/tabs/indicator/TabsIndicator.js +6 -0
- package/esm/tabs/list/TabsList.d.ts +1 -1
- package/esm/tabs/panel/TabsPanel.d.ts +1 -1
- package/esm/tabs/root/TabsRoot.d.ts +1 -1
- package/esm/tabs/tab/TabsTab.d.ts +1 -1
- package/esm/toast/action/ToastAction.d.ts +1 -1
- package/esm/toast/arrow/ToastArrow.d.ts +1 -1
- package/esm/toast/close/ToastClose.d.ts +1 -1
- package/esm/toast/content/ToastContent.d.ts +1 -1
- package/esm/toast/description/ToastDescription.d.ts +1 -1
- package/esm/toast/portal/ToastPortal.d.ts +1 -1
- package/esm/toast/positioner/ToastPositioner.d.ts +1 -1
- package/esm/toast/provider/ToastProvider.js +46 -19
- package/esm/toast/root/ToastRoot.d.ts +1 -1
- package/esm/toast/title/ToastTitle.d.ts +1 -1
- package/esm/toast/viewport/ToastViewport.d.ts +1 -1
- package/esm/toggle/Toggle.d.ts +1 -1
- package/esm/toggle-group/ToggleGroup.d.ts +1 -1
- package/esm/toolbar/button/ToolbarButton.d.ts +1 -1
- package/esm/toolbar/group/ToolbarGroup.d.ts +1 -1
- package/esm/toolbar/input/ToolbarInput.d.ts +1 -1
- package/esm/toolbar/link/ToolbarLink.d.ts +1 -1
- package/esm/toolbar/root/ToolbarRoot.d.ts +1 -1
- package/esm/toolbar/separator/ToolbarSeparator.d.ts +1 -1
- package/esm/tooltip/arrow/TooltipArrow.d.ts +1 -1
- package/esm/tooltip/popup/TooltipPopup.d.ts +1 -1
- package/esm/tooltip/popup/TooltipPopup.js +0 -31
- package/esm/tooltip/portal/TooltipPortal.d.ts +1 -1
- package/esm/tooltip/positioner/TooltipPositioner.d.ts +1 -1
- package/esm/tooltip/positioner/TooltipPositioner.js +2 -1
- package/esm/tooltip/root/TooltipRoot.d.ts +4 -6
- package/esm/tooltip/root/TooltipRoot.js +1 -2
- package/esm/tooltip/store/TooltipStore.d.ts +4 -2
- package/esm/tooltip/store/TooltipStore.js +7 -4
- package/esm/tooltip/trigger/TooltipTrigger.js +1 -1
- package/esm/tooltip/viewport/TooltipViewport.d.ts +1 -1
- package/esm/tooltip/viewport/TooltipViewport.js +28 -12
- package/esm/use-render/index.d.ts +2 -1
- package/esm/use-render/index.js +2 -1
- package/esm/utils/FloatingPortalLite.d.ts +1 -1
- package/esm/utils/popups/popupStoreUtils.js +21 -2
- package/esm/utils/resolveValueLabel.d.ts +5 -1
- package/esm/utils/resolveValueLabel.js +46 -22
- package/esm/utils/styles.d.ts +1 -1
- package/esm/utils/styles.js +10 -6
- package/esm/utils/types.d.ts +1 -1
- package/esm/utils/useAnimationsFinished.d.ts +2 -2
- package/esm/utils/useAnimationsFinished.js +56 -33
- package/esm/utils/useOpenChangeComplete.js +8 -10
- package/esm/utils/useOpenInteractionType.js +6 -1
- package/esm/utils/usePopupAutoResize.js +82 -46
- package/field/control/FieldControl.d.ts +1 -1
- package/field/description/FieldDescription.d.ts +1 -1
- package/field/error/FieldError.d.ts +1 -1
- package/field/index.d.ts +2 -1
- package/field/item/FieldItem.d.ts +1 -1
- package/field/label/FieldLabel.d.ts +11 -2
- package/field/label/FieldLabel.js +51 -11
- package/field/root/FieldRoot.d.ts +10 -1
- package/field/root/FieldRoot.js +8 -0
- package/field/useField.js +7 -3
- package/fieldset/legend/FieldsetLegend.d.ts +1 -1
- package/fieldset/root/FieldsetRoot.d.ts +1 -1
- package/floating-ui-react/components/FloatingFocusManager.js +7 -6
- package/floating-ui-react/components/FloatingPortal.d.ts +2 -2
- package/floating-ui-react/components/FloatingPortal.js +11 -2
- package/floating-ui-react/hooks/useClientPoint.js +5 -4
- package/floating-ui-react/hooks/useDismiss.js +16 -3
- package/floating-ui-react/hooks/useFocus.d.ts +5 -0
- package/floating-ui-react/hooks/useFocus.js +43 -9
- package/floating-ui-react/hooks/useHoverReferenceInteraction.js +17 -4
- package/floating-ui-react/hooks/useSyncedFloatingRootContext.js +3 -0
- package/form/Form.d.ts +18 -1
- package/form/Form.js +17 -0
- package/form/FormContext.d.ts +1 -1
- package/index.d.ts +1 -0
- package/index.js +12 -1
- package/input/Input.d.ts +1 -1
- package/menu/arrow/MenuArrow.d.ts +1 -1
- package/menu/backdrop/MenuBackdrop.d.ts +1 -1
- package/menu/checkbox-item/MenuCheckboxItem.d.ts +1 -1
- package/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.d.ts +1 -1
- package/menu/group/MenuGroup.d.ts +1 -1
- package/menu/group-label/MenuGroupLabel.d.ts +1 -1
- package/menu/item/MenuItem.d.ts +1 -1
- package/menu/popup/MenuPopup.d.ts +1 -1
- package/menu/popup/MenuPopup.js +4 -3
- package/menu/portal/MenuPortal.d.ts +1 -1
- package/menu/positioner/MenuPositioner.d.ts +1 -1
- package/menu/radio-group/MenuRadioGroup.d.ts +1 -1
- package/menu/radio-item/MenuRadioItem.d.ts +1 -1
- package/menu/radio-item-indicator/MenuRadioItemIndicator.d.ts +1 -1
- package/menu/root/MenuRoot.d.ts +7 -6
- package/menu/root/MenuRoot.js +4 -2
- package/menu/store/MenuStore.js +3 -3
- package/menu/submenu-trigger/MenuSubmenuTrigger.d.ts +1 -1
- package/menu/trigger/MenuTrigger.js +14 -14
- package/menubar/Menubar.d.ts +1 -1
- package/merge-props/mergeProps.d.ts +31 -11
- package/merge-props/mergeProps.js +29 -8
- package/meter/indicator/MeterIndicator.d.ts +1 -1
- package/meter/label/MeterLabel.d.ts +1 -1
- package/meter/root/MeterRoot.d.ts +1 -1
- package/meter/track/MeterTrack.d.ts +1 -1
- package/meter/value/MeterValue.d.ts +1 -1
- package/navigation-menu/arrow/NavigationMenuArrow.d.ts +1 -1
- package/navigation-menu/backdrop/NavigationMenuBackdrop.d.ts +1 -1
- package/navigation-menu/content/NavigationMenuContent.d.ts +1 -1
- package/navigation-menu/content/NavigationMenuContent.js +6 -0
- package/navigation-menu/icon/NavigationMenuIcon.d.ts +1 -1
- package/navigation-menu/item/NavigationMenuItem.d.ts +1 -1
- package/navigation-menu/link/NavigationMenuLink.d.ts +1 -1
- package/navigation-menu/list/NavigationMenuList.d.ts +1 -1
- package/navigation-menu/popup/NavigationMenuPopup.d.ts +1 -1
- package/navigation-menu/portal/NavigationMenuPortal.d.ts +1 -1
- package/navigation-menu/positioner/NavigationMenuPositioner.d.ts +1 -1
- package/navigation-menu/root/NavigationMenuRoot.d.ts +2 -2
- package/navigation-menu/trigger/NavigationMenuTrigger.d.ts +1 -1
- package/navigation-menu/viewport/NavigationMenuViewport.d.ts +1 -1
- package/number-field/decrement/NumberFieldDecrement.d.ts +1 -1
- package/number-field/decrement/NumberFieldDecrement.js +4 -6
- package/number-field/group/NumberFieldGroup.d.ts +1 -1
- package/number-field/increment/NumberFieldIncrement.d.ts +1 -1
- package/number-field/increment/NumberFieldIncrement.js +4 -6
- package/number-field/input/NumberFieldInput.d.ts +1 -1
- package/number-field/input/NumberFieldInput.js +5 -2
- package/number-field/root/NumberFieldRoot.d.ts +5 -4
- package/number-field/root/NumberFieldRoot.js +11 -4
- package/number-field/root/useNumberFieldButton.d.ts +0 -3
- package/number-field/root/useNumberFieldButton.js +5 -11
- package/number-field/scrub-area/NumberFieldScrubArea.d.ts +1 -1
- package/number-field/scrub-area-cursor/NumberFieldScrubAreaCursor.d.ts +1 -1
- package/package.json +13 -3
- package/popover/arrow/PopoverArrow.d.ts +1 -1
- package/popover/backdrop/PopoverBackdrop.d.ts +1 -1
- package/popover/close/PopoverClose.d.ts +1 -1
- package/popover/description/PopoverDescription.d.ts +1 -1
- package/popover/popup/PopoverPopup.d.ts +1 -1
- package/popover/popup/PopoverPopup.js +0 -30
- package/popover/portal/PopoverPortal.d.ts +1 -1
- package/popover/positioner/PopoverPositioner.d.ts +1 -1
- package/popover/positioner/PopoverPositioner.js +2 -1
- package/popover/root/PopoverRoot.d.ts +2 -2
- package/popover/store/PopoverStore.d.ts +4 -2
- package/popover/store/PopoverStore.js +8 -5
- package/popover/title/PopoverTitle.d.ts +1 -1
- package/popover/trigger/PopoverTrigger.js +2 -2
- package/popover/viewport/PopoverViewport.d.ts +1 -1
- package/popover/viewport/PopoverViewport.js +28 -12
- package/preview-card/arrow/PreviewCardArrow.d.ts +1 -1
- package/preview-card/arrow/PreviewCardArrow.js +2 -3
- package/preview-card/backdrop/PreviewCardBackdrop.d.ts +1 -1
- package/preview-card/backdrop/PreviewCardBackdrop.js +4 -5
- package/preview-card/index.parts.d.ts +3 -1
- package/preview-card/index.parts.js +21 -1
- package/preview-card/popup/PreviewCardPopup.d.ts +2 -1
- package/preview-card/popup/PreviewCardPopup.js +17 -11
- package/preview-card/portal/PreviewCardPortal.d.ts +1 -1
- package/preview-card/portal/PreviewCardPortal.js +2 -3
- package/preview-card/positioner/PreviewCardPositioner.d.ts +2 -1
- package/preview-card/positioner/PreviewCardPositioner.js +16 -11
- package/preview-card/root/PreviewCardContext.d.ts +5 -26
- package/preview-card/root/PreviewCardContext.js +2 -2
- package/preview-card/root/PreviewCardRoot.d.ts +35 -10
- package/preview-card/root/PreviewCardRoot.js +59 -113
- package/preview-card/store/PreviewCardHandle.d.ts +33 -0
- package/preview-card/store/PreviewCardHandle.js +63 -0
- package/preview-card/store/PreviewCardStore.d.ts +36 -0
- package/preview-card/store/PreviewCardStore.js +105 -0
- package/preview-card/trigger/PreviewCardTrigger.d.ts +15 -3
- package/preview-card/trigger/PreviewCardTrigger.js +50 -13
- package/preview-card/viewport/PreviewCardViewport.d.ts +22 -0
- package/preview-card/viewport/PreviewCardViewport.js +278 -0
- package/preview-card/viewport/PreviewCardViewportCssVars.d.ts +14 -0
- package/preview-card/viewport/PreviewCardViewportCssVars.js +21 -0
- package/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +26 -0
- package/preview-card/viewport/PreviewCardViewportDataAttributes.js +33 -0
- package/progress/indicator/ProgressIndicator.d.ts +1 -1
- package/progress/label/ProgressLabel.d.ts +1 -1
- package/progress/root/ProgressRoot.d.ts +1 -1
- package/progress/track/ProgressTrack.d.ts +1 -1
- package/progress/value/ProgressValue.d.ts +1 -1
- package/radio/indicator/RadioIndicator.d.ts +1 -1
- package/radio/root/RadioRoot.d.ts +1 -1
- package/radio/root/RadioRoot.js +8 -8
- package/radio-group/RadioGroup.d.ts +4 -4
- package/radio-group/RadioGroup.js +1 -1
- package/scroll-area/content/ScrollAreaContent.d.ts +1 -1
- package/scroll-area/content/ScrollAreaContent.js +10 -1
- package/scroll-area/corner/ScrollAreaCorner.d.ts +1 -1
- package/scroll-area/corner/ScrollAreaCorner.js +1 -1
- package/scroll-area/root/ScrollAreaRoot.d.ts +26 -2
- package/scroll-area/root/ScrollAreaRoot.js +33 -29
- package/scroll-area/root/ScrollAreaRootContext.d.ts +10 -43
- package/scroll-area/scrollbar/ScrollAreaScrollbar.d.ts +1 -1
- package/scroll-area/scrollbar/ScrollAreaScrollbar.js +4 -4
- package/scroll-area/thumb/ScrollAreaThumb.d.ts +2 -2
- package/scroll-area/thumb/ScrollAreaThumb.js +1 -1
- package/scroll-area/viewport/ScrollAreaViewport.d.ts +1 -1
- package/scroll-area/viewport/ScrollAreaViewport.js +51 -25
- package/select/arrow/SelectArrow.d.ts +1 -1
- package/select/backdrop/SelectBackdrop.d.ts +1 -1
- package/select/group/SelectGroup.d.ts +1 -1
- package/select/group-label/SelectGroupLabel.d.ts +1 -1
- package/select/icon/SelectIcon.d.ts +1 -1
- package/select/item/SelectItem.d.ts +1 -1
- package/select/item/SelectItem.js +0 -1
- package/select/item-indicator/SelectItemIndicator.d.ts +1 -1
- package/select/item-text/SelectItemText.d.ts +1 -1
- package/select/list/SelectList.d.ts +1 -1
- package/select/popup/SelectPopup.d.ts +1 -1
- package/select/popup/SelectPopup.js +154 -95
- package/select/portal/SelectPortal.d.ts +1 -1
- package/select/positioner/SelectPositioner.d.ts +1 -1
- package/select/root/SelectRoot.d.ts +2 -2
- package/select/root/SelectRoot.js +24 -11
- package/select/scroll-arrow/SelectScrollArrow.d.ts +1 -1
- package/select/scroll-down-arrow/SelectScrollDownArrow.d.ts +1 -1
- package/select/scroll-up-arrow/SelectScrollUpArrow.d.ts +1 -1
- package/select/store.d.ts +2 -1
- package/select/store.js +18 -12
- package/select/trigger/SelectTrigger.d.ts +14 -4
- package/select/trigger/SelectTrigger.js +50 -18
- package/select/value/SelectValue.d.ts +6 -1
- package/select/value/SelectValue.js +18 -4
- package/separator/Separator.d.ts +1 -1
- package/slider/control/SliderControl.d.ts +1 -1
- package/slider/control/SliderControl.js +1 -1
- package/slider/control/SliderControlDataAttributes.d.ts +0 -8
- package/slider/control/SliderControlDataAttributes.js +0 -8
- package/slider/indicator/SliderIndicator.d.ts +1 -1
- package/slider/indicator/SliderIndicatorDataAttributes.d.ts +0 -8
- package/slider/indicator/SliderIndicatorDataAttributes.js +0 -8
- package/slider/root/SliderRootDataAttributes.d.ts +0 -8
- package/slider/root/SliderRootDataAttributes.js +0 -8
- package/slider/thumb/SliderThumb.d.ts +2 -2
- package/slider/thumb/SliderThumb.js +7 -1
- package/slider/thumb/SliderThumbDataAttributes.d.ts +0 -8
- package/slider/thumb/SliderThumbDataAttributes.js +0 -8
- package/slider/track/SliderTrack.d.ts +1 -1
- package/slider/track/SliderTrackDataAttributes.d.ts +0 -8
- package/slider/track/SliderTrackDataAttributes.js +0 -8
- package/slider/value/SliderValue.d.ts +1 -1
- package/slider/value/SliderValueDataAttributes.d.ts +0 -8
- package/slider/value/SliderValueDataAttributes.js +0 -8
- package/switch/root/SwitchRoot.d.ts +6 -1
- package/switch/root/SwitchRoot.js +14 -5
- package/switch/thumb/SwitchThumb.d.ts +1 -1
- package/tabs/indicator/TabsIndicator.d.ts +1 -1
- package/tabs/indicator/TabsIndicator.js +6 -0
- package/tabs/list/TabsList.d.ts +1 -1
- package/tabs/panel/TabsPanel.d.ts +1 -1
- package/tabs/root/TabsRoot.d.ts +1 -1
- package/tabs/tab/TabsTab.d.ts +1 -1
- package/toast/action/ToastAction.d.ts +1 -1
- package/toast/arrow/ToastArrow.d.ts +1 -1
- package/toast/close/ToastClose.d.ts +1 -1
- package/toast/content/ToastContent.d.ts +1 -1
- package/toast/description/ToastDescription.d.ts +1 -1
- package/toast/portal/ToastPortal.d.ts +1 -1
- package/toast/positioner/ToastPositioner.d.ts +1 -1
- package/toast/provider/ToastProvider.js +46 -19
- package/toast/root/ToastRoot.d.ts +1 -1
- package/toast/title/ToastTitle.d.ts +1 -1
- package/toast/viewport/ToastViewport.d.ts +1 -1
- package/toggle/Toggle.d.ts +1 -1
- package/toggle-group/ToggleGroup.d.ts +1 -1
- package/toolbar/button/ToolbarButton.d.ts +1 -1
- package/toolbar/group/ToolbarGroup.d.ts +1 -1
- package/toolbar/input/ToolbarInput.d.ts +1 -1
- package/toolbar/link/ToolbarLink.d.ts +1 -1
- package/toolbar/root/ToolbarRoot.d.ts +1 -1
- package/toolbar/separator/ToolbarSeparator.d.ts +1 -1
- package/tooltip/arrow/TooltipArrow.d.ts +1 -1
- package/tooltip/popup/TooltipPopup.d.ts +1 -1
- package/tooltip/popup/TooltipPopup.js +0 -31
- package/tooltip/portal/TooltipPortal.d.ts +1 -1
- package/tooltip/positioner/TooltipPositioner.d.ts +1 -1
- package/tooltip/positioner/TooltipPositioner.js +2 -1
- package/tooltip/root/TooltipRoot.d.ts +4 -6
- package/tooltip/root/TooltipRoot.js +1 -2
- package/tooltip/store/TooltipStore.d.ts +4 -2
- package/tooltip/store/TooltipStore.js +7 -4
- package/tooltip/trigger/TooltipTrigger.js +1 -1
- package/tooltip/viewport/TooltipViewport.d.ts +1 -1
- package/tooltip/viewport/TooltipViewport.js +28 -12
- package/use-render/index.d.ts +2 -1
- package/utils/FloatingPortalLite.d.ts +1 -1
- package/utils/popups/popupStoreUtils.js +21 -2
- package/utils/resolveValueLabel.d.ts +5 -1
- package/utils/resolveValueLabel.js +48 -22
- package/utils/styles.d.ts +1 -1
- package/utils/styles.js +10 -6
- package/utils/types.d.ts +1 -1
- package/utils/useAnimationsFinished.d.ts +2 -2
- package/utils/useAnimationsFinished.js +56 -33
- package/utils/useOpenChangeComplete.js +8 -10
- package/utils/useOpenInteractionType.js +6 -1
- package/utils/usePopupAutoResize.js +82 -46
- package/esm/utils/interactions/useFocusWithDelay.d.ts +0 -9
- package/esm/utils/interactions/useFocusWithDelay.js +0 -81
- package/utils/interactions/useFocusWithDelay.d.ts +0 -9
- package/utils/interactions/useFocusWithDelay.js +0 -87
- /package/esm/utils/{useMixedToggleClickHander.d.ts → useMixedToggleClickHandler.d.ts} +0 -0
- /package/esm/utils/{useMixedToggleClickHander.js → useMixedToggleClickHandler.js} +0 -0
- /package/utils/{useMixedToggleClickHander.d.ts → useMixedToggleClickHandler.d.ts} +0 -0
- /package/utils/{useMixedToggleClickHander.js → useMixedToggleClickHandler.js} +0 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { inertValue } from '@base-ui/utils/inertValue';
|
|
5
|
+
import { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';
|
|
6
|
+
import { usePreviousValue } from '@base-ui/utils/usePreviousValue';
|
|
7
|
+
import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';
|
|
8
|
+
import { useStableCallback } from '@base-ui/utils/useStableCallback';
|
|
9
|
+
import { usePreviewCardRootContext } from "../root/PreviewCardContext.js";
|
|
10
|
+
import { usePreviewCardPositionerContext } from "../positioner/PreviewCardPositionerContext.js";
|
|
11
|
+
import { useAnimationsFinished } from "../../utils/useAnimationsFinished.js";
|
|
12
|
+
import { usePopupAutoResize } from "../../utils/usePopupAutoResize.js";
|
|
13
|
+
import { useRenderElement } from "../../utils/useRenderElement.js";
|
|
14
|
+
import { PreviewCardViewportCssVars } from "./PreviewCardViewportCssVars.js";
|
|
15
|
+
import { useDirection } from "../../direction-provider/index.js";
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
const stateAttributesMapping = {
|
|
18
|
+
activationDirection: value => value ? {
|
|
19
|
+
'data-activation-direction': value
|
|
20
|
+
} : null
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A viewport for displaying content transitions.
|
|
25
|
+
* This component is only required if one popup can be opened by multiple triggers, its content change based on the trigger
|
|
26
|
+
* and switching between them is animated.
|
|
27
|
+
* Renders a `<div>` element.
|
|
28
|
+
*
|
|
29
|
+
* Documentation: [Base UI Preview Card](https://base-ui.com/react/components/preview-card)
|
|
30
|
+
*/
|
|
31
|
+
export const PreviewCardViewport = /*#__PURE__*/React.forwardRef(function PreviewCardViewport(componentProps, forwardedRef) {
|
|
32
|
+
const {
|
|
33
|
+
render,
|
|
34
|
+
className,
|
|
35
|
+
children,
|
|
36
|
+
...elementProps
|
|
37
|
+
} = componentProps;
|
|
38
|
+
const store = usePreviewCardRootContext();
|
|
39
|
+
const positioner = usePreviewCardPositionerContext();
|
|
40
|
+
const direction = useDirection();
|
|
41
|
+
const activeTrigger = store.useState('activeTriggerElement');
|
|
42
|
+
const activeTriggerId = store.useState('activeTriggerId');
|
|
43
|
+
const payload = store.useState('payload');
|
|
44
|
+
const open = store.useState('open');
|
|
45
|
+
const instantType = store.useState('instantType');
|
|
46
|
+
const mounted = store.useState('mounted');
|
|
47
|
+
const popupElement = store.useState('popupElement');
|
|
48
|
+
const positionerElement = store.useState('positionerElement');
|
|
49
|
+
const previousActiveTrigger = usePreviousValue(open ? activeTrigger : null);
|
|
50
|
+
// Remount current content on trigger changes (and once more when payload lags) to avoid DOM reuse flashes.
|
|
51
|
+
// The key bumps immediately on trigger switches, then again if the payload arrives on a later render.
|
|
52
|
+
const currentContentKey = usePopupContentKey(activeTriggerId, payload);
|
|
53
|
+
const capturedNodeRef = React.useRef(null);
|
|
54
|
+
const [previousContentNode, setPreviousContentNode] = React.useState(null);
|
|
55
|
+
const [newTriggerOffset, setNewTriggerOffset] = React.useState(null);
|
|
56
|
+
const currentContainerRef = React.useRef(null);
|
|
57
|
+
const previousContainerRef = React.useRef(null);
|
|
58
|
+
const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true, false);
|
|
59
|
+
const cleanupFrame = useAnimationFrame();
|
|
60
|
+
const [previousContentDimensions, setPreviousContentDimensions] = React.useState(null);
|
|
61
|
+
const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React.useState(false);
|
|
62
|
+
useIsoLayoutEffect(() => {
|
|
63
|
+
store.set('hasViewport', true);
|
|
64
|
+
return () => {
|
|
65
|
+
store.set('hasViewport', false);
|
|
66
|
+
};
|
|
67
|
+
}, [store]);
|
|
68
|
+
const handleMeasureLayout = useStableCallback(() => {
|
|
69
|
+
currentContainerRef.current?.style.setProperty('animation', 'none');
|
|
70
|
+
currentContainerRef.current?.style.setProperty('transition', 'none');
|
|
71
|
+
previousContainerRef.current?.style.setProperty('display', 'none');
|
|
72
|
+
});
|
|
73
|
+
const handleMeasureLayoutComplete = useStableCallback(previousDimensions => {
|
|
74
|
+
currentContainerRef.current?.style.removeProperty('animation');
|
|
75
|
+
currentContainerRef.current?.style.removeProperty('transition');
|
|
76
|
+
previousContainerRef.current?.style.removeProperty('display');
|
|
77
|
+
if (previousDimensions) {
|
|
78
|
+
setPreviousContentDimensions(previousDimensions);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
const lastHandledTriggerRef = React.useRef(null);
|
|
82
|
+
useIsoLayoutEffect(() => {
|
|
83
|
+
// When a trigger changes, set the captured children HTML to state,
|
|
84
|
+
// so we can render both new and old content.
|
|
85
|
+
if (activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) {
|
|
86
|
+
setPreviousContentNode(capturedNodeRef.current);
|
|
87
|
+
setShowStartingStyleAttribute(true);
|
|
88
|
+
|
|
89
|
+
// Calculate the relative position between the previous and new trigger,
|
|
90
|
+
// so we can pass it to the style hook for animation purposes.
|
|
91
|
+
const offset = calculateRelativePosition(previousActiveTrigger, activeTrigger);
|
|
92
|
+
setNewTriggerOffset(offset);
|
|
93
|
+
cleanupFrame.request(() => {
|
|
94
|
+
cleanupFrame.request(() => {
|
|
95
|
+
setShowStartingStyleAttribute(false);
|
|
96
|
+
onAnimationsFinished(() => {
|
|
97
|
+
setPreviousContentNode(null);
|
|
98
|
+
setPreviousContentDimensions(null);
|
|
99
|
+
capturedNodeRef.current = null;
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
lastHandledTriggerRef.current = activeTrigger;
|
|
104
|
+
}
|
|
105
|
+
}, [activeTrigger, previousActiveTrigger, previousContentNode, onAnimationsFinished, cleanupFrame]);
|
|
106
|
+
|
|
107
|
+
// Capture a clone of the current content DOM subtree when not transitioning.
|
|
108
|
+
// We can't store previous React nodes as they may be stateful; instead we capture DOM clones for visual continuity.
|
|
109
|
+
useIsoLayoutEffect(() => {
|
|
110
|
+
// When a transition is in progress, we store the next content in capturedNodeRef.
|
|
111
|
+
// This handles the case where the trigger changes multiple times before the transition finishes.
|
|
112
|
+
// We want to always capture the latest content for the previous snapshot.
|
|
113
|
+
// So clicking quickly on T1, T2, T3 will result in the following sequence:
|
|
114
|
+
// 1. T1 -> T2: previousContent = T1, currentContent = T2
|
|
115
|
+
// 2. T2 -> T3: previousContent = T2, currentContent = T3
|
|
116
|
+
const source = currentContainerRef.current;
|
|
117
|
+
if (!source) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const wrapper = document.createElement('div');
|
|
121
|
+
for (const child of Array.from(source.childNodes)) {
|
|
122
|
+
wrapper.appendChild(child.cloneNode(true));
|
|
123
|
+
}
|
|
124
|
+
capturedNodeRef.current = wrapper;
|
|
125
|
+
});
|
|
126
|
+
const isTransitioning = previousContentNode != null;
|
|
127
|
+
let childrenToRender;
|
|
128
|
+
if (!isTransitioning) {
|
|
129
|
+
childrenToRender = /*#__PURE__*/_jsx("div", {
|
|
130
|
+
"data-current": true,
|
|
131
|
+
ref: currentContainerRef,
|
|
132
|
+
children: children
|
|
133
|
+
}, currentContentKey);
|
|
134
|
+
} else {
|
|
135
|
+
childrenToRender = /*#__PURE__*/_jsxs(React.Fragment, {
|
|
136
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
137
|
+
"data-previous": true,
|
|
138
|
+
inert: inertValue(true),
|
|
139
|
+
ref: previousContainerRef,
|
|
140
|
+
style: {
|
|
141
|
+
[PreviewCardViewportCssVars.popupWidth]: `${previousContentDimensions?.width}px`,
|
|
142
|
+
[PreviewCardViewportCssVars.popupHeight]: `${previousContentDimensions?.height}px`,
|
|
143
|
+
position: 'absolute'
|
|
144
|
+
},
|
|
145
|
+
"data-ending-style": showStartingStyleAttribute ? undefined : ''
|
|
146
|
+
}, 'previous'), /*#__PURE__*/_jsx("div", {
|
|
147
|
+
"data-current": true,
|
|
148
|
+
ref: currentContainerRef,
|
|
149
|
+
"data-starting-style": showStartingStyleAttribute ? '' : undefined,
|
|
150
|
+
children: children
|
|
151
|
+
}, currentContentKey)]
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// When previousContentNode is present, imperatively populate the previous container with the cloned children.
|
|
156
|
+
useIsoLayoutEffect(() => {
|
|
157
|
+
const container = previousContainerRef.current;
|
|
158
|
+
if (!container || !previousContentNode) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
container.replaceChildren(...Array.from(previousContentNode.childNodes));
|
|
162
|
+
}, [previousContentNode]);
|
|
163
|
+
usePopupAutoResize({
|
|
164
|
+
popupElement,
|
|
165
|
+
positionerElement,
|
|
166
|
+
mounted,
|
|
167
|
+
content: payload,
|
|
168
|
+
onMeasureLayout: handleMeasureLayout,
|
|
169
|
+
onMeasureLayoutComplete: handleMeasureLayoutComplete,
|
|
170
|
+
side: positioner.side,
|
|
171
|
+
direction
|
|
172
|
+
});
|
|
173
|
+
const state = React.useMemo(() => {
|
|
174
|
+
return {
|
|
175
|
+
activationDirection: getActivationDirection(newTriggerOffset),
|
|
176
|
+
transitioning: isTransitioning,
|
|
177
|
+
instant: instantType
|
|
178
|
+
};
|
|
179
|
+
}, [newTriggerOffset, isTransitioning, instantType]);
|
|
180
|
+
return useRenderElement('div', componentProps, {
|
|
181
|
+
state,
|
|
182
|
+
ref: forwardedRef,
|
|
183
|
+
props: [elementProps, {
|
|
184
|
+
children: childrenToRender
|
|
185
|
+
}],
|
|
186
|
+
stateAttributesMapping
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
if (process.env.NODE_ENV !== "production") PreviewCardViewport.displayName = "PreviewCardViewport";
|
|
190
|
+
/**
|
|
191
|
+
* Returns a string describing the provided offset.
|
|
192
|
+
* It describes both the horizontal and vertical offset, separated by a space.
|
|
193
|
+
*
|
|
194
|
+
* @param offset
|
|
195
|
+
*/
|
|
196
|
+
function getActivationDirection(offset) {
|
|
197
|
+
if (!offset) {
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
200
|
+
return `${getValueWithTolerance(offset.horizontal, 5, 'right', 'left')} ${getValueWithTolerance(offset.vertical, 5, 'down', 'up')}`;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Returns a label describing the value (positive/negative) treating values
|
|
205
|
+
* within tolerance as zero.
|
|
206
|
+
*
|
|
207
|
+
* @param value Value to check
|
|
208
|
+
* @param tolerance Tolerance to treat the value as zero.
|
|
209
|
+
* @param positiveLabel
|
|
210
|
+
* @param negativeLabel
|
|
211
|
+
* @returns If 0 < abs(value) < tolerance, returns an empty string. Otherwise returns positiveLabel or negativeLabel.
|
|
212
|
+
*/
|
|
213
|
+
function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) {
|
|
214
|
+
if (value > tolerance) {
|
|
215
|
+
return positiveLabel;
|
|
216
|
+
}
|
|
217
|
+
if (value < -tolerance) {
|
|
218
|
+
return negativeLabel;
|
|
219
|
+
}
|
|
220
|
+
return '';
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Calculates the relative position between centers of two elements.
|
|
225
|
+
*/
|
|
226
|
+
function calculateRelativePosition(from, to) {
|
|
227
|
+
const fromRect = from.getBoundingClientRect();
|
|
228
|
+
const toRect = to.getBoundingClientRect();
|
|
229
|
+
const fromCenter = {
|
|
230
|
+
x: fromRect.left + fromRect.width / 2,
|
|
231
|
+
y: fromRect.top + fromRect.height / 2
|
|
232
|
+
};
|
|
233
|
+
const toCenter = {
|
|
234
|
+
x: toRect.left + toRect.width / 2,
|
|
235
|
+
y: toRect.top + toRect.height / 2
|
|
236
|
+
};
|
|
237
|
+
return {
|
|
238
|
+
horizontal: toCenter.x - fromCenter.x,
|
|
239
|
+
vertical: toCenter.y - fromCenter.y
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Returns a key that forces remounting content when triggers change or a payload is updated.
|
|
245
|
+
*/
|
|
246
|
+
function usePopupContentKey(activeTriggerId, payload) {
|
|
247
|
+
const [contentKey, setContentKey] = React.useState(0);
|
|
248
|
+
const previousActiveTriggerIdRef = React.useRef(activeTriggerId);
|
|
249
|
+
const previousPayloadRef = React.useRef(payload);
|
|
250
|
+
const pendingPayloadUpdateRef = React.useRef(false);
|
|
251
|
+
useIsoLayoutEffect(() => {
|
|
252
|
+
// Compare against the last committed values to decide whether we need a new DOM subtree.
|
|
253
|
+
const previousActiveTriggerId = previousActiveTriggerIdRef.current;
|
|
254
|
+
const previousPayload = previousPayloadRef.current;
|
|
255
|
+
const triggerIdChanged = activeTriggerId !== previousActiveTriggerId;
|
|
256
|
+
const payloadChanged = payload !== previousPayload;
|
|
257
|
+
if (triggerIdChanged) {
|
|
258
|
+
// Remount immediately on trigger change; remember if payload hasn't caught up yet.
|
|
259
|
+
setContentKey(value => value + 1);
|
|
260
|
+
pendingPayloadUpdateRef.current = !payloadChanged;
|
|
261
|
+
} else if (pendingPayloadUpdateRef.current && payloadChanged) {
|
|
262
|
+
// Payload arrived a render later, so remount once more to avoid reusing the old <img>.
|
|
263
|
+
setContentKey(value => value + 1);
|
|
264
|
+
pendingPayloadUpdateRef.current = false;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// Persist current values for the next render's comparison.
|
|
268
|
+
previousActiveTriggerIdRef.current = activeTriggerId;
|
|
269
|
+
previousPayloadRef.current = payload;
|
|
270
|
+
}, [activeTriggerId, payload]);
|
|
271
|
+
return `${activeTriggerId ?? 'current'}-${contentKey}`;
|
|
272
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare enum PreviewCardViewportCssVars {
|
|
2
|
+
/**
|
|
3
|
+
* The width of the parent popup.
|
|
4
|
+
* This variable is placed on the 'previous' container and stores the width of the popup when the previous content was rendered.
|
|
5
|
+
* It can be used to freeze the dimensions of the popup when animating between different content.
|
|
6
|
+
*/
|
|
7
|
+
popupWidth = "--popup-width",
|
|
8
|
+
/**
|
|
9
|
+
* The height of the parent popup.
|
|
10
|
+
* This variable is placed on the 'previous' container and stores the height of the popup when the previous content was rendered.
|
|
11
|
+
* It can be used to freeze the dimensions of the popup when animating between different content.
|
|
12
|
+
*/
|
|
13
|
+
popupHeight = "--popup-height",
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export let PreviewCardViewportCssVars = /*#__PURE__*/function (PreviewCardViewportCssVars) {
|
|
2
|
+
/**
|
|
3
|
+
* The width of the parent popup.
|
|
4
|
+
* This variable is placed on the 'previous' container and stores the width of the popup when the previous content was rendered.
|
|
5
|
+
* It can be used to freeze the dimensions of the popup when animating between different content.
|
|
6
|
+
*/
|
|
7
|
+
PreviewCardViewportCssVars["popupWidth"] = "--popup-width";
|
|
8
|
+
/**
|
|
9
|
+
* The height of the parent popup.
|
|
10
|
+
* This variable is placed on the 'previous' container and stores the height of the popup when the previous content was rendered.
|
|
11
|
+
* It can be used to freeze the dimensions of the popup when animating between different content.
|
|
12
|
+
*/
|
|
13
|
+
PreviewCardViewportCssVars["popupHeight"] = "--popup-height";
|
|
14
|
+
return PreviewCardViewportCssVars;
|
|
15
|
+
}({});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare enum PreviewCardViewportDataAttributes {
|
|
2
|
+
/**
|
|
3
|
+
* Applied to the direct child of the viewport when no transitions are present or the new content when it's entering.
|
|
4
|
+
*/
|
|
5
|
+
current = "data-current",
|
|
6
|
+
/**
|
|
7
|
+
* Applied to the direct child of the viewport that contains the exiting content when transitions are present.
|
|
8
|
+
*/
|
|
9
|
+
previous = "data-previous",
|
|
10
|
+
/**
|
|
11
|
+
* Indicates the direction from which the popup was activated.
|
|
12
|
+
* This can be used to create directional animations based on how the popup was triggered.
|
|
13
|
+
* Contains space-separated values for both horizontal and vertical axes.
|
|
14
|
+
* @type {`${'left' | 'right'} {'top' | 'bottom'}`}
|
|
15
|
+
*/
|
|
16
|
+
activationDirection = "data-activation-direction",
|
|
17
|
+
/**
|
|
18
|
+
* Indicates that the viewport is currently transitioning between old and new content.
|
|
19
|
+
*/
|
|
20
|
+
transitioning = "data-transitioning",
|
|
21
|
+
/**
|
|
22
|
+
* Present if animations should be instant.
|
|
23
|
+
* @type {'delay' | 'dismiss' | 'focus'}
|
|
24
|
+
*/
|
|
25
|
+
instant = "data-instant",
|
|
26
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export let PreviewCardViewportDataAttributes = /*#__PURE__*/function (PreviewCardViewportDataAttributes) {
|
|
2
|
+
/**
|
|
3
|
+
* Applied to the direct child of the viewport when no transitions are present or the new content when it's entering.
|
|
4
|
+
*/
|
|
5
|
+
PreviewCardViewportDataAttributes["current"] = "data-current";
|
|
6
|
+
/**
|
|
7
|
+
* Applied to the direct child of the viewport that contains the exiting content when transitions are present.
|
|
8
|
+
*/
|
|
9
|
+
PreviewCardViewportDataAttributes["previous"] = "data-previous";
|
|
10
|
+
/**
|
|
11
|
+
* Indicates the direction from which the popup was activated.
|
|
12
|
+
* This can be used to create directional animations based on how the popup was triggered.
|
|
13
|
+
* Contains space-separated values for both horizontal and vertical axes.
|
|
14
|
+
* @type {`${'left' | 'right'} {'top' | 'bottom'}`}
|
|
15
|
+
*/
|
|
16
|
+
PreviewCardViewportDataAttributes["activationDirection"] = "data-activation-direction";
|
|
17
|
+
/**
|
|
18
|
+
* Indicates that the viewport is currently transitioning between old and new content.
|
|
19
|
+
*/
|
|
20
|
+
PreviewCardViewportDataAttributes["transitioning"] = "data-transitioning";
|
|
21
|
+
/**
|
|
22
|
+
* Present if animations should be instant.
|
|
23
|
+
* @type {'delay' | 'dismiss' | 'focus'}
|
|
24
|
+
*/
|
|
25
|
+
PreviewCardViewportDataAttributes["instant"] = "data-instant";
|
|
26
|
+
return PreviewCardViewportDataAttributes;
|
|
27
|
+
}({});
|
|
@@ -7,7 +7,7 @@ import type { BaseUIComponentProps } from "../../utils/types.js";
|
|
|
7
7
|
*
|
|
8
8
|
* Documentation: [Base UI Progress](https://base-ui.com/react/components/progress)
|
|
9
9
|
*/
|
|
10
|
-
export declare const ProgressIndicator: React.ForwardRefExoticComponent<ProgressIndicatorProps & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
export declare const ProgressIndicator: React.ForwardRefExoticComponent<Omit<ProgressIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
11
|
export interface ProgressIndicatorProps extends BaseUIComponentProps<'div', ProgressRoot.State> {}
|
|
12
12
|
export declare namespace ProgressIndicator {
|
|
13
13
|
type Props = ProgressIndicatorProps;
|
|
@@ -7,7 +7,7 @@ import type { BaseUIComponentProps } from "../../utils/types.js";
|
|
|
7
7
|
*
|
|
8
8
|
* Documentation: [Base UI Progress](https://base-ui.com/react/components/progress)
|
|
9
9
|
*/
|
|
10
|
-
export declare const ProgressLabel: React.ForwardRefExoticComponent<ProgressLabelProps & React.RefAttributes<HTMLSpanElement>>;
|
|
10
|
+
export declare const ProgressLabel: React.ForwardRefExoticComponent<Omit<ProgressLabelProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
11
11
|
export interface ProgressLabelProps extends BaseUIComponentProps<'span', ProgressRoot.State> {}
|
|
12
12
|
export declare namespace ProgressLabel {
|
|
13
13
|
type Props = ProgressLabelProps;
|
|
@@ -6,7 +6,7 @@ import { BaseUIComponentProps } from "../../utils/types.js";
|
|
|
6
6
|
*
|
|
7
7
|
* Documentation: [Base UI Progress](https://base-ui.com/react/components/progress)
|
|
8
8
|
*/
|
|
9
|
-
export declare const ProgressRoot: React.ForwardRefExoticComponent<ProgressRootProps & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
export declare const ProgressRoot: React.ForwardRefExoticComponent<Omit<ProgressRootProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
10
10
|
export type ProgressStatus = 'indeterminate' | 'progressing' | 'complete';
|
|
11
11
|
export interface ProgressRootState {
|
|
12
12
|
status: ProgressStatus;
|
|
@@ -7,7 +7,7 @@ import type { BaseUIComponentProps } from "../../utils/types.js";
|
|
|
7
7
|
*
|
|
8
8
|
* Documentation: [Base UI Progress](https://base-ui.com/react/components/progress)
|
|
9
9
|
*/
|
|
10
|
-
export declare const ProgressTrack: React.ForwardRefExoticComponent<ProgressTrackProps & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
export declare const ProgressTrack: React.ForwardRefExoticComponent<Omit<ProgressTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
11
|
export interface ProgressTrackProps extends BaseUIComponentProps<'div', ProgressRoot.State> {}
|
|
12
12
|
export declare namespace ProgressTrack {
|
|
13
13
|
type Props = ProgressTrackProps;
|
|
@@ -7,7 +7,7 @@ import type { ProgressRoot } from "../root/ProgressRoot.js";
|
|
|
7
7
|
*
|
|
8
8
|
* Documentation: [Base UI Progress](https://base-ui.com/react/components/progress)
|
|
9
9
|
*/
|
|
10
|
-
export declare const ProgressValue: React.ForwardRefExoticComponent<ProgressValueProps & React.RefAttributes<HTMLSpanElement>>;
|
|
10
|
+
export declare const ProgressValue: React.ForwardRefExoticComponent<Omit<ProgressValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
11
11
|
export interface ProgressValueProps extends Omit<BaseUIComponentProps<'span', ProgressRoot.State>, 'children'> {
|
|
12
12
|
children?: null | ((formattedValue: string | null, value: number | null) => React.ReactNode);
|
|
13
13
|
}
|
|
@@ -7,7 +7,7 @@ import { type TransitionStatus } from "../../utils/useTransitionStatus.js";
|
|
|
7
7
|
*
|
|
8
8
|
* Documentation: [Base UI Radio](https://base-ui.com/react/components/radio)
|
|
9
9
|
*/
|
|
10
|
-
export declare const RadioIndicator: React.ForwardRefExoticComponent<RadioIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
|
|
10
|
+
export declare const RadioIndicator: React.ForwardRefExoticComponent<Omit<RadioIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
11
11
|
export interface RadioIndicatorProps extends BaseUIComponentProps<'span', RadioIndicator.State> {
|
|
12
12
|
/**
|
|
13
13
|
* Whether to keep the HTML element in the DOM when the radio button is inactive.
|
|
@@ -7,7 +7,7 @@ import type { FieldRoot } from "../../field/root/FieldRoot.js";
|
|
|
7
7
|
*
|
|
8
8
|
* Documentation: [Base UI Radio](https://base-ui.com/react/components/radio)
|
|
9
9
|
*/
|
|
10
|
-
export declare const RadioRoot: React.ForwardRefExoticComponent<RadioRootProps & React.RefAttributes<HTMLElement>>;
|
|
10
|
+
export declare const RadioRoot: React.ForwardRefExoticComponent<Omit<RadioRootProps, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
11
11
|
export interface RadioRootState extends FieldRoot.State {
|
|
12
12
|
/** Whether the radio button is currently selected. */
|
|
13
13
|
checked: boolean;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { useMergedRefs } from '@base-ui/utils/useMergedRefs';
|
|
5
5
|
import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';
|
|
6
|
-
import { visuallyHidden } from '@base-ui/utils/visuallyHidden';
|
|
6
|
+
import { visuallyHidden, visuallyHiddenInput } from '@base-ui/utils/visuallyHidden';
|
|
7
7
|
import { createChangeEventDetails } from "../../utils/createBaseUIEventDetails.js";
|
|
8
8
|
import { REASONS } from "../../utils/reasons.js";
|
|
9
9
|
import { EMPTY_OBJECT } from "../../utils/constants.js";
|
|
@@ -50,7 +50,8 @@ export const RadioRoot = /*#__PURE__*/React.forwardRef(function RadioRoot(compon
|
|
|
50
50
|
touched,
|
|
51
51
|
setTouched,
|
|
52
52
|
validation,
|
|
53
|
-
registerControlRef
|
|
53
|
+
registerControlRef,
|
|
54
|
+
name
|
|
54
55
|
} = useRadioGroupContext();
|
|
55
56
|
const {
|
|
56
57
|
setDirty,
|
|
@@ -83,16 +84,15 @@ export const RadioRoot = /*#__PURE__*/React.forwardRef(function RadioRoot(compon
|
|
|
83
84
|
implicit: false,
|
|
84
85
|
controlRef: radioRef
|
|
85
86
|
});
|
|
87
|
+
const hiddenInputId = nativeButton ? undefined : inputId;
|
|
86
88
|
const rootProps = {
|
|
87
89
|
role: 'radio',
|
|
88
90
|
'aria-checked': checked,
|
|
89
91
|
'aria-required': required || undefined,
|
|
90
|
-
'aria-disabled': disabled || undefined,
|
|
91
92
|
'aria-readonly': readOnly || undefined,
|
|
92
93
|
'aria-labelledby': labelId,
|
|
93
94
|
[ACTIVE_COMPOSITE_ITEM]: checked ? '' : undefined,
|
|
94
|
-
id,
|
|
95
|
-
disabled,
|
|
95
|
+
id: nativeButton ? inputId : id,
|
|
96
96
|
onKeyDown(event) {
|
|
97
97
|
if (event.key === 'Enter') {
|
|
98
98
|
event.preventDefault();
|
|
@@ -120,12 +120,12 @@ export const RadioRoot = /*#__PURE__*/React.forwardRef(function RadioRoot(compon
|
|
|
120
120
|
disabled,
|
|
121
121
|
native: nativeButton
|
|
122
122
|
});
|
|
123
|
-
const inputProps =
|
|
123
|
+
const inputProps = {
|
|
124
124
|
type: 'radio',
|
|
125
125
|
ref: mergedInputRef,
|
|
126
|
-
id:
|
|
126
|
+
id: hiddenInputId,
|
|
127
127
|
tabIndex: -1,
|
|
128
|
-
style: visuallyHidden,
|
|
128
|
+
style: name ? visuallyHiddenInput : visuallyHidden,
|
|
129
129
|
'aria-hidden': true,
|
|
130
130
|
disabled,
|
|
131
131
|
checked,
|
|
@@ -151,7 +151,7 @@ export const RadioRoot = /*#__PURE__*/React.forwardRef(function RadioRoot(compon
|
|
|
151
151
|
onFocus() {
|
|
152
152
|
radioRef.current?.focus();
|
|
153
153
|
}
|
|
154
|
-
}
|
|
154
|
+
};
|
|
155
155
|
const state = React.useMemo(() => ({
|
|
156
156
|
...fieldState,
|
|
157
157
|
required,
|
|
@@ -9,7 +9,7 @@ import { REASONS } from "../utils/reasons.js";
|
|
|
9
9
|
*
|
|
10
10
|
* Documentation: [Base UI Radio Group](https://base-ui.com/react/components/radio)
|
|
11
11
|
*/
|
|
12
|
-
export declare const RadioGroup: React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
export declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
13
|
export interface RadioGroupState extends FieldRoot.State {
|
|
14
14
|
/**
|
|
15
15
|
* Whether the user should be unable to select a different radio button in the group.
|
|
@@ -41,17 +41,17 @@ export interface RadioGroupProps extends Omit<BaseUIComponentProps<'div', RadioG
|
|
|
41
41
|
*
|
|
42
42
|
* To render an uncontrolled radio group, use the `defaultValue` prop instead.
|
|
43
43
|
*/
|
|
44
|
-
value?:
|
|
44
|
+
value?: any;
|
|
45
45
|
/**
|
|
46
46
|
* The uncontrolled value of the radio button that should be initially selected.
|
|
47
47
|
*
|
|
48
48
|
* To render a controlled radio group, use the `value` prop instead.
|
|
49
49
|
*/
|
|
50
|
-
defaultValue?:
|
|
50
|
+
defaultValue?: any;
|
|
51
51
|
/**
|
|
52
52
|
* Callback fired when the value changes.
|
|
53
53
|
*/
|
|
54
|
-
onValueChange?: (value:
|
|
54
|
+
onValueChange?: (value: any, eventDetails: RadioGroup.ChangeEventDetails) => void;
|
|
55
55
|
/**
|
|
56
56
|
* A ref to access the hidden input element.
|
|
57
57
|
*/
|
|
@@ -4,7 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import { useControlled } from '@base-ui/utils/useControlled';
|
|
5
5
|
import { useMergedRefs } from '@base-ui/utils/useMergedRefs';
|
|
6
6
|
import { useStableCallback } from '@base-ui/utils/useStableCallback';
|
|
7
|
-
import { visuallyHidden } from '@base-ui/utils/visuallyHidden';
|
|
7
|
+
import { visuallyHidden, visuallyHiddenInput } from '@base-ui/utils/visuallyHidden';
|
|
8
8
|
import { NOOP } from "../utils/noop.js";
|
|
9
9
|
import { useBaseUiId } from "../utils/useBaseUiId.js";
|
|
10
10
|
import { contains } from "../floating-ui-react/utils.js";
|
|
@@ -142,7 +142,7 @@ export const RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(comp
|
|
|
142
142
|
'aria-labelledby': elementProps['aria-labelledby'] ?? fieldsetContext?.legendId,
|
|
143
143
|
'aria-hidden': true,
|
|
144
144
|
tabIndex: -1,
|
|
145
|
-
style: visuallyHidden,
|
|
145
|
+
style: name ? visuallyHiddenInput : visuallyHidden,
|
|
146
146
|
onChange: NOOP,
|
|
147
147
|
// suppress a Next.js error
|
|
148
148
|
onFocus() {
|
|
@@ -7,7 +7,7 @@ import type { ScrollAreaRoot } from "../root/ScrollAreaRoot.js";
|
|
|
7
7
|
*
|
|
8
8
|
* Documentation: [Base UI Scroll Area](https://base-ui.com/react/components/scroll-area)
|
|
9
9
|
*/
|
|
10
|
-
export declare const ScrollAreaContent: React.ForwardRefExoticComponent<ScrollAreaContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
export declare const ScrollAreaContent: React.ForwardRefExoticComponent<Omit<ScrollAreaContentProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
11
|
export interface ScrollAreaContentState extends ScrollAreaRoot.State {}
|
|
12
12
|
export interface ScrollAreaContentProps extends BaseUIComponentProps<'div', ScrollAreaContent.State> {}
|
|
13
13
|
export declare namespace ScrollAreaContent {
|
|
@@ -29,7 +29,16 @@ export const ScrollAreaContent = /*#__PURE__*/React.forwardRef(function ScrollAr
|
|
|
29
29
|
if (typeof ResizeObserver === 'undefined') {
|
|
30
30
|
return undefined;
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
let hasInitialized = false;
|
|
33
|
+
const ro = new ResizeObserver(() => {
|
|
34
|
+
// ResizeObserver fires once upon observing, so we skip the initial call
|
|
35
|
+
// to avoid double-calculating the thumb position on mount.
|
|
36
|
+
if (!hasInitialized) {
|
|
37
|
+
hasInitialized = true;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
computeThumbPosition();
|
|
41
|
+
});
|
|
33
42
|
if (contentWrapperRef.current) {
|
|
34
43
|
ro.observe(contentWrapperRef.current);
|
|
35
44
|
}
|
|
@@ -6,7 +6,7 @@ import type { BaseUIComponentProps } from "../../utils/types.js";
|
|
|
6
6
|
*
|
|
7
7
|
* Documentation: [Base UI Scroll Area](https://base-ui.com/react/components/scroll-area)
|
|
8
8
|
*/
|
|
9
|
-
export declare const ScrollAreaCorner: React.ForwardRefExoticComponent<ScrollAreaCornerProps & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
export declare const ScrollAreaCorner: React.ForwardRefExoticComponent<Omit<ScrollAreaCornerProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
10
10
|
export interface ScrollAreaCornerState {}
|
|
11
11
|
export interface ScrollAreaCornerProps extends BaseUIComponentProps<'div', ScrollAreaCorner.State> {}
|
|
12
12
|
export declare namespace ScrollAreaCorner {
|
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { BaseUIComponentProps } from "../../utils/types.js";
|
|
3
|
+
declare const DEFAULT_COORDS: {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
};
|
|
7
|
+
declare const DEFAULT_SIZE: {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
};
|
|
11
|
+
declare const DEFAULT_OVERFLOW_EDGES: {
|
|
12
|
+
xStart: boolean;
|
|
13
|
+
xEnd: boolean;
|
|
14
|
+
yStart: boolean;
|
|
15
|
+
yEnd: boolean;
|
|
16
|
+
};
|
|
17
|
+
declare const DEFAULT_HIDDEN_STATE: {
|
|
18
|
+
x: boolean;
|
|
19
|
+
y: boolean;
|
|
20
|
+
corner: boolean;
|
|
21
|
+
};
|
|
22
|
+
export type HiddenState = typeof DEFAULT_HIDDEN_STATE;
|
|
23
|
+
export type OverflowEdges = typeof DEFAULT_OVERFLOW_EDGES;
|
|
24
|
+
export type Size = typeof DEFAULT_SIZE;
|
|
25
|
+
export type Coords = typeof DEFAULT_COORDS;
|
|
3
26
|
/**
|
|
4
27
|
* Groups all parts of the scroll area.
|
|
5
28
|
* Renders a `<div>` element.
|
|
6
29
|
*
|
|
7
30
|
* Documentation: [Base UI Scroll Area](https://base-ui.com/react/components/scroll-area)
|
|
8
31
|
*/
|
|
9
|
-
export declare const ScrollAreaRoot: React.ForwardRefExoticComponent<ScrollAreaRootProps & React.RefAttributes<HTMLDivElement>>;
|
|
32
|
+
export declare const ScrollAreaRoot: React.ForwardRefExoticComponent<Omit<ScrollAreaRootProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
10
33
|
export interface ScrollAreaRootState {
|
|
11
34
|
/** Whether horizontal overflow is present. */
|
|
12
35
|
hasOverflowX: boolean;
|
|
@@ -39,4 +62,5 @@ export interface ScrollAreaRootProps extends BaseUIComponentProps<'div', ScrollA
|
|
|
39
62
|
export declare namespace ScrollAreaRoot {
|
|
40
63
|
type State = ScrollAreaRootState;
|
|
41
64
|
type Props = ScrollAreaRootProps;
|
|
42
|
-
}
|
|
65
|
+
}
|
|
66
|
+
export {};
|