@astryxdesign/core 0.7.7-canary.550ff21 → 0.7.7-canary.58c5b8a
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/dist/AlertDialog/AlertDialog.d.ts +4 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +36 -6
- package/dist/AppShell/useCloseMobileDrawerOnActivate.d.ts +13 -0
- package/dist/AppShell/useCloseMobileDrawerOnActivate.d.ts.map +1 -0
- package/dist/AppShell/useCloseMobileDrawerOnActivate.js +45 -0
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +1 -1
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +79 -9
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +23 -4
- package/dist/BottomSheet/bottomSheetStack.d.ts.map +1 -1
- package/dist/BottomSheet/bottomSheetStack.js +5 -4
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +3 -1
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +2 -1
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +9 -4
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +50 -5
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +7 -1
- package/dist/CheckboxList/CheckboxListContext.d.ts +6 -0
- package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +10 -2
- package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +14 -4
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +5 -2
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +13 -27
- package/dist/DateInput/Wheel.d.ts +17 -1
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +161 -20
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +63 -49
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +5 -2
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +53 -15
- package/dist/Drawer/Drawer.d.ts.map +1 -1
- package/dist/Drawer/Drawer.js +15 -11
- package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
- package/dist/Drawer/useDrawerDialogPresence.js +9 -1
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +20 -4
- package/dist/Field/Field.js +2 -2
- package/dist/Field/PanelSearchInput.d.ts +9 -1
- package/dist/Field/PanelSearchInput.d.ts.map +1 -1
- package/dist/Field/PanelSearchInput.js +3 -1
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +27 -2
- package/dist/Icon/Icon.d.ts +5 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +5 -2
- package/dist/InfoTip/InfoTip.d.ts +63 -0
- package/dist/InfoTip/InfoTip.d.ts.map +1 -0
- package/dist/InfoTip/InfoTip.js +126 -0
- package/dist/InfoTip/index.d.ts +10 -0
- package/dist/InfoTip/index.d.ts.map +1 -0
- package/dist/InfoTip/index.js +12 -0
- package/dist/Layer/layerAnimations.stylex.d.ts +7 -8
- package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +25 -20
- package/dist/Layer/layerClickBoundary.d.ts +7 -1
- package/dist/Layer/layerClickBoundary.d.ts.map +1 -1
- package/dist/Layer/layerClickBoundary.js +2 -2
- package/dist/Layer/useBackdropPress.d.ts +27 -0
- package/dist/Layer/useBackdropPress.d.ts.map +1 -0
- package/dist/Layer/useBackdropPress.js +53 -0
- package/dist/Layer/usePressPin.d.ts +105 -0
- package/dist/Layer/usePressPin.d.ts.map +1 -0
- package/dist/Layer/usePressPin.js +413 -0
- package/dist/Layer/useTouchTrigger.d.ts +23 -1
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +45 -7
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +2 -1
- package/dist/MobileNav/MobileNav.js +0 -1
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +2 -4
- package/dist/Outline/Outline.d.ts +2 -4
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +4 -52
- package/dist/Outline/useOutlineFromMarkdown.d.ts.map +1 -1
- package/dist/Outline/useOutlineFromMarkdown.js +1 -0
- package/dist/Outline/useScrollSpy.js +3 -3
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +56 -7
- package/dist/PowerSearch/PowerSearch.d.ts +36 -3
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +571 -302
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +100 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.js +1913 -0
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +32 -1
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +17 -6
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +170 -61
- package/dist/PowerSearch/formatFilterValue.d.ts +7 -0
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +11 -1
- package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
- package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
- package/dist/PowerSearch/formatTokenValue.js +160 -0
- package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
- package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
- package/dist/ProgressBar/ProgressBar.d.ts +1 -1
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +33 -6
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +8 -2
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +5 -3
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +118 -260
- package/dist/Resizable/resizeGesture.d.ts +91 -0
- package/dist/Resizable/resizeGesture.d.ts.map +1 -0
- package/dist/Resizable/resizeGesture.js +251 -0
- package/dist/SegmentedControl/SegmentedControl.d.ts +3 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +115 -8
- package/dist/SegmentedControl/SegmentedControlContext.d.ts +6 -0
- package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -0
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +10 -2
- package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts +357 -0
- package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -0
- package/dist/SegmentedControl/useSegmentedSelectionMotion.js +1349 -0
- package/dist/SegmentedControl/useSegmentedTouchTracking.d.ts +70 -0
- package/dist/SegmentedControl/useSegmentedTouchTracking.d.ts.map +1 -0
- package/dist/SegmentedControl/useSegmentedTouchTracking.js +264 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +96 -67
- package/dist/Selector/optionShape.d.ts +24 -0
- package/dist/Selector/optionShape.d.ts.map +1 -0
- package/dist/Selector/optionShape.js +48 -0
- package/dist/Selector/selectableOptionEntries.d.ts +20 -0
- package/dist/Selector/selectableOptionEntries.d.ts.map +1 -0
- package/dist/Selector/selectableOptionEntries.js +38 -0
- package/dist/Selector/utils.d.ts +2 -17
- package/dist/Selector/utils.d.ts.map +1 -1
- package/dist/Selector/utils.js +3 -51
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +3 -9
- package/dist/Slider/sliderTouchController.js +2 -2
- package/dist/Switch/Switch.d.ts +1 -1
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +200 -46
- package/dist/Switch/switchFill.d.ts +31 -0
- package/dist/Switch/switchFill.d.ts.map +1 -0
- package/dist/Switch/switchFill.js +88 -0
- package/dist/Switch/switchTouch.d.ts +74 -0
- package/dist/Switch/switchTouch.d.ts.map +1 -0
- package/dist/Switch/switchTouch.js +125 -0
- package/dist/Switch/useSwitchTouch.d.ts +276 -0
- package/dist/Switch/useSwitchTouch.d.ts.map +1 -0
- package/dist/Switch/useSwitchTouch.js +939 -0
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +4 -3
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +29 -8
- package/dist/TextInput/TextInput.d.ts +2 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +10 -7
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +5 -0
- package/dist/Token/Token.d.ts +2 -2
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +13 -4
- package/dist/Token/TokenNamingContext.d.ts +14 -0
- package/dist/Token/TokenNamingContext.d.ts.map +1 -0
- package/dist/Token/TokenNamingContext.js +23 -0
- package/dist/Tokenizer/Tokenizer.d.ts +46 -59
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +44 -60
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts +25 -28
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts.map +1 -1
- package/dist/Tokenizer/TokenizerBottomSheet.js +157 -54
- package/dist/Tokenizer/TokenizerItemRemovableContext.d.ts +3 -0
- package/dist/Tokenizer/TokenizerItemRemovableContext.d.ts.map +1 -0
- package/dist/Tokenizer/TokenizerItemRemovableContext.js +19 -0
- package/dist/Tooltip/Tooltip.d.ts +24 -5
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.js +29 -5
- package/dist/Tooltip/useTooltip.d.ts +48 -5
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +90 -20
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +4 -7
- package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +4 -7
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +4 -7
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +26 -15
- package/dist/animator/createAnimator.d.ts +98 -0
- package/dist/animator/createAnimator.d.ts.map +1 -0
- package/dist/animator/createAnimator.js +259 -0
- package/dist/astryx.css +142 -7
- package/dist/gestures/GestureHost.d.ts +27 -1
- package/dist/gestures/GestureHost.d.ts.map +1 -1
- package/dist/gestures/GestureHost.js +161 -22
- package/dist/gestures/PressTracker.d.ts +6 -0
- package/dist/gestures/PressTracker.d.ts.map +1 -1
- package/dist/gestures/PressTracker.js +3 -0
- package/dist/gestures/types.d.ts +6 -0
- package/dist/gestures/types.d.ts.map +1 -1
- package/dist/gestures/usePressTracker.d.ts.map +1 -1
- package/dist/gestures/usePressTracker.js +1 -0
- package/dist/gestures/wheelSegmenter.d.ts +14 -3
- package/dist/gestures/wheelSegmenter.d.ts.map +1 -1
- package/dist/gestures/wheelSegmenter.js +32 -8
- package/dist/hooks/actionGroupTracker.d.ts +7 -4
- package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
- package/dist/hooks/actionGroupTracker.js +19 -56
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/pressGroupContext.d.ts +6 -0
- package/dist/hooks/pressGroupContext.d.ts.map +1 -0
- package/dist/hooks/pressGroupContext.js +20 -0
- package/dist/hooks/useActionGroupTracking.d.ts +53 -0
- package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
- package/dist/hooks/useActionGroupTracking.js +174 -0
- package/dist/hooks/useAnimator.d.ts +41 -0
- package/dist/hooks/useAnimator.d.ts.map +1 -0
- package/dist/hooks/useAnimator.js +70 -0
- package/dist/hooks/useAttachment.d.ts +16 -8
- package/dist/hooks/useAttachment.d.ts.map +1 -1
- package/dist/hooks/useAttachment.js +35 -15
- package/dist/hooks/useFocusTrap.d.ts +15 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +13 -2
- package/dist/hooks/useHighlightedOptionScroll.d.ts +11 -1
- package/dist/hooks/useHighlightedOptionScroll.d.ts.map +1 -1
- package/dist/hooks/useHighlightedOptionScroll.js +112 -11
- package/dist/hooks/useInputStatusIcon.d.ts +1 -1
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +2 -2
- package/dist/hooks/useMediaQuery.d.ts +2 -1
- package/dist/hooks/useMediaQuery.d.ts.map +1 -1
- package/dist/hooks/useMediaQuery.js +7 -4
- package/dist/hooks/useMenuPress.d.ts.map +1 -1
- package/dist/hooks/useMenuPress.js +4 -2
- package/dist/hooks/usePager.d.ts +261 -0
- package/dist/hooks/usePager.d.ts.map +1 -0
- package/dist/hooks/usePager.js +1169 -0
- package/dist/i18n/generated-english/InfoTip/InfoTip.generated.d.ts +8 -0
- package/dist/i18n/generated-english/InfoTip/InfoTip.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/InfoTip/InfoTip.generated.js +12 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearch.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/PowerSearch/PowerSearch.generated.js +1 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +42 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
- package/dist/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.js +7 -1
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +33 -1
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +33 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/internal/SheetConfirmation.d.ts +11 -0
- package/dist/internal/SheetConfirmation.d.ts.map +1 -0
- package/dist/internal/SheetConfirmation.js +92 -0
- package/dist/internal/sheetDraft.d.ts +35 -0
- package/dist/internal/sheetDraft.d.ts.map +1 -0
- package/dist/internal/sheetDraft.js +65 -0
- package/dist/internal/touch-sheet.d.ts +21 -0
- package/dist/internal/touch-sheet.d.ts.map +1 -0
- package/dist/internal/touch-sheet.js +19 -0
- package/dist/internal/useDismissSearchOnTouchDrag.d.ts +24 -0
- package/dist/internal/useDismissSearchOnTouchDrag.d.ts.map +1 -0
- package/dist/internal/useDismissSearchOnTouchDrag.js +56 -0
- package/dist/motion/animator.d.ts +14 -14
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +41 -18
- package/dist/motion/paging.d.ts +16 -5
- package/dist/motion/paging.d.ts.map +1 -1
- package/dist/motion/paging.js +34 -14
- package/dist/motion/reducedMotion.d.ts +24 -0
- package/dist/motion/reducedMotion.d.ts.map +1 -1
- package/dist/motion/reducedMotion.js +78 -1
- package/dist/motion/roles.d.ts +7 -1
- package/dist/motion/roles.d.ts.map +1 -1
- package/dist/motion/roles.js +20 -1
- package/dist/motion/uikit/alert.d.ts +41 -0
- package/dist/motion/uikit/alert.d.ts.map +1 -0
- package/dist/motion/uikit/alert.js +43 -0
- package/dist/motion/uikit/index.d.ts +7 -4
- package/dist/motion/uikit/index.d.ts.map +1 -1
- package/dist/motion/uikit/index.js +7 -4
- package/dist/motion/uikit/paging.d.ts +31 -20
- package/dist/motion/uikit/paging.d.ts.map +1 -1
- package/dist/motion/uikit/paging.js +41 -11
- package/dist/motion/uikit/progressBar.d.ts +27 -7
- package/dist/motion/uikit/progressBar.d.ts.map +1 -1
- package/dist/motion/uikit/progressBar.js +31 -11
- package/dist/motion/uikit/segmented.d.ts +55 -0
- package/dist/motion/uikit/segmented.d.ts.map +1 -0
- package/dist/motion/uikit/segmented.js +77 -0
- package/dist/motion/uikit/springs.d.ts +8 -42
- package/dist/motion/uikit/springs.d.ts.map +1 -1
- package/dist/motion/uikit/springs.js +12 -42
- package/dist/motion/uikit/switch.d.ts +166 -0
- package/dist/motion/uikit/switch.d.ts.map +1 -0
- package/dist/motion/uikit/switch.js +186 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts +15 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/pressGroupItem.stylex.js +23 -0
- package/dist/privateAttributes/pressHoldsDrag.stylex.d.ts +18 -0
- package/dist/privateAttributes/pressHoldsDrag.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/pressHoldsDrag.stylex.js +28 -0
- package/dist/privateAttributes/segmentTitle.stylex.d.ts +5 -0
- package/dist/privateAttributes/segmentTitle.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/segmentTitle.stylex.js +22 -0
- package/dist/utils/browserClickWait.d.ts +35 -0
- package/dist/utils/browserClickWait.d.ts.map +1 -0
- package/dist/utils/browserClickWait.js +123 -0
- package/dist/utils/clickGuard.d.ts +14 -1
- package/dist/utils/clickGuard.d.ts.map +1 -1
- package/dist/utils/clickGuard.js +46 -1
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +12 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +3 -2
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +24 -6
- package/locales/en.json +128 -0
- package/locales/pseudo.json +96 -0
- package/package.json +13 -8
- package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
- package/src/AlertDialog/AlertDialog.tsx +37 -5
- package/src/AppShell/useCloseMobileDrawerOnActivate.ts +52 -0
- package/src/Avatar/Avatar.tsx +3 -1
- package/src/BottomSheet/BottomSheet.tsx +95 -10
- package/src/BottomSheet/BottomSheetPanel.tsx +40 -5
- package/src/BottomSheet/bottomSheetStack.ts +8 -4
- package/src/BottomSheet/useSheetGestures.ts +3 -1
- package/src/Breadcrumbs/BreadcrumbItem.tsx +17 -4
- package/src/Button/Button.tsx +66 -7
- package/src/CheckboxList/CheckboxList.doc.mjs +4 -2
- package/src/CheckboxList/CheckboxList.tsx +6 -0
- package/src/CheckboxList/CheckboxListContext.tsx +6 -0
- package/src/CheckboxList/CheckboxListItem.tsx +11 -2
- package/src/ComplexSelector/ComplexSelector.tsx +20 -5
- package/src/DateInput/DateInput.tsx +8 -2
- package/src/DateInput/MonthScroller.tsx +18 -22
- package/src/DateInput/Wheel.tsx +172 -14
- package/src/DateRangeInput/DateRangeInput.doc.mjs +3 -2
- package/src/DateRangeInput/DateRangeInput.tsx +117 -71
- package/src/DateTimeInput/DateTimeInput.tsx +8 -2
- package/src/Dialog/Dialog.tsx +81 -15
- package/src/Drawer/Drawer.tsx +28 -11
- package/src/Drawer/useDrawerDialogPresence.ts +9 -1
- package/src/DropdownMenu/DropdownMenu.tsx +28 -6
- package/src/Field/Field.tsx +2 -2
- package/src/Field/PanelSearchInput.tsx +11 -0
- package/src/HoverCard/HoverCard.tsx +31 -1
- package/src/Icon/Icon.doc.mjs +49 -8
- package/src/Icon/Icon.tsx +15 -7
- package/src/InfoTip/InfoTip.doc.mjs +192 -0
- package/src/InfoTip/InfoTip.tsx +186 -0
- package/src/InfoTip/index.ts +14 -0
- package/src/Layer/layerAnimations.stylex.ts +24 -16
- package/src/Layer/layerClickBoundary.ts +2 -2
- package/src/Layer/useBackdropPress.ts +81 -0
- package/src/Layer/usePressPin.ts +576 -0
- package/src/Layer/useTouchTrigger.ts +56 -6
- package/src/Lightbox/Lightbox.tsx +2 -1
- package/src/MobileNav/MobileNav.tsx +1 -1
- package/src/MultiSelector/hooks.ts +2 -4
- package/src/Outline/Outline.doc.mjs +177 -51
- package/src/Outline/Outline.tsx +5 -57
- package/src/Outline/useOutlineFromMarkdown.doc.mjs +157 -0
- package/src/Outline/useOutlineFromMarkdown.ts +1 -0
- package/src/Outline/useScrollSpy.ts +3 -3
- package/src/Popover/usePopover.tsx +71 -9
- package/src/PowerSearch/PowerSearch.doc.mjs +55 -6
- package/src/PowerSearch/PowerSearch.tsx +798 -324
- package/src/PowerSearch/PowerSearchBottomSheet.tsx +2515 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +28 -6
- package/src/PowerSearch/PowerSearchValueEditor.tsx +203 -38
- package/src/PowerSearch/formatFilterValue.ts +18 -1
- package/src/PowerSearch/formatTokenValue.ts +215 -0
- package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
- package/src/ProgressBar/ProgressBar.doc.mjs +4 -2
- package/src/ProgressBar/ProgressBar.tsx +67 -7
- package/src/RadioList/RadioList.doc.mjs +4 -2
- package/src/RadioList/RadioList.tsx +7 -2
- package/src/RadioList/RadioListItem.tsx +5 -3
- package/src/Resizable/ResizeHandle.tsx +133 -328
- package/src/Resizable/resizeGesture.ts +368 -0
- package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
- package/src/SegmentedControl/SegmentedControl.tsx +179 -5
- package/src/SegmentedControl/SegmentedControlContext.ts +6 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +14 -2
- package/src/SegmentedControl/useSegmentedSelectionMotion.ts +1640 -0
- package/src/SegmentedControl/useSegmentedTouchTracking.ts +308 -0
- package/src/Selector/Selector.tsx +136 -89
- package/src/Selector/optionShape.ts +64 -0
- package/src/Selector/selectableOptionEntries.ts +39 -0
- package/src/Selector/utils.ts +9 -68
- package/src/SideNav/SideNavItem.tsx +3 -7
- package/src/Slider/sliderTouchController.ts +2 -2
- package/src/Switch/Switch.doc.mjs +3 -3
- package/src/Switch/Switch.tsx +412 -86
- package/src/Switch/switchFill.ts +106 -0
- package/src/Switch/switchTouch.ts +186 -0
- package/src/Switch/useSwitchTouch.ts +1051 -0
- package/src/TabList/Tab.tsx +5 -3
- package/src/Table/BaseTable.tsx +46 -12
- package/src/TextInput/TextInput.tsx +11 -10
- package/src/Toast/Toast.tsx +5 -0
- package/src/Token/Token.tsx +15 -4
- package/src/Token/TokenNamingContext.ts +28 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +16 -0
- package/src/Tokenizer/Tokenizer.tsx +93 -88
- package/src/Tokenizer/TokenizerBottomSheet.tsx +219 -93
- package/src/Tokenizer/TokenizerItemRemovableContext.ts +24 -0
- package/src/Tooltip/Tooltip.doc.mjs +123 -39
- package/src/Tooltip/Tooltip.tsx +43 -9
- package/src/Tooltip/useTooltip.doc.mjs +171 -31
- package/src/Tooltip/useTooltip.tsx +137 -22
- package/src/TopNav/TopNavItem.tsx +6 -5
- package/src/TopNav/TopNavMegaMenuItem.tsx +6 -5
- package/src/TopNav/TopNavMenu.tsx +6 -5
- package/src/Typeahead/Typeahead.tsx +29 -15
- package/src/animator/createAnimator.doc.mjs +153 -0
- package/src/animator/createAnimator.ts +324 -0
- package/src/gestures/GestureHost.ts +205 -21
- package/src/gestures/PressTracker.ts +10 -0
- package/src/gestures/types.ts +6 -0
- package/src/gestures/usePressTracker.ts +2 -0
- package/src/gestures/wheelSegmenter.ts +36 -7
- package/src/hooks/actionGroupTracker.ts +32 -61
- package/src/hooks/index.ts +2 -0
- package/src/hooks/pressGroupContext.ts +21 -0
- package/src/hooks/useActionGroupTracking.ts +224 -0
- package/src/hooks/useAnimator.doc.mjs +109 -0
- package/src/hooks/useAnimator.ts +67 -0
- package/src/hooks/useAttachment.ts +56 -14
- package/src/hooks/useFocusTrap.ts +26 -2
- package/src/hooks/useHighlightedOptionScroll.ts +123 -15
- package/src/hooks/useInputStatusIcon.tsx +3 -2
- package/src/hooks/useMediaQuery.doc.mjs +2 -2
- package/src/hooks/useMediaQuery.ts +13 -4
- package/src/hooks/useMenuPress.ts +8 -2
- package/src/hooks/usePager.ts +1446 -0
- package/src/i18n/generated-english/InfoTip/InfoTip.generated.ts +13 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearch.generated.ts +1 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
- package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
- package/src/i18n/generated-english/Tokenizer/TokenizerBottomSheet.generated.ts +7 -1
- package/src/i18n/generated-locales/en.generated.ts +43 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +44 -0
- package/src/index.ts +14 -0
- package/src/internal/SheetConfirmation.tsx +101 -0
- package/src/internal/sheetDraft.ts +80 -0
- package/src/internal/touch-sheet.ts +21 -0
- package/src/internal/useDismissSearchOnTouchDrag.ts +69 -0
- package/src/motion/MEASUREMENTS.md +36 -27
- package/src/motion/README.md +11 -6
- package/src/motion/animator.ts +61 -29
- package/src/motion/paging.ts +37 -14
- package/src/motion/reducedMotion.ts +79 -1
- package/src/motion/roles.ts +20 -1
- package/src/motion/uikit/alert.ts +43 -0
- package/src/motion/uikit/index.ts +6 -5
- package/src/motion/uikit/paging.ts +41 -10
- package/src/motion/uikit/progressBar.ts +31 -11
- package/src/motion/uikit/segmented.ts +74 -0
- package/src/motion/uikit/springs.ts +12 -42
- package/src/motion/uikit/switch.ts +174 -0
- package/src/privateAttributes/pressGroupItem.stylex.ts +23 -0
- package/src/privateAttributes/pressHoldsDrag.stylex.ts +28 -0
- package/src/privateAttributes/segmentTitle.stylex.ts +22 -0
- package/src/utils/browserClickWait.ts +133 -0
- package/src/utils/clickGuard.ts +64 -1
- package/src/utils/dateParser.ts +16 -0
- package/src/utils/interactionOverlay.stylex.ts +3 -2
- package/src/utils/pressFeedback.ts +24 -6
- package/dist/internal/tokenizer-presentation.d.ts +0 -21
- package/dist/internal/tokenizer-presentation.d.ts.map +0 -1
- package/dist/internal/tokenizer-presentation.js +0 -21
- package/src/internal/tokenizer-presentation.ts +0 -25
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file usePressPin.ts
|
|
7
|
+
* @input A hover layer's trigger, open state, show and hide, and its
|
|
8
|
+
* `triggerBehavior` and `touchTrigger` options
|
|
9
|
+
* @output usePressPin, the press toggle that pins a hover layer open, and
|
|
10
|
+
* the app hold behind useTooltip's show() and hide(); isPressPinTrigger;
|
|
11
|
+
* stopPressPinClick; the LayerTriggerBehavior type
|
|
12
|
+
* @position Core-internal: one call per hover layer, useTooltip's. It owns
|
|
13
|
+
* the layer's touch trigger, so the host makes no second touch-trigger call.
|
|
14
|
+
*
|
|
15
|
+
* SYNC: When modified, update:
|
|
16
|
+
* - /packages/core/src/Tooltip/useTooltip.tsx
|
|
17
|
+
* - /packages/core/src/Layer/usePressPin.test.tsx
|
|
18
|
+
*/
|
|
19
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
20
|
+
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
21
|
+
import { useDevWarning } from "../hooks/useDevWarning.js";
|
|
22
|
+
import { stopInReactTree } from "./layerClickBoundary.js";
|
|
23
|
+
import { useTouchTriggerInternal } from "./useTouchTrigger.js";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* How the trigger opens the layer. `adaptive`, the default, previews it on
|
|
27
|
+
* hover and focus, and `touchTrigger` decides taps. `toggle` pins it on every
|
|
28
|
+
* press of a button trigger. Internal: InfoTip's press-to-pin uses `toggle`.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/** The clicks a press pin answered, so the wrapper can stop them (`stopPressPinClick`). */
|
|
32
|
+
const pressPinClicks = new WeakSet();
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The layer component's wrapper handler. It stops a press that pinned or
|
|
36
|
+
* closed the layer in the React tree only, after the trigger's own handlers.
|
|
37
|
+
* No clickable row, card, or container around the trigger then receives it,
|
|
38
|
+
* and document and window listeners still do. An anchored trigger has no
|
|
39
|
+
* wrapper, so a plain `onClick` element around it still receives the press.
|
|
40
|
+
*/
|
|
41
|
+
export function stopPressPinClick(event) {
|
|
42
|
+
if (pressPinClicks.has(event.nativeEvent)) {
|
|
43
|
+
stopInReactTree(event);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Whether presses on this element can pin a layer: a button, by role. */
|
|
48
|
+
export function isPressPinTrigger(element) {
|
|
49
|
+
const role = element.getAttribute('role');
|
|
50
|
+
if (role != null && role !== '') {
|
|
51
|
+
return role === 'button';
|
|
52
|
+
}
|
|
53
|
+
return element.tagName === 'BUTTON';
|
|
54
|
+
}
|
|
55
|
+
function restoreAttribute(element, name, value) {
|
|
56
|
+
if (value == null) {
|
|
57
|
+
element.removeAttribute(name);
|
|
58
|
+
} else {
|
|
59
|
+
element.setAttribute(name, value);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function writeAttribute(element, name, value) {
|
|
63
|
+
if (element.getAttribute(name) !== value) {
|
|
64
|
+
restoreAttribute(element, name, value);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Pins a hover layer open on a press of a button trigger, under
|
|
70
|
+
* `triggerBehavior="toggle"`. The same press closes it, and so do Escape, a
|
|
71
|
+
* press or scroll outside, and focus that leaves the trigger and the layer.
|
|
72
|
+
* The press stops at the trigger. A trigger that is not a button gets a
|
|
73
|
+
* development warning and keeps tap-only opening.
|
|
74
|
+
*/
|
|
75
|
+
export function usePressPin(options) {
|
|
76
|
+
const {
|
|
77
|
+
triggerBehavior,
|
|
78
|
+
isOpen,
|
|
79
|
+
isLayerOpen,
|
|
80
|
+
layerId
|
|
81
|
+
} = options;
|
|
82
|
+
const isToggleMode = triggerBehavior === 'toggle';
|
|
83
|
+
|
|
84
|
+
// DOM listeners read the latest options and announcer through refs. The
|
|
85
|
+
// announcer is the layer's own: inside a modal, the modal's region.
|
|
86
|
+
const optionsRef = useRef(options);
|
|
87
|
+
optionsRef.current = options;
|
|
88
|
+
const announce = useAnnounce();
|
|
89
|
+
const announceRef = useRef(announce);
|
|
90
|
+
announceRef.current = announce;
|
|
91
|
+
const isPinnedRef = useRef(false);
|
|
92
|
+
const [isPinned, setIsPinnedState] = useState(false);
|
|
93
|
+
const setPinned = useCallback(next => {
|
|
94
|
+
isPinnedRef.current = next;
|
|
95
|
+
setIsPinnedState(next);
|
|
96
|
+
}, []);
|
|
97
|
+
|
|
98
|
+
// The app's show() holds the layer on any trigger, in any mode.
|
|
99
|
+
const isAppHeldRef = useRef(false);
|
|
100
|
+
const [isAppHeldState, setIsAppHeldState] = useState(false);
|
|
101
|
+
const setAppHeld = useCallback(next => {
|
|
102
|
+
isAppHeldRef.current = next;
|
|
103
|
+
setIsAppHeldState(next);
|
|
104
|
+
}, []);
|
|
105
|
+
|
|
106
|
+
// The last offered element lets a `triggerBehavior` change rewire it.
|
|
107
|
+
const triggerRef = useRef(null);
|
|
108
|
+
// Every offered trigger, in any mode, so focus leaving ends a pin or an
|
|
109
|
+
// app hold.
|
|
110
|
+
const focusTargetRef = useRef(null);
|
|
111
|
+
const offeredRef = useRef(null);
|
|
112
|
+
// A primitive: re-attaching the same trigger renders nothing.
|
|
113
|
+
const [offeredKind, setOfferedKind] = useState('none');
|
|
114
|
+
// The trigger's own aria-expanded and aria-controls, restored on unwiring.
|
|
115
|
+
const ownStateRef = useRef(null);
|
|
116
|
+
|
|
117
|
+
// The touch trigger's outside dismissal (a press or scroll outside) closes
|
|
118
|
+
// a pinned layer through the pin, so the pin drops with it.
|
|
119
|
+
const hideFromTouch = useCallback(() => {
|
|
120
|
+
const current = optionsRef.current;
|
|
121
|
+
if (isAppHeldRef.current) {
|
|
122
|
+
setAppHeld(false);
|
|
123
|
+
if (current.isOpen !== undefined) {
|
|
124
|
+
current.report(false);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (current.triggerBehavior === 'toggle' && triggerRef.current != null) {
|
|
129
|
+
if (current.isOpen !== undefined) {
|
|
130
|
+
current.report(false);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (isPinnedRef.current) {
|
|
134
|
+
setPinned(false);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
current.hide();
|
|
138
|
+
}, [setPinned, setAppHeld]);
|
|
139
|
+
const {
|
|
140
|
+
isTouchPointerRef,
|
|
141
|
+
isTouchInteraction,
|
|
142
|
+
handlePointerEnter,
|
|
143
|
+
handlePointerDown,
|
|
144
|
+
clearTapOpen,
|
|
145
|
+
armOutsideDismiss
|
|
146
|
+
} = useTouchTriggerInternal({
|
|
147
|
+
touchTrigger: isToggleMode ? 'tap' : options.touchTrigger,
|
|
148
|
+
isEnabled: options.isEnabled,
|
|
149
|
+
isControlled: isOpen !== undefined,
|
|
150
|
+
isOpen: isLayerOpen,
|
|
151
|
+
layerId,
|
|
152
|
+
triggerRef: options.triggerRef,
|
|
153
|
+
show: options.show,
|
|
154
|
+
hide: hideFromTouch
|
|
155
|
+
});
|
|
156
|
+
const isToggleTrigger = useCallback(element => optionsRef.current.triggerBehavior === 'toggle' && element != null && isPressPinTrigger(element), []);
|
|
157
|
+
const close = useCallback(() => {
|
|
158
|
+
const current = optionsRef.current;
|
|
159
|
+
clearTapOpen();
|
|
160
|
+
setAppHeld(false);
|
|
161
|
+
if (current.isOpen !== undefined) {
|
|
162
|
+
current.report(false);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
setPinned(false);
|
|
166
|
+
current.hide();
|
|
167
|
+
}, [setPinned, setAppHeld, clearTapOpen]);
|
|
168
|
+
const announceName = useCallback(() => {
|
|
169
|
+
const current = optionsRef.current;
|
|
170
|
+
const name = current.label?.trim() ?? '';
|
|
171
|
+
if (name !== '') {
|
|
172
|
+
announceRef.current(name, 'polite');
|
|
173
|
+
}
|
|
174
|
+
}, []);
|
|
175
|
+
const toggle = useCallback(() => {
|
|
176
|
+
const current = optionsRef.current;
|
|
177
|
+
if (current.isOpen !== undefined) {
|
|
178
|
+
if (!current.isOpen) {
|
|
179
|
+
armOutsideDismiss();
|
|
180
|
+
announceName();
|
|
181
|
+
} else {
|
|
182
|
+
clearTapOpen();
|
|
183
|
+
}
|
|
184
|
+
current.report(!current.isOpen);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
// A pin counts only while its layer shows; a closed layer pins again.
|
|
188
|
+
if (isPinnedRef.current && current.isLayerOpen) {
|
|
189
|
+
setPinned(false);
|
|
190
|
+
clearTapOpen();
|
|
191
|
+
current.hide();
|
|
192
|
+
} else {
|
|
193
|
+
setPinned(true);
|
|
194
|
+
current.show();
|
|
195
|
+
armOutsideDismiss();
|
|
196
|
+
announceName();
|
|
197
|
+
}
|
|
198
|
+
}, [setPinned, announceName, armOutsideDismiss, clearTapOpen]);
|
|
199
|
+
|
|
200
|
+
// A non-native button gets no click from the browser for a key. So Enter
|
|
201
|
+
// presses it on keydown, and Space on keyup, as on a native button. A click
|
|
202
|
+
// with no pointer (`detail` 0) while Space is down, or in a key press's
|
|
203
|
+
// task, is that same press.
|
|
204
|
+
const keyPressedRef = useRef(false);
|
|
205
|
+
const spaceHeldRef = useRef(false);
|
|
206
|
+
const handlePress = useCallback(event => {
|
|
207
|
+
const current = optionsRef.current;
|
|
208
|
+
if (!current.isEnabled || current.triggerBehavior !== 'toggle') {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
// The press stops at its trigger: no label control, link, or submit.
|
|
212
|
+
event.preventDefault();
|
|
213
|
+
pressPinClicks.add(event);
|
|
214
|
+
if (event.detail === 0 && (keyPressedRef.current || spaceHeldRef.current)) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
toggle();
|
|
218
|
+
}, [toggle]);
|
|
219
|
+
const pressFromKey = useCallback(() => {
|
|
220
|
+
keyPressedRef.current = true;
|
|
221
|
+
setTimeout(() => {
|
|
222
|
+
keyPressedRef.current = false;
|
|
223
|
+
}, 0);
|
|
224
|
+
toggle();
|
|
225
|
+
}, [toggle]);
|
|
226
|
+
const handleKeyDown = useCallback(event => {
|
|
227
|
+
const current = optionsRef.current;
|
|
228
|
+
if (!current.isEnabled || current.triggerBehavior !== 'toggle' || event.isComposing || event.key !== 'Enter' && event.key !== ' ') {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
// The press replaces the key's own action, such as a page scroll on Space.
|
|
232
|
+
event.preventDefault();
|
|
233
|
+
if (event.repeat) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (event.key === ' ') {
|
|
237
|
+
spaceHeldRef.current = true;
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
pressFromKey();
|
|
241
|
+
}, [pressFromKey]);
|
|
242
|
+
// Only a Space that went down on the trigger presses it when it comes up.
|
|
243
|
+
const handleKeyUp = useCallback(event => {
|
|
244
|
+
if (event.key !== ' ' || !spaceHeldRef.current) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
spaceHeldRef.current = false;
|
|
248
|
+
const current = optionsRef.current;
|
|
249
|
+
if (!current.isEnabled || current.triggerBehavior !== 'toggle') {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
pressFromKey();
|
|
253
|
+
}, [pressFromKey]);
|
|
254
|
+
const isHeldOpen = useCallback(() => {
|
|
255
|
+
const current = optionsRef.current;
|
|
256
|
+
if (isAppHeldRef.current && current.isLayerOpen) {
|
|
257
|
+
return current.isOpen !== false;
|
|
258
|
+
}
|
|
259
|
+
if (current.triggerBehavior !== 'toggle' || triggerRef.current == null) {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
return current.isOpen !== undefined ? current.isOpen && current.isLayerOpen : isPinnedRef.current && current.isLayerOpen;
|
|
263
|
+
}, []);
|
|
264
|
+
const handleFocusLeave = useCallback(event => {
|
|
265
|
+
// A Space that comes up after focus left presses nothing.
|
|
266
|
+
spaceHeldRef.current = false;
|
|
267
|
+
if (!isHeldOpen()) {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
const next = event.relatedTarget;
|
|
271
|
+
const trigger = focusTargetRef.current;
|
|
272
|
+
// Focus that leaves for no element is a press's to decide. The trigger
|
|
273
|
+
// can sit in another document, so the check uses its own window.
|
|
274
|
+
const view = trigger?.ownerDocument.defaultView;
|
|
275
|
+
if (view == null || !(next instanceof view.Node)) {
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
const surface = trigger?.ownerDocument.getElementById(optionsRef.current.layerId) ?? null;
|
|
279
|
+
if (trigger?.contains(next) === true || surface?.contains(next) === true) {
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
close();
|
|
283
|
+
return true;
|
|
284
|
+
}, [isHeldOpen, close]);
|
|
285
|
+
const unwire = useCallback(() => {
|
|
286
|
+
focusTargetRef.current?.removeEventListener('focusout', handleFocusLeave);
|
|
287
|
+
focusTargetRef.current = null;
|
|
288
|
+
const previous = triggerRef.current;
|
|
289
|
+
if (previous == null) {
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
previous.removeEventListener('click', handlePress);
|
|
293
|
+
previous.removeEventListener('keydown', handleKeyDown);
|
|
294
|
+
previous.removeEventListener('keyup', handleKeyUp);
|
|
295
|
+
const own = ownStateRef.current;
|
|
296
|
+
if (own != null) {
|
|
297
|
+
restoreAttribute(previous, 'aria-expanded', own.expanded);
|
|
298
|
+
restoreAttribute(previous, 'aria-controls', own.controls);
|
|
299
|
+
}
|
|
300
|
+
ownStateRef.current = null;
|
|
301
|
+
triggerRef.current = null;
|
|
302
|
+
}, [handlePress, handleKeyDown, handleKeyUp, handleFocusLeave]);
|
|
303
|
+
|
|
304
|
+
// The element and mode last settled; the same pair again does nothing.
|
|
305
|
+
const settledRef = useRef(null);
|
|
306
|
+
const wire = useCallback(element => {
|
|
307
|
+
const current = optionsRef.current;
|
|
308
|
+
const settled = settledRef.current;
|
|
309
|
+
if (settled != null && settled.element === element && settled.mode === current.triggerBehavior) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
settledRef.current = {
|
|
313
|
+
element,
|
|
314
|
+
mode: current.triggerBehavior
|
|
315
|
+
};
|
|
316
|
+
unwire();
|
|
317
|
+
if (element == null) {
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
// Its own focus-leave listener, in any mode: `focusTrigger="never"`
|
|
321
|
+
// attaches none, and an app hold needs it on any trigger.
|
|
322
|
+
element.addEventListener('focusout', handleFocusLeave);
|
|
323
|
+
focusTargetRef.current = element;
|
|
324
|
+
if (current.triggerBehavior !== 'toggle' || !isPressPinTrigger(element)) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
element.addEventListener('click', handlePress);
|
|
328
|
+
if (element.tagName !== 'BUTTON') {
|
|
329
|
+
element.addEventListener('keydown', handleKeyDown);
|
|
330
|
+
element.addEventListener('keyup', handleKeyUp);
|
|
331
|
+
}
|
|
332
|
+
ownStateRef.current = {
|
|
333
|
+
expanded: element.getAttribute('aria-expanded'),
|
|
334
|
+
controls: element.getAttribute('aria-controls')
|
|
335
|
+
};
|
|
336
|
+
triggerRef.current = element;
|
|
337
|
+
}, [unwire, handlePress, handleKeyDown, handleKeyUp, handleFocusLeave]);
|
|
338
|
+
const attach = useCallback(element => {
|
|
339
|
+
offeredRef.current = element;
|
|
340
|
+
// Hosts detach and re-attach within one commit, so a detach is not kept.
|
|
341
|
+
if (element != null) {
|
|
342
|
+
setOfferedKind(isPressPinTrigger(element) ? 'button' : 'other');
|
|
343
|
+
}
|
|
344
|
+
wire(element);
|
|
345
|
+
}, [wire]);
|
|
346
|
+
const isWired = isToggleMode && offeredKind === 'button';
|
|
347
|
+
useDevWarning(options.component, 'A press-to-pin tooltip pins only a button trigger (a <button> or role="button"); this trigger keeps tap-only opening.', isToggleMode && offeredKind === 'other');
|
|
348
|
+
|
|
349
|
+
// A later `triggerBehavior` change rewires here; the ref does not rerun.
|
|
350
|
+
useEffect(() => {
|
|
351
|
+
wire(offeredRef.current);
|
|
352
|
+
}, [triggerBehavior, wire]);
|
|
353
|
+
const unpin = useCallback(() => {
|
|
354
|
+
if (isPinnedRef.current) {
|
|
355
|
+
setPinned(false);
|
|
356
|
+
}
|
|
357
|
+
if (isAppHeldRef.current) {
|
|
358
|
+
setAppHeld(false);
|
|
359
|
+
}
|
|
360
|
+
}, [setPinned, setAppHeld]);
|
|
361
|
+
const hold = useCallback(() => {
|
|
362
|
+
const current = optionsRef.current;
|
|
363
|
+
if (!current.isEnabled) {
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
setAppHeld(true);
|
|
367
|
+
armOutsideDismiss();
|
|
368
|
+
announceName();
|
|
369
|
+
if (current.isOpen !== undefined) {
|
|
370
|
+
current.report(true);
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
current.show();
|
|
374
|
+
}, [setAppHeld, armOutsideDismiss, announceName]);
|
|
375
|
+
const release = useCallback(() => {
|
|
376
|
+
close();
|
|
377
|
+
}, [close]);
|
|
378
|
+
const isAppHeld = useCallback(() => isAppHeldRef.current, []);
|
|
379
|
+
|
|
380
|
+
// Each path that hides a pinned layer drops the pin itself, so a layer that
|
|
381
|
+
// does not show is never reported expanded.
|
|
382
|
+
const isExpanded = (isOpen !== undefined ? isOpen : isPinned) && isLayerOpen;
|
|
383
|
+
|
|
384
|
+
// The trigger's aria-expanded and aria-controls follow the pin. No deps: a
|
|
385
|
+
// host can swap the trigger on any commit; equal values are not rewritten.
|
|
386
|
+
useEffect(() => {
|
|
387
|
+
const trigger = triggerRef.current;
|
|
388
|
+
if (!isToggleMode || !isWired || trigger == null) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
writeAttribute(trigger, 'aria-expanded', isExpanded ? 'true' : 'false');
|
|
392
|
+
writeAttribute(trigger, 'aria-controls', isLayerOpen ? layerId : null);
|
|
393
|
+
});
|
|
394
|
+
const isPinShown = isToggleMode && isWired && isExpanded || isAppHeldState && isLayerOpen && isOpen !== false;
|
|
395
|
+
return {
|
|
396
|
+
isToggleTrigger,
|
|
397
|
+
isHeldOpen,
|
|
398
|
+
attach,
|
|
399
|
+
unpin,
|
|
400
|
+
hold,
|
|
401
|
+
release,
|
|
402
|
+
isAppHeld,
|
|
403
|
+
handleFocusLeave,
|
|
404
|
+
isPinShown,
|
|
405
|
+
touch: {
|
|
406
|
+
isTouchPointerRef,
|
|
407
|
+
isTouchInteraction,
|
|
408
|
+
handlePointerEnter,
|
|
409
|
+
handlePointerDown,
|
|
410
|
+
clearTapOpen
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* @input Touch trigger mode, layer open state, trigger ref, show/hide callbacks
|
|
4
4
|
* @output Exports useTouchTrigger hook, isActionTrigger, LayerTouchTrigger type,
|
|
5
5
|
* tapLandsOnDisabledControl, TOUCH_POINTER_TYPES and useTapStop (internal:
|
|
6
|
-
* not re-exported from index)
|
|
6
|
+
* not re-exported from index). Also useTouchTriggerInternal, with the
|
|
7
|
+
* outside dismissal's arm for the press pin (Core-internal).
|
|
7
8
|
* @position Layer hook; shared touch behavior for useTooltip and useHoverCard
|
|
8
9
|
*
|
|
9
10
|
* SYNC: When modified, update:
|
|
@@ -137,6 +138,20 @@ export interface UseTouchTriggerReturn {
|
|
|
137
138
|
/** Forget a tap-open. Call from every other close path (Escape, controlled). */
|
|
138
139
|
clearTapOpen: () => void;
|
|
139
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* useTouchTrigger's return plus the outside dismissal's arm, for Core's own
|
|
143
|
+
* press pin (usePressPin). Not exported from the Layer entry point.
|
|
144
|
+
*
|
|
145
|
+
* @internal
|
|
146
|
+
*/
|
|
147
|
+
export interface UseTouchTriggerInternalReturn extends UseTouchTriggerReturn {
|
|
148
|
+
/**
|
|
149
|
+
* Arms the outside dismissal a tap-open gets: a press that lifts outside
|
|
150
|
+
* the trigger and the layer, or a scroll that starts there, hides it. A
|
|
151
|
+
* press pin arms it too.
|
|
152
|
+
*/
|
|
153
|
+
armOutsideDismiss: () => void;
|
|
154
|
+
}
|
|
140
155
|
/**
|
|
141
156
|
* Touch behavior shared by the hover layers.
|
|
142
157
|
*
|
|
@@ -155,4 +170,11 @@ export interface UseTouchTriggerReturn {
|
|
|
155
170
|
* ```
|
|
156
171
|
*/
|
|
157
172
|
export declare function useTouchTrigger(options: UseTouchTriggerOptions): UseTouchTriggerReturn;
|
|
173
|
+
/**
|
|
174
|
+
* useTouchTrigger, plus the outside dismissal's arm that a press pin uses to
|
|
175
|
+
* close on a press or scroll outside.
|
|
176
|
+
*
|
|
177
|
+
* @internal
|
|
178
|
+
*/
|
|
179
|
+
export declare function useTouchTriggerInternal(options: UseTouchTriggerOptions): UseTouchTriggerInternalReturn;
|
|
158
180
|
//# sourceMappingURL=useTouchTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTouchTrigger.d.ts","sourceRoot":"","sources":["../../src/Layer/useTouchTrigger.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"useTouchTrigger.d.ts","sourceRoot":"","sources":["../../src/Layer/useTouchTrigger.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAIL,KAAK,UAAU,IAAI,eAAe,EAClC,KAAK,YAAY,IAAI,iBAAiB,EACtC,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,aAA4B,CAAC;AAE7D,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG;IAC1C,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC3D,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACpD,CAAC;AACF,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG;IAC9C,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC3D,WAAW,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACxD,CAAC;AAwCF;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CA8B7D;AAiBD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAUlE;AAeD,MAAM,WAAW,sBAAsB;IACrC,sDAAsD;IACtD,YAAY,EAAE,iBAAiB,CAAC;IAEhC,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAEhB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAEhB,oDAAoD;IACpD,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE1C,uDAAuD;IACvD,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB,mCAAmC;IACnC,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,iBAAiB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAEtC;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,OAAO,CAAC;IAElC;;;;OAIG;IACH,kBAAkB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAElD;;;;;;OAMG;IACH,iBAAiB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IAEpD,gFAAgF;IAChF,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CASvB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,sBAAsB,GAC9B,6BAA6B,CA2N/B"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* @input Touch trigger mode, layer open state, trigger ref, show/hide callbacks
|
|
8
8
|
* @output Exports useTouchTrigger hook, isActionTrigger, LayerTouchTrigger type,
|
|
9
9
|
* tapLandsOnDisabledControl, TOUCH_POINTER_TYPES and useTapStop (internal:
|
|
10
|
-
* not re-exported from index)
|
|
10
|
+
* not re-exported from index). Also useTouchTriggerInternal, with the
|
|
11
|
+
* outside dismissal's arm for the press pin (Core-internal).
|
|
11
12
|
* @position Layer hook; shared touch behavior for useTooltip and useHoverCard
|
|
12
13
|
*
|
|
13
14
|
* SYNC: When modified, update:
|
|
@@ -176,6 +177,14 @@ function isEditable(element) {
|
|
|
176
177
|
const attribute = element.getAttribute('contenteditable');
|
|
177
178
|
return attribute != null && attribute !== 'false';
|
|
178
179
|
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* useTouchTrigger's return plus the outside dismissal's arm, for Core's own
|
|
183
|
+
* press pin (usePressPin). Not exported from the Layer entry point.
|
|
184
|
+
*
|
|
185
|
+
* @internal
|
|
186
|
+
*/
|
|
187
|
+
|
|
179
188
|
/**
|
|
180
189
|
* Touch behavior shared by the hover layers.
|
|
181
190
|
*
|
|
@@ -194,6 +203,23 @@ function isEditable(element) {
|
|
|
194
203
|
* ```
|
|
195
204
|
*/
|
|
196
205
|
export function useTouchTrigger(options) {
|
|
206
|
+
const touch = useTouchTriggerInternal(options);
|
|
207
|
+
return {
|
|
208
|
+
isTouchPointerRef: touch.isTouchPointerRef,
|
|
209
|
+
isTouchInteraction: touch.isTouchInteraction,
|
|
210
|
+
handlePointerEnter: touch.handlePointerEnter,
|
|
211
|
+
handlePointerDown: touch.handlePointerDown,
|
|
212
|
+
clearTapOpen: touch.clearTapOpen
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* useTouchTrigger, plus the outside dismissal's arm that a press pin uses to
|
|
218
|
+
* close on a press or scroll outside.
|
|
219
|
+
*
|
|
220
|
+
* @internal
|
|
221
|
+
*/
|
|
222
|
+
export function useTouchTriggerInternal(options) {
|
|
197
223
|
const {
|
|
198
224
|
touchTrigger,
|
|
199
225
|
isEnabled,
|
|
@@ -222,6 +248,9 @@ export function useTouchTrigger(options) {
|
|
|
222
248
|
// pointer-leave, and a controlled one is not ours to close.
|
|
223
249
|
const isTapOpenRef = useRef(false);
|
|
224
250
|
const outsideListenerRef = useRef(null);
|
|
251
|
+
// The documents the outside dismissal listens on: the page's, and the
|
|
252
|
+
// trigger's own when it renders in another document, such as an iframe.
|
|
253
|
+
const outsideDocumentsRef = useRef([]);
|
|
225
254
|
// A touch press on the trigger still waiting for its tap: calling it stops
|
|
226
255
|
// waiting. The next press, a cancel, the tap itself or unmounting calls it.
|
|
227
256
|
const forgetPendingTapRef = useRef(null);
|
|
@@ -233,8 +262,11 @@ export function useTouchTrigger(options) {
|
|
|
233
262
|
return;
|
|
234
263
|
}
|
|
235
264
|
outsideListenerRef.current = null;
|
|
236
|
-
|
|
237
|
-
|
|
265
|
+
for (const doc of outsideDocumentsRef.current) {
|
|
266
|
+
doc.removeEventListener('pointerup', listener, true);
|
|
267
|
+
doc.removeEventListener('pointercancel', listener, true);
|
|
268
|
+
}
|
|
269
|
+
outsideDocumentsRef.current = [];
|
|
238
270
|
}, []);
|
|
239
271
|
|
|
240
272
|
// Capture phase, so a trigger that stops propagation cannot strand an open
|
|
@@ -247,6 +279,8 @@ export function useTouchTrigger(options) {
|
|
|
247
279
|
if (outsideListenerRef.current != null) {
|
|
248
280
|
return;
|
|
249
281
|
}
|
|
282
|
+
const own = triggerRef.current?.ownerDocument ?? document;
|
|
283
|
+
const docs = own === document ? [document] : [document, own];
|
|
250
284
|
const handleOutsidePointerEnd = event => {
|
|
251
285
|
const target = event.target;
|
|
252
286
|
if (target != null) {
|
|
@@ -256,7 +290,7 @@ export function useTouchTrigger(options) {
|
|
|
256
290
|
return;
|
|
257
291
|
}
|
|
258
292
|
// Hover card content is interactive; a tap inside it is not a dismiss.
|
|
259
|
-
if (
|
|
293
|
+
if (docs.some(doc => doc.getElementById(layerIdRef.current)?.contains(target) === true)) {
|
|
260
294
|
return;
|
|
261
295
|
}
|
|
262
296
|
}
|
|
@@ -264,8 +298,11 @@ export function useTouchTrigger(options) {
|
|
|
264
298
|
hideRef.current();
|
|
265
299
|
};
|
|
266
300
|
outsideListenerRef.current = handleOutsidePointerEnd;
|
|
267
|
-
|
|
268
|
-
|
|
301
|
+
outsideDocumentsRef.current = docs;
|
|
302
|
+
for (const doc of docs) {
|
|
303
|
+
doc.addEventListener('pointerup', handleOutsidePointerEnd, true);
|
|
304
|
+
doc.addEventListener('pointercancel', handleOutsidePointerEnd, true);
|
|
305
|
+
}
|
|
269
306
|
}, [triggerRef, disarmOutsideDismiss]);
|
|
270
307
|
useEffect(() => disarmOutsideDismiss, [disarmOutsideDismiss]);
|
|
271
308
|
useEffect(() => () => forgetPendingTapRef.current?.(), []);
|
|
@@ -358,6 +395,7 @@ export function useTouchTrigger(options) {
|
|
|
358
395
|
isTouchInteraction,
|
|
359
396
|
handlePointerEnter,
|
|
360
397
|
handlePointerDown,
|
|
361
|
-
clearTapOpen: disarmOutsideDismiss
|
|
398
|
+
clearTapOpen: disarmOutsideDismiss,
|
|
399
|
+
armOutsideDismiss
|
|
362
400
|
};
|
|
363
401
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../src/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../src/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsB5C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACjE,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,KAAK,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAmKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,KAAK,EAAE,eAAe,EACtB,YAAgB,EAChB,aAAa,EACb,OAAe,EACf,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,KAAK,EACT,EAAE,aAAa,sCAsdf;yBAtee,QAAQ"}
|
|
@@ -41,6 +41,7 @@ import { useMergedRefs } from "../hooks/useMergedRefs.js";
|
|
|
41
41
|
import { isRtlElement } from "../hooks/isRtlElement.js";
|
|
42
42
|
import { registerEnglishFallback, useComponentTranslator } from "../i18n/useComponentTranslator.js";
|
|
43
43
|
import english from "../i18n/generated-english/Lightbox/Lightbox.generated.js";
|
|
44
|
+
import { isRenderable } from "../utils/isRenderable.js";
|
|
44
45
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
45
46
|
registerEnglishFallback(english);
|
|
46
47
|
/**
|
|
@@ -578,7 +579,7 @@ export function Lightbox({
|
|
|
578
579
|
draggable: false,
|
|
579
580
|
...stylex.props(styles.image, isDragging && styles.imageDragging, imageTransform != null && dynamicStyles.imageTransform(imageTransform))
|
|
580
581
|
})
|
|
581
|
-
}), currentItem.caption && /*#__PURE__*/_jsx("div", {
|
|
582
|
+
}), isRenderable(currentItem.caption) && /*#__PURE__*/_jsx("div", {
|
|
582
583
|
...{
|
|
583
584
|
className: "x9e3rv5 x18juvz8 xf74fhv x2b8uid x1xye8es x18d9i69 xrrkdod xrlsmeg x2lah0s"
|
|
584
585
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/hooks.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,SAAS,CAAC;AAGrD,UAAU,uBAAuB;IAC/B,eAAe,EAAE,uBAAuB,EAAE,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,UAAU,sBAAsB;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,4EAA4E;IAC5E,eAAe,EAAE,iBAAiB,CAAC;IACnC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,iFAAiF;IACjF,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,+DAA+D;IAC/D,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC5C,gBAAgB,EAAE,CAChB,IAAI,EAAE,uBAAuB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,KACrB,IAAI,CAAC;CACX;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,UAAkB,EAClB,MAAM,EACN,SAAiB,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,MAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,EAAE,uBAAuB,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/hooks.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,SAAS,CAAC;AAGrD,UAAU,uBAAuB;IAC/B,eAAe,EAAE,uBAAuB,EAAE,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpD,UAAU,sBAAsB;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,4EAA4E;IAC5E,eAAe,EAAE,iBAAiB,CAAC;IACnC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,iFAAiF;IACjF,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,+DAA+D;IAC/D,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC5C,gBAAgB,EAAE,CAChB,IAAI,EAAE,uBAAuB,EAC7B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,KACrB,IAAI,CAAC;CACX;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,UAAkB,EAClB,MAAM,EACN,SAAiB,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,MAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,EAAE,uBAAuB,GAAG,sBAAsB,CAuSlD"}
|
|
@@ -86,13 +86,11 @@ export function useMultiCombobox({
|
|
|
86
86
|
// The action cell is the caller's control, usable whether or not the
|
|
87
87
|
// option itself is disabled (spec:AST-058 FR4).
|
|
88
88
|
if (cell === 'action') {
|
|
89
|
-
highlightOnHover(index);
|
|
90
|
-
setHighlightedCell('action');
|
|
89
|
+
highlightOnHover(index, () => setHighlightedCell('action'));
|
|
91
90
|
return;
|
|
92
91
|
}
|
|
93
92
|
if (!item.disabled) {
|
|
94
|
-
highlightOnHover(index);
|
|
95
|
-
setHighlightedCell('option');
|
|
93
|
+
highlightOnHover(index, () => setHighlightedCell('option'));
|
|
96
94
|
}
|
|
97
95
|
}, [highlightOnHover]);
|
|
98
96
|
const onKeyDown = useCallback(e => {
|
|
@@ -79,10 +79,8 @@ export interface OutlineProps extends BaseProps<HTMLElement> {
|
|
|
79
79
|
* scroll root) plus the heading's own `scroll-margin-top`. It defaults to the
|
|
80
80
|
* first item at the top and the last at the bottom.
|
|
81
81
|
*
|
|
82
|
-
* Keyboard:
|
|
83
|
-
*
|
|
84
|
-
* and Enter/Space activate — so a long table of contents costs one Tab press,
|
|
85
|
-
* not one per heading.
|
|
82
|
+
* Keyboard: each link is in the normal Tab order, and Enter/Space activate.
|
|
83
|
+
* There is no arrow, Home, or End movement between links.
|
|
86
84
|
*
|
|
87
85
|
* @example
|
|
88
86
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Outline.d.ts","sourceRoot":"","sources":["../../src/Outline/Outline.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Outline.d.ts","sourceRoot":"","sources":["../../src/Outline/Outline.tsx"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAczC,YAAY,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,YAAa,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC1D,6CAA6C;IAC7C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B,+CAA+C;IAC/C,KAAK,EAAE,WAAW,EAAE,CAAC;IAErB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAEhC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,KAAK,EAAE,cAAc,EACrB,OAAmB,EACnB,eAAe,EACf,aAAa,EACb,MAAU,EACV,kBAAkB,EAClB,gBAAuB,EACvB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,YAAY,+BAqId;yBAtJe,OAAO"}
|