@astryxdesign/core 0.7.7 → 0.7.8-canary.0588a13
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 +46 -6
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +11 -3
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +1 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts +1 -1
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +55 -18
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
- package/dist/BottomSheet/bottomSheetStack.js +1 -1
- package/dist/BottomSheet/useSheetGestures.d.ts +3 -1
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +16 -1
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +17 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +18 -22
- package/dist/Calendar/getWeekdayHeaderNames.d.ts +16 -0
- package/dist/Calendar/getWeekdayHeaderNames.d.ts.map +1 -0
- package/dist/Calendar/getWeekdayHeaderNames.js +70 -0
- package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarDays.js +2 -10
- package/dist/Calendar/{standaloneShortWeekdayNames.generated.d.ts → weekdayHeaderNames.generated.d.ts} +14 -14
- package/dist/Calendar/weekdayHeaderNames.generated.d.ts.map +1 -0
- package/dist/Calendar/{standaloneShortWeekdayNames.generated.js → weekdayHeaderNames.generated.js} +12 -12
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +2 -0
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +6 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +2 -1
- package/dist/Chat/useChatDictation.d.ts.map +1 -1
- package/dist/Chat/useChatDictation.js +2 -0
- package/dist/Chat/useChatNewMessages.js +1 -1
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +2 -0
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +3 -0
- package/dist/Chat/useTriggerMenu.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +17 -12
- package/dist/CheckboxList/CheckboxList.d.ts +20 -2
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +12 -4
- package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
- package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListContext.js +2 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +14 -2
- package/dist/CheckboxList/requiredGroup.d.ts +22 -0
- package/dist/CheckboxList/requiredGroup.d.ts.map +1 -0
- package/dist/CheckboxList/requiredGroup.js +52 -0
- package/dist/CodeBlock/CodeBlock.d.ts +10 -1
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +28 -11
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +2 -0
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +2 -0
- 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/ContextMenu/ContextMenu.js +2 -2
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +5 -2
- package/dist/DateInput/PickerWheel.d.ts +19 -0
- package/dist/DateInput/PickerWheel.d.ts.map +1 -0
- package/dist/DateInput/PickerWheel.js +646 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +9 -30
- package/dist/DateInput/Wheel.d.ts +18 -37
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +133 -120
- package/dist/DateInput/datePickerTouch.d.ts +13 -0
- package/dist/DateInput/datePickerTouch.d.ts.map +1 -0
- package/dist/DateInput/datePickerTouch.js +14 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
- package/dist/DateInput/useOwnScrollGesture.js +16 -3
- package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
- package/dist/DateInput/usePointerDragScroll.js +2 -0
- package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
- package/dist/DateInput/useScrollSettle.js +3 -0
- package/dist/DateInput/useWheelListbox.d.ts +59 -0
- package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
- package/dist/DateInput/useWheelListbox.js +88 -0
- package/dist/DateInput/wheelOptions.d.ts +94 -0
- package/dist/DateInput/wheelOptions.d.ts.map +1 -0
- package/dist/DateInput/wheelOptions.js +110 -0
- package/dist/DateInput/wheelPhysics.d.ts +127 -0
- package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
- package/dist/DateInput/wheelPhysics.js +341 -0
- package/dist/DateInput/wheelStrip.d.ts +92 -0
- package/dist/DateInput/wheelStrip.d.ts.map +1 -0
- package/dist/DateInput/wheelStrip.js +258 -0
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.js +70 -127
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +9 -32
- package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
- package/dist/Drawer/useDrawerDialogPresence.js +3 -0
- package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
- package/dist/DropdownMenu/useMenuOverflow.js +5 -0
- package/dist/Field/Field.js +2 -2
- package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
- package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
- package/dist/FormLayout/FormLayout.d.ts +5 -1
- package/dist/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.d.ts +6 -4
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +48 -3
- package/dist/HoverCard/useHoverCard.d.ts +5 -4
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +26 -34
- package/dist/Icon/Icon.d.ts +5 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +20 -3
- package/dist/InfoTip/InfoTip.d.ts +5 -5
- package/dist/InfoTip/InfoTip.d.ts.map +1 -1
- package/dist/InfoTip/InfoTip.js +58 -19
- package/dist/Item/useSwipeAction.d.ts.map +1 -1
- package/dist/Item/useSwipeAction.js +3 -0
- package/dist/Layer/modalOutlet.d.ts.map +1 -1
- package/dist/Layer/modalOutlet.js +2 -0
- package/dist/Layer/outsidePress.d.ts.map +1 -1
- package/dist/Layer/outsidePress.js +1 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +4 -1
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
- package/dist/Layer/useLayerDismissal.js +3 -0
- package/dist/Layer/useTouchTrigger.d.ts +13 -7
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +20 -6
- package/dist/Layout/index.d.ts +1 -1
- package/dist/Layout/index.d.ts.map +1 -1
- package/dist/Layout/index.js +1 -1
- package/dist/Layout/layoutReset.js +1 -1
- package/dist/Layout/overlayPaddingReset.stylex.d.ts +68 -0
- package/dist/Layout/overlayPaddingReset.stylex.d.ts.map +1 -0
- package/dist/Layout/overlayPaddingReset.stylex.js +72 -0
- package/dist/Layout/padding.stylex.d.ts +5 -129
- package/dist/Layout/padding.stylex.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.js +9 -143
- package/dist/Layout/paddingStyles.stylex.d.ts +83 -0
- package/dist/Layout/paddingStyles.stylex.d.ts.map +1 -0
- package/dist/Layout/paddingStyles.stylex.js +99 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +20 -1
- package/dist/MobileNav/MobileNav.d.ts +3 -2
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +10 -26
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +2 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +2 -1
- package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
- package/dist/Outline/useOutlineFromDOM.js +3 -0
- package/dist/Outline/useScrollSpy.d.ts.map +1 -1
- package/dist/Outline/useScrollSpy.js +3 -0
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +3 -0
- package/dist/Overlay/Overlay.d.ts.map +1 -1
- package/dist/Overlay/Overlay.js +7 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +6 -0
- package/dist/Popover/usePopover.js +2 -2
- package/dist/PowerSearch/PowerSearch.d.ts +41 -4
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +441 -134
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +125 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.js +2041 -0
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +43 -10
- package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
- package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
- package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
- package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchToken.js +3 -2
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +273 -86
- package/dist/PowerSearch/formatFilterValue.d.ts +14 -7
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +31 -23
- package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
- package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
- package/dist/PowerSearch/formatTokenValue.js +161 -0
- package/dist/PowerSearch/index.d.ts +1 -1
- package/dist/PowerSearch/index.d.ts.map +1 -1
- package/dist/PowerSearch/powerSearchDateZone.d.ts +25 -0
- package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchDateZone.js +57 -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/PowerSearch/types.d.ts +8 -1
- package/dist/PowerSearch/types.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBarTouch.js +2 -0
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +3 -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 +2 -1
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +116 -92
- package/dist/Resizable/createResizable.d.ts +199 -0
- package/dist/Resizable/createResizable.d.ts.map +1 -0
- package/dist/Resizable/createResizable.js +733 -0
- package/dist/Resizable/separatorAttributes.d.ts +45 -0
- package/dist/Resizable/separatorAttributes.d.ts.map +1 -0
- package/dist/Resizable/separatorAttributes.js +35 -0
- package/dist/Resizable/useResizable.d.ts +3 -3
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +252 -459
- package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
- package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
- package/dist/SelectableCard/SelectableCard.d.ts +2 -0
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +36 -11
- package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
- package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
- package/dist/SelectableCard/selectableCardInput.js +20 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +7 -9
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +36 -5
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +16 -11
- package/dist/Slider/sliderTouchController.js +2 -2
- package/dist/Spinner/Spinner.d.ts +1 -1
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +60 -58
- package/dist/Stepper/Stepper.d.ts.map +1 -1
- package/dist/Stepper/Stepper.js +10 -15
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +4 -10
- package/dist/Switch/useSwitchTouch.js +4 -4
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +29 -8
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +12 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +17 -3
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +27 -14
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +2 -1
- package/dist/TextInput/TextInput.d.ts +2 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +12 -8
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +2 -0
- package/dist/TimeInput/TimeWheels.d.ts +32 -0
- package/dist/TimeInput/TimeWheels.d.ts.map +1 -0
- package/dist/TimeInput/TimeWheels.js +144 -0
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
- package/dist/TimeInput/TouchTimeField.js +63 -116
- package/dist/TimeInput/timeWheelRules.d.ts +124 -0
- package/dist/TimeInput/timeWheelRules.d.ts.map +1 -0
- package/dist/TimeInput/timeWheelRules.js +277 -0
- package/dist/Timer/Timer.d.ts.map +1 -1
- package/dist/Timer/Timer.js +2 -0
- package/dist/Timestamp/Timestamp.js +1 -1
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +1 -23
- package/dist/Toast/Toast.d.ts +11 -1
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +25 -15
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +97 -34
- package/dist/Toast/types.d.ts +9 -3
- package/dist/Toast/types.d.ts.map +1 -1
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +1 -0
- package/dist/Tokenizer/Tokenizer.d.ts +44 -46
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +20 -21
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
- package/dist/Tokenizer/TokenizerBottomSheet.js +12 -18
- package/dist/Tokenizer/index.d.ts +1 -1
- package/dist/Tokenizer/index.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.d.ts +2 -23
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.js +5 -29
- package/dist/Tooltip/useTooltip.d.ts +23 -30
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +200 -108
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +27 -18
- package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- 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 +53 -8
- package/dist/gestures/GestureHost.d.ts +16 -1
- package/dist/gestures/GestureHost.d.ts.map +1 -1
- package/dist/gestures/GestureHost.js +4 -1
- package/dist/gestures/PressTracker.d.ts.map +1 -1
- package/dist/gestures/PressTracker.js +4 -3
- package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
- package/dist/hooks/ModalAnnounceProvider.js +1 -0
- package/dist/hooks/actionGroupTracker.d.ts +4 -1
- package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
- package/dist/hooks/actionGroupTracker.js +18 -7
- 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/longPressDetector.d.ts +66 -0
- package/dist/hooks/longPressDetector.d.ts.map +1 -0
- package/dist/hooks/longPressDetector.js +200 -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/rootScrollStyles.d.ts +48 -0
- package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
- package/dist/hooks/rootScrollStyles.js +207 -0
- package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
- package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
- package/dist/hooks/scrollLockTouchGuard.js +117 -0
- package/dist/hooks/scrollbarGutter.d.ts +4 -4
- package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
- package/dist/hooks/scrollbarGutter.js +36 -23
- 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/useAnnounceRenderedText.d.ts.map +1 -1
- package/dist/hooks/useAnnounceRenderedText.js +1 -0
- package/dist/hooks/useAttachment.d.ts +1 -1
- package/dist/hooks/useAttachment.js +1 -1
- package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
- package/dist/hooks/useAutoMediaMode.js +1 -0
- package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
- package/dist/hooks/useBusyAnnouncement.js +2 -0
- package/dist/hooks/useDevWarning.d.ts.map +1 -1
- package/dist/hooks/useDevWarning.js +2 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +2 -0
- package/dist/hooks/useGridFocus.d.ts +8 -5
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +4 -3
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -0
- package/dist/hooks/useImageMode.d.ts.map +1 -1
- package/dist/hooks/useImageMode.js +3 -0
- 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/useIsomorphicLayoutEffect.d.ts +2 -2
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
- package/dist/hooks/useKeyboardHint.js +1 -1
- package/dist/hooks/useLongPress.d.ts +8 -9
- package/dist/hooks/useLongPress.d.ts.map +1 -1
- package/dist/hooks/useLongPress.js +23 -106
- package/dist/hooks/useMenuHover.d.ts.map +1 -1
- package/dist/hooks/useMenuHover.js +2 -0
- package/dist/hooks/useMenuPress.d.ts.map +1 -1
- package/dist/hooks/useMenuPress.js +3 -0
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +2 -1
- package/dist/hooks/usePressFeedback.d.ts.map +1 -1
- package/dist/hooks/usePressFeedback.js +1 -0
- package/dist/hooks/useResolvedRequired.d.ts +3 -0
- package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
- package/dist/hooks/useResolvedRequired.js +3 -0
- package/dist/hooks/useScrollLock.d.ts +8 -9
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +50 -48
- package/dist/hooks/useScrollableArea.d.ts.map +1 -1
- package/dist/hooks/useScrollableArea.js +5 -0
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +3 -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 +45 -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/Resizable/createResizable.generated.d.ts +8 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.js +13 -0
- package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.js +3 -1
- package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.js +3 -1
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts +8 -0
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.js +17 -0
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +37 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +37 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/internal/indicatorPress.stylex.d.ts +20 -0
- package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
- package/dist/internal/indicatorPress.stylex.js +26 -0
- package/dist/internal/selectable-card.d.ts +21 -0
- package/dist/internal/selectable-card.d.ts.map +1 -0
- package/dist/internal/selectable-card.js +20 -0
- package/dist/internal/sheetDraft.d.ts +2 -2
- package/dist/internal/sheetDraft.js +2 -2
- package/dist/keyboard/index.d.ts +17 -0
- package/dist/keyboard/index.d.ts.map +1 -0
- package/dist/keyboard/index.js +19 -0
- package/dist/keyboard/keyboardHeight.d.ts +149 -0
- package/dist/keyboard/keyboardHeight.d.ts.map +1 -0
- package/dist/keyboard/keyboardHeight.js +432 -0
- package/dist/keyboard/keyboardLayoutGuide.d.ts +59 -0
- package/dist/keyboard/keyboardLayoutGuide.d.ts.map +1 -0
- package/dist/keyboard/keyboardLayoutGuide.js +207 -0
- package/dist/keyboard/keyboardModel.d.ts +93 -0
- package/dist/keyboard/keyboardModel.d.ts.map +1 -0
- package/dist/keyboard/keyboardModel.js +220 -0
- package/dist/keyboard/rideKeyboard.d.ts +42 -0
- package/dist/keyboard/rideKeyboard.d.ts.map +1 -0
- package/dist/keyboard/rideKeyboard.js +77 -0
- package/dist/keyboard/useMobileKeyboard.d.ts +61 -0
- package/dist/keyboard/useMobileKeyboard.d.ts.map +1 -0
- package/dist/keyboard/useMobileKeyboard.js +699 -0
- package/dist/motion/android/index.d.ts +16 -0
- package/dist/motion/android/index.d.ts.map +1 -0
- package/dist/motion/android/index.js +18 -0
- package/dist/motion/android/keyboard.d.ts +83 -0
- package/dist/motion/android/keyboard.d.ts.map +1 -0
- package/dist/motion/android/keyboard.js +96 -0
- package/dist/motion/animatedLayout.d.ts +8 -0
- package/dist/motion/animatedLayout.d.ts.map +1 -1
- package/dist/motion/animatedLayout.js +246 -53
- package/dist/motion/animator.d.ts +14 -14
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +45 -26
- package/dist/motion/frameBlock.d.ts +14 -0
- package/dist/motion/frameBlock.d.ts.map +1 -0
- package/dist/motion/frameBlock.js +16 -0
- package/dist/motion/progress.d.ts +88 -0
- package/dist/motion/progress.d.ts.map +1 -0
- package/dist/motion/progress.js +128 -0
- package/dist/motion/reducedMotion.d.ts.map +1 -1
- package/dist/motion/reducedMotion.js +3 -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/datePicker.d.ts +58 -0
- package/dist/motion/uikit/datePicker.d.ts.map +1 -0
- package/dist/motion/uikit/datePicker.js +60 -0
- package/dist/motion/uikit/index.d.ts +6 -4
- package/dist/motion/uikit/index.d.ts.map +1 -1
- package/dist/motion/uikit/index.js +6 -4
- package/dist/motion/uikit/picker.d.ts +96 -0
- package/dist/motion/uikit/picker.d.ts.map +1 -0
- package/dist/motion/uikit/picker.js +117 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
- package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
- package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +29 -4
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +14 -13
- package/dist/theme/motionKnobs.d.ts +4 -3
- package/dist/theme/motionKnobs.d.ts.map +1 -1
- package/dist/theme/motionKnobs.js +3 -2
- package/dist/theme/themeMotion.d.ts +6 -0
- package/dist/theme/themeMotion.d.ts.map +1 -1
- package/dist/theme/themeMotion.js +15 -2
- package/dist/theme/tokens.stylex.d.ts +3 -0
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +4 -1
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +12 -0
- package/dist/utils/disabledInteraction.d.ts +10 -2
- package/dist/utils/disabledInteraction.d.ts.map +1 -1
- package/dist/utils/disabledInteraction.js +16 -2
- package/dist/utils/focusReturn.d.ts +22 -25
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +36 -29
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/interactionModality.d.ts.map +1 -1
- package/dist/utils/interactionModality.js +4 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +6 -4
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +6 -4
- package/dist/utils/isFocusDetached.d.ts +27 -0
- package/dist/utils/isFocusDetached.d.ts.map +1 -0
- package/dist/utils/isFocusDetached.js +32 -0
- package/dist/utils/layoutViewport.d.ts +25 -0
- package/dist/utils/layoutViewport.d.ts.map +1 -0
- package/dist/utils/layoutViewport.js +102 -0
- package/dist/utils/plainDate.d.ts +31 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +68 -4
- package/dist/utils/pressFeedback.d.ts +6 -0
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +97 -18
- package/dist/utils/pressGesture.d.ts +4 -2
- package/dist/utils/pressGesture.d.ts.map +1 -1
- package/dist/utils/pressGesture.js +3 -1
- package/dist/utils/selectionLock.d.ts +10 -1
- package/dist/utils/selectionLock.d.ts.map +1 -1
- package/dist/utils/selectionLock.js +31 -5
- package/dist/utils/sharedMutationObserver.d.ts +2 -1
- package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
- package/dist/utils/sharedMutationObserver.js +2 -1
- package/dist/utils/timeParser.d.ts +2 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +29 -3
- package/dist/utils/triggerFocus.d.ts +36 -0
- package/dist/utils/triggerFocus.d.ts.map +1 -0
- package/dist/utils/triggerFocus.js +65 -0
- package/locales/en.json +148 -0
- package/locales/pseudo.json +111 -0
- package/package.json +14 -9
- package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
- package/src/AlertDialog/AlertDialog.tsx +46 -5
- package/src/AppShell/AppShell.tsx +13 -4
- package/src/BottomSheet/BottomSheet.doc.mjs +1 -1
- package/src/BottomSheet/BottomSheet.tsx +1 -0
- package/src/BottomSheet/BottomSheetPanel.tsx +80 -16
- package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +5 -0
- package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
- package/src/BottomSheet/bottomSheetStack.ts +1 -1
- package/src/BottomSheet/useSheetGestures.ts +16 -1
- package/src/Button/Button.tsx +26 -4
- package/src/Calendar/Calendar.tsx +40 -32
- package/src/Calendar/getWeekdayHeaderNames.ts +88 -0
- package/src/Calendar/hooks/useCalendarDays.ts +5 -10
- package/src/Calendar/{standaloneShortWeekdayNames.generated.ts → weekdayHeaderNames.generated.ts} +14 -14
- package/src/Carousel/Carousel.tsx +1 -0
- package/src/Chat/ChatComposerInput.tsx +4 -7
- package/src/Chat/ChatMessageList.tsx +2 -1
- package/src/Chat/useChatDictation.ts +1 -0
- package/src/Chat/useChatNewMessages.ts +1 -1
- package/src/Chat/useChatStreamScroll.ts +2 -0
- package/src/Chat/useSpeechRecognition.ts +2 -0
- package/src/Chat/useTriggerMenu.tsx +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
- package/src/CheckboxInput/CheckboxInput.tsx +38 -15
- package/src/CheckboxList/CheckboxList.doc.mjs +14 -0
- package/src/CheckboxList/CheckboxList.tsx +43 -2
- package/src/CheckboxList/CheckboxListContext.tsx +9 -1
- package/src/CheckboxList/CheckboxListItem.tsx +23 -2
- package/src/CheckboxList/requiredGroup.ts +77 -0
- package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
- package/src/CodeBlock/CodeBlock.tsx +41 -4
- package/src/CommandPalette/CommandPalette.tsx +1 -0
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
- package/src/ComplexSelector/ComplexSelector.tsx +20 -5
- package/src/ContextMenu/ContextMenu.tsx +2 -2
- package/src/DateInput/MonthScroller.tsx +8 -2
- package/src/DateInput/PickerWheel.tsx +796 -0
- package/src/DateInput/TouchDateField.tsx +6 -32
- package/src/DateInput/Wheel.tsx +188 -171
- package/src/DateInput/datePickerTouch.ts +15 -0
- package/src/DateInput/useOwnScrollGesture.ts +25 -3
- package/src/DateInput/usePointerDragScroll.ts +1 -0
- package/src/DateInput/useScrollSettle.ts +2 -0
- package/src/DateInput/useWheelListbox.ts +112 -0
- package/src/DateInput/wheelOptions.ts +184 -0
- package/src/DateInput/wheelPhysics.ts +406 -0
- package/src/DateInput/wheelStrip.ts +341 -0
- package/src/DateTimeInput/TouchDateTimeField.tsx +100 -189
- package/src/Dialog/Dialog.tsx +12 -32
- package/src/Drawer/useDrawerDialogPresence.ts +2 -0
- package/src/DropdownMenu/useMenuOverflow.ts +3 -0
- package/src/Field/Field.tsx +2 -2
- package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
- package/src/FormLayout/FormLayout.doc.mjs +181 -46
- package/src/FormLayout/FormLayout.tsx +5 -1
- package/src/HoverCard/HoverCard.doc.mjs +10 -8
- package/src/HoverCard/HoverCard.tsx +58 -6
- package/src/HoverCard/useHoverCard.doc.mjs +178 -36
- package/src/HoverCard/useHoverCard.tsx +55 -55
- package/src/Icon/Icon.doc.mjs +51 -10
- package/src/Icon/Icon.tsx +31 -8
- package/src/IconButton/IconButton.doc.mjs +141 -21
- package/src/InfoTip/InfoTip.tsx +72 -16
- package/src/Item/useSwipeAction.ts +2 -0
- package/src/Layer/modalOutlet.ts +2 -0
- package/src/Layer/outsidePress.ts +1 -0
- package/src/Layer/useLayer.tsx +3 -1
- package/src/Layer/useLayerDismissal.ts +2 -0
- package/src/Layer/useTouchTrigger.ts +19 -6
- package/src/Layout/index.ts +1 -1
- package/src/Layout/layoutReset.ts +1 -1
- package/src/Layout/overlayPaddingReset.stylex.ts +73 -0
- package/src/Layout/padding.stylex.ts +9 -133
- package/src/Layout/paddingStyles.stylex.ts +87 -0
- package/src/Lightbox/Lightbox.tsx +20 -1
- package/src/Lightbox/useLightbox.doc.mjs +167 -0
- package/src/MobileNav/MobileNav.tsx +10 -31
- package/src/MultiSelector/MultiSelector.tsx +2 -7
- package/src/NumberInput/NumberInput.tsx +2 -7
- package/src/Outline/useOutlineFromDOM.ts +2 -0
- package/src/Outline/useScrollSpy.ts +2 -0
- package/src/OverflowList/OverflowList.tsx +2 -0
- package/src/Overlay/Overlay.tsx +7 -2
- package/src/Popover/Popover.tsx +4 -0
- package/src/Popover/usePopover.tsx +2 -2
- package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
- package/src/PowerSearch/PowerSearch.tsx +622 -157
- package/src/PowerSearch/PowerSearchBottomSheet.tsx +2700 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +65 -9
- package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
- package/src/PowerSearch/PowerSearchToken.tsx +2 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +340 -59
- package/src/PowerSearch/formatFilterValue.ts +49 -27
- package/src/PowerSearch/formatTokenValue.ts +220 -0
- package/src/PowerSearch/index.ts +5 -1
- package/src/PowerSearch/powerSearchDateZone.ts +95 -0
- package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
- package/src/PowerSearch/types.ts +8 -1
- package/src/ProgressBar/ProgressBarTouch.ts +2 -0
- package/src/RadioList/RadioList.tsx +3 -2
- package/src/RadioList/RadioListItem.tsx +5 -3
- package/src/Resizable/Resizable.doc.mjs +5 -4
- package/src/Resizable/ResizeHandle.tsx +187 -135
- package/src/Resizable/createResizable.ts +1046 -0
- package/src/Resizable/separatorAttributes.ts +73 -0
- package/src/Resizable/useResizable.ts +292 -623
- package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
- package/src/SelectableCard/SelectableCard.tsx +39 -10
- package/src/SelectableCard/selectableCardInput.ts +30 -0
- package/src/Selector/Selector.tsx +7 -19
- package/src/SideNav/SideNav.tsx +41 -5
- package/src/Slider/Slider.tsx +20 -11
- package/src/Slider/sliderTouchController.ts +2 -2
- package/src/Spinner/Spinner.tsx +77 -63
- package/src/Stepper/Stepper.tsx +10 -27
- package/src/Switch/Switch.tsx +2 -6
- package/src/Switch/useSwitchTouch.ts +4 -4
- package/src/Table/BaseTable.tsx +46 -12
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
- package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +31 -7
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
- package/src/Table/plugins/tree/useTableTreeData.tsx +43 -20
- package/src/Table/useTableRowExpansion.doc.mjs +9 -0
- package/src/Table/useTableTreeData.doc.mjs +15 -3
- package/src/TextArea/TextArea.tsx +2 -7
- package/src/TextInput/TextInput.tsx +13 -17
- package/src/TimeInput/TimeInput.tsx +2 -0
- package/src/TimeInput/TimeWheels.tsx +218 -0
- package/src/TimeInput/TouchTimeField.tsx +93 -155
- package/src/TimeInput/timeWheelRules.ts +352 -0
- package/src/Timer/Timer.tsx +1 -0
- package/src/Timestamp/Timestamp.tsx +1 -1
- package/src/Timestamp/formatInstant.ts +1 -33
- package/src/Toast/Toast.doc.mjs +4 -3
- package/src/Toast/Toast.tsx +52 -32
- package/src/Toast/ToastViewport.tsx +123 -35
- package/src/Toast/types.ts +9 -3
- package/src/Toast/useToast.tsx +1 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +10 -10
- package/src/Tokenizer/Tokenizer.tsx +61 -62
- package/src/Tokenizer/TokenizerBottomSheet.tsx +17 -23
- package/src/Tokenizer/index.ts +1 -0
- package/src/Tooltip/Tooltip.tsx +6 -42
- package/src/Tooltip/useTooltip.doc.mjs +24 -0
- package/src/Tooltip/useTooltip.tsx +243 -134
- package/src/Typeahead/BaseTypeahead.tsx +27 -17
- package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
- package/src/Typeahead/TypeaheadItem.tsx +2 -1
- package/src/animator/createAnimator.doc.mjs +153 -0
- package/src/animator/createAnimator.ts +324 -0
- package/src/gestures/GestureHost.ts +6 -5
- package/src/gestures/PressTracker.ts +4 -3
- package/src/gestures/README.md +10 -4
- package/src/hooks/ModalAnnounceProvider.tsx +1 -0
- package/src/hooks/actionGroupTracker.ts +25 -9
- package/src/hooks/index.ts +2 -0
- package/src/hooks/longPressDetector.ts +273 -0
- package/src/hooks/pressGroupContext.ts +21 -0
- package/src/hooks/rootScrollStyles.ts +247 -0
- package/src/hooks/scrollLockTouchGuard.ts +149 -0
- package/src/hooks/scrollbarGutter.ts +41 -26
- 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/useAnnounceRenderedText.ts +1 -0
- package/src/hooks/useAttachment.ts +1 -1
- package/src/hooks/useAutoMediaMode.ts +1 -0
- package/src/hooks/useBusyAnnouncement.ts +2 -0
- package/src/hooks/useDevWarning.ts +2 -0
- package/src/hooks/useFocusTrap.ts +2 -0
- package/src/hooks/useGridFocus.doc.mjs +6 -6
- package/src/hooks/useGridFocus.ts +10 -7
- package/src/hooks/useHotkeys.ts +2 -0
- package/src/hooks/useImageMode.ts +2 -0
- package/src/hooks/useInputStatusIcon.tsx +3 -2
- package/src/hooks/useKeyboardHint.tsx +1 -1
- package/src/hooks/useLongPress.doc.mjs +2 -2
- package/src/hooks/useLongPress.ts +32 -122
- package/src/hooks/useMenuHover.ts +1 -0
- package/src/hooks/useMenuPress.ts +2 -0
- package/src/hooks/useOverflow.ts +2 -1
- package/src/hooks/usePressFeedback.ts +1 -0
- package/src/hooks/useResolvedRequired.ts +3 -0
- package/src/hooks/useScrollLock.doc.mjs +51 -12
- package/src/hooks/useScrollLock.ts +53 -60
- package/src/hooks/useScrollableArea.ts +4 -0
- package/src/hooks/useStreamingText.ts +2 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +46 -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/Resizable/createResizable.generated.ts +14 -0
- package/src/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.ts +3 -1
- package/src/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.ts +3 -1
- package/src/i18n/generated-english/TimeInput/TimeWheels.generated.ts +18 -0
- package/src/i18n/generated-locales/en.generated.ts +47 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +48 -0
- package/src/index.ts +13 -0
- package/src/internal/indicatorPress.stylex.ts +24 -0
- package/src/internal/selectable-card.ts +21 -0
- package/src/internal/sheetDraft.ts +2 -2
- package/src/keyboard/README.md +197 -0
- package/src/keyboard/index.ts +48 -0
- package/src/keyboard/keyboardHeight.ts +543 -0
- package/src/keyboard/keyboardLayoutGuide.ts +266 -0
- package/src/keyboard/keyboardModel.ts +301 -0
- package/src/keyboard/rideKeyboard.ts +100 -0
- package/src/keyboard/useMobileKeyboard.ts +866 -0
- package/src/motion/MEASUREMENTS.md +28 -0
- package/src/motion/README.md +12 -5
- package/src/motion/android/index.ts +18 -0
- package/src/motion/android/keyboard.ts +96 -0
- package/src/motion/animatedLayout.ts +323 -60
- package/src/motion/animator.ts +66 -37
- package/src/motion/frameBlock.ts +16 -0
- package/src/motion/progress.ts +155 -0
- package/src/motion/reducedMotion.ts +3 -1
- package/src/motion/uikit/alert.ts +43 -0
- package/src/motion/uikit/datePicker.ts +60 -0
- package/src/motion/uikit/index.ts +6 -4
- package/src/motion/uikit/picker.ts +116 -0
- package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
- package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
- package/src/theme/Theme.tsx +37 -3
- package/src/theme/generateThemeRules.ts +14 -12
- package/src/theme/motionKnobs.ts +4 -3
- package/src/theme/themeMotion.ts +17 -2
- package/src/theme/tokens.stylex.ts +2 -0
- package/src/utils/dateParser.ts +16 -0
- package/src/utils/disabledInteraction.ts +23 -2
- package/src/utils/focusReturn.ts +38 -31
- package/src/utils/index.ts +1 -1
- package/src/utils/interactionModality.ts +4 -0
- package/src/utils/interactionOverlay.stylex.ts +6 -4
- package/src/utils/isFocusDetached.ts +34 -0
- package/src/utils/layoutViewport.ts +104 -0
- package/src/utils/plainDate.ts +80 -4
- package/src/utils/pressFeedback.ts +126 -30
- package/src/utils/pressGesture.ts +4 -2
- package/src/utils/selectionLock.ts +40 -6
- package/src/utils/sharedMutationObserver.ts +2 -1
- package/src/utils/timeParser.ts +40 -3
- package/src/utils/triggerFocus.ts +80 -0
- package/dist/BottomSheet/useMobileKeyboard.d.ts +0 -21
- package/dist/BottomSheet/useMobileKeyboard.d.ts.map +0 -1
- package/dist/BottomSheet/useMobileKeyboard.js +0 -407
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +0 -14
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +0 -1
- package/dist/Calendar/getStandaloneShortWeekdayNames.js +0 -26
- package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +0 -1
- package/dist/Layer/usePressPin.d.ts +0 -93
- package/dist/Layer/usePressPin.d.ts.map +0 -1
- package/dist/Layer/usePressPin.js +0 -363
- package/dist/internal/touch-sheet.d.ts +0 -21
- package/dist/internal/touch-sheet.d.ts.map +0 -1
- package/dist/internal/touch-sheet.js +0 -19
- package/src/BottomSheet/useMobileKeyboard.ts +0 -538
- package/src/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
- package/src/Layer/usePressPin.ts +0 -510
- package/src/internal/touch-sheet.ts +0 -21
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file useTooltip.tsx
|
|
7
|
-
* @input Uses useLayer,
|
|
8
|
-
* @output Exports useTooltip hook with stable trigger refs for hover/focus/tap tooltips
|
|
9
|
-
* and
|
|
7
|
+
* @input Uses useLayer, useTouchTriggerInternal, React hooks
|
|
8
|
+
* @output Exports useTooltip hook with stable trigger refs for hover/focus/tap tooltips
|
|
9
|
+
* and imperative show() and hide() for an app-built toggle trigger
|
|
10
10
|
* @position Layer hook; builds on useLayer for tooltip behavior
|
|
11
11
|
*
|
|
12
12
|
* SYNC: When modified, update:
|
|
@@ -17,9 +17,11 @@ import {
|
|
|
17
17
|
useCallback,
|
|
18
18
|
useEffect,
|
|
19
19
|
useRef,
|
|
20
|
+
useState,
|
|
20
21
|
type ReactNode,
|
|
21
22
|
type RefCallback,
|
|
22
23
|
} from 'react';
|
|
24
|
+
import {createTriggerFocusGate} from '../utils/triggerFocus';
|
|
23
25
|
import * as stylex from '@stylexjs/stylex';
|
|
24
26
|
import {
|
|
25
27
|
useLayerInternal,
|
|
@@ -27,12 +29,14 @@ import {
|
|
|
27
29
|
type LayerAlignment,
|
|
28
30
|
type LayerPlacement,
|
|
29
31
|
} from '../Layer/useLayer';
|
|
30
|
-
import
|
|
32
|
+
import {
|
|
33
|
+
useTouchTriggerInternal,
|
|
34
|
+
type LayerTouchTrigger,
|
|
35
|
+
} from '../Layer/useTouchTrigger';
|
|
31
36
|
import {useAnnounceRenderedText} from '../hooks/useAnnounceRenderedText';
|
|
32
37
|
import {useMergedRefs} from '../hooks/useMergedRefs';
|
|
33
38
|
import {layerAnimations} from '../Layer/layerAnimations.stylex';
|
|
34
39
|
import {registerLayerSurface} from '../Layer/layerSurfacePress';
|
|
35
|
-
import {usePressPin, type LayerTriggerBehavior} from '../Layer/usePressPin';
|
|
36
40
|
import {useLayerDismissal} from '../Layer/useLayerDismissal';
|
|
37
41
|
import {themeProps} from '../utils/themeProps';
|
|
38
42
|
import {
|
|
@@ -216,29 +220,27 @@ export interface TooltipReturn {
|
|
|
216
220
|
children: ReactNode,
|
|
217
221
|
props?: Omit<ContextRenderProps, 'positioning'>,
|
|
218
222
|
) => ReactNode;
|
|
219
|
-
}
|
|
220
223
|
|
|
221
|
-
/**
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
return false;
|
|
224
|
+
/**
|
|
225
|
+
* Opens the tooltip now and keeps it open until `hide()`, Escape, a press
|
|
226
|
+
* outside, or focus leaving its trigger. If a press on the trigger is down
|
|
227
|
+
* when you call it, and the press ends off the trigger with no click, the
|
|
228
|
+
* hold ends. The hover rules then decide.
|
|
229
|
+
* Its text is announced once. Reports through `onShow`. Under a controlled `isOpen`,
|
|
230
|
+
* it calls `onShow` and does not change `isOpen`. Does nothing while
|
|
231
|
+
* `isEnabled` is false.
|
|
232
|
+
*
|
|
233
|
+
* Use `show()` and `hide()` to build a toggle-style trigger: your own button
|
|
234
|
+
* calls them, sets `aria-describedby` and `aria-controls` to `describedBy`
|
|
235
|
+
* and `aria-expanded` (true while shown), and keeps its own accessible name.
|
|
236
|
+
*/
|
|
237
|
+
show: () => void;
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Closes the tooltip now. Reports through `onHide`. Under a controlled
|
|
241
|
+
* `isOpen`, it calls `onHide` and does not change `isOpen`.
|
|
242
|
+
*/
|
|
243
|
+
hide: () => void;
|
|
242
244
|
}
|
|
243
245
|
|
|
244
246
|
/**
|
|
@@ -267,42 +269,6 @@ function isFocusable(element: HTMLElement): boolean {
|
|
|
267
269
|
*/
|
|
268
270
|
|
|
269
271
|
export function useTooltip(options: TooltipOptions = {}): TooltipReturn {
|
|
270
|
-
// The option is fixed to `adaptive`, so an options object that carries it at
|
|
271
|
-
// runtime cannot reach the press-to-pin path.
|
|
272
|
-
return useTooltipWithTriggerBehavior({
|
|
273
|
-
...options,
|
|
274
|
-
triggerBehavior: 'adaptive',
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
* Module-only options for `useTooltipWithTriggerBehavior`. Not exported from
|
|
280
|
-
* the package.
|
|
281
|
-
*/
|
|
282
|
-
export interface TooltipWithTriggerBehaviorOptions extends TooltipOptions {
|
|
283
|
-
/**
|
|
284
|
-
* How the trigger opens the tooltip:
|
|
285
|
-
* - `adaptive` (the default): hover and focus preview it. `touchTrigger`
|
|
286
|
-
* decides taps.
|
|
287
|
-
* - `toggle`: on a button trigger, a click, a tap, Enter, or Space pins the
|
|
288
|
-
* tooltip open, and the same press closes it. Hover and keyboard focus
|
|
289
|
-
* still preview it. A pinned tooltip stays until Escape, a second press,
|
|
290
|
-
* a press outside, or focus leaving. The trigger reports `aria-expanded`
|
|
291
|
-
* and `aria-controls`, and the tooltip's text is announced once when it
|
|
292
|
-
* pins. `touchTrigger` is ignored. InfoTip uses it.
|
|
293
|
-
*
|
|
294
|
-
* @default 'adaptive'
|
|
295
|
-
*/
|
|
296
|
-
triggerBehavior?: LayerTriggerBehavior;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* `useTooltip` with a trigger behavior. Module-only: InfoTip's press-to-pin
|
|
301
|
-
* goes through it, and the package does not export it.
|
|
302
|
-
*/
|
|
303
|
-
export function useTooltipWithTriggerBehavior(
|
|
304
|
-
options: TooltipWithTriggerBehaviorOptions = {},
|
|
305
|
-
): TooltipReturn {
|
|
306
272
|
const {
|
|
307
273
|
placement = 'above',
|
|
308
274
|
alignment = 'center',
|
|
@@ -310,7 +276,6 @@ export function useTooltipWithTriggerBehavior(
|
|
|
310
276
|
hideDelay = 0,
|
|
311
277
|
focusTrigger = 'auto',
|
|
312
278
|
touchTrigger = 'auto',
|
|
313
|
-
triggerBehavior = 'adaptive',
|
|
314
279
|
isEnabled = true,
|
|
315
280
|
isOpen,
|
|
316
281
|
isDefaultOpen = false,
|
|
@@ -368,39 +333,122 @@ export function useTooltipWithTriggerBehavior(
|
|
|
368
333
|
hideLayer();
|
|
369
334
|
}, [clearTimeouts, hideLayer]);
|
|
370
335
|
|
|
371
|
-
//
|
|
372
|
-
|
|
336
|
+
// DOM listeners read the latest controlled state through a ref.
|
|
337
|
+
const latestRef = useRef({isOpen, isLayerOpen, onShow, onHide});
|
|
338
|
+
latestRef.current = {isOpen, isLayerOpen, onShow, onHide};
|
|
339
|
+
|
|
340
|
+
// The app's show() holds the tooltip open until hide(), Escape, a press or
|
|
341
|
+
// scroll outside, or focus leaving the trigger and the tooltip.
|
|
342
|
+
const isHeldRef = useRef(false);
|
|
343
|
+
const [isHeldState, setIsHeldState] = useState(false);
|
|
344
|
+
const setHeld = useCallback((next: boolean) => {
|
|
345
|
+
isHeldRef.current = next;
|
|
346
|
+
setIsHeldState(next);
|
|
347
|
+
}, []);
|
|
348
|
+
|
|
349
|
+
// Whether the current hold began during a press on the trigger. Such a
|
|
350
|
+
// hold ends with the press when the press ends off the trigger, as no click
|
|
351
|
+
// pins it. The hover rules then decide. isHoldInThisTaskRef covers a show()
|
|
352
|
+
// that runs before the hook's own pointerdown listener.
|
|
353
|
+
const isHoldFromPressRef = useRef(false);
|
|
354
|
+
const isHoldInThisTaskRef = useRef(false);
|
|
355
|
+
const handleReleaseInLayer = useCallback(() => {
|
|
356
|
+
if (isHoldFromPressRef.current && isHeldRef.current) {
|
|
357
|
+
isHoldFromPressRef.current = false;
|
|
358
|
+
setHeld(false);
|
|
359
|
+
}
|
|
360
|
+
}, [setHeld]);
|
|
361
|
+
|
|
362
|
+
// The touch trigger's outside dismissal (a press or scroll outside) ends a
|
|
363
|
+
// hold with the tooltip.
|
|
364
|
+
const hideFromTouch = useCallback(() => {
|
|
365
|
+
if (isHeldRef.current) {
|
|
366
|
+
setHeld(false);
|
|
367
|
+
const latest = latestRef.current;
|
|
368
|
+
if (latest.isOpen !== undefined) {
|
|
369
|
+
latest.onHide?.();
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
hideNow();
|
|
374
|
+
}, [setHeld, hideNow]);
|
|
375
|
+
|
|
373
376
|
const {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
377
|
+
isTouchPointerRef,
|
|
378
|
+
isTouchInteraction,
|
|
379
|
+
handlePointerEnter,
|
|
380
|
+
handlePointerDown: handleTouchPointerDown,
|
|
381
|
+
clearTapOpen,
|
|
382
|
+
armOutsideDismiss,
|
|
383
|
+
} = useTouchTriggerInternal(
|
|
384
|
+
{
|
|
385
|
+
touchTrigger,
|
|
386
|
+
isEnabled,
|
|
387
|
+
isControlled: isOpen !== undefined,
|
|
388
|
+
isOpen: isLayerOpen,
|
|
389
|
+
layerId,
|
|
390
|
+
triggerRef,
|
|
391
|
+
show: showNow,
|
|
392
|
+
hide: hideFromTouch,
|
|
385
393
|
},
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
touchTrigger,
|
|
389
|
-
isEnabled,
|
|
390
|
-
isOpen,
|
|
391
|
-
isLayerOpen,
|
|
392
|
-
layerId,
|
|
393
|
-
triggerRef,
|
|
394
|
-
component: 'Tooltip',
|
|
395
|
-
show: showNow,
|
|
396
|
-
hide: hideNow,
|
|
397
|
-
report: next => (next ? onShow?.() : onHide?.()),
|
|
398
|
-
});
|
|
394
|
+
handleReleaseInLayer,
|
|
395
|
+
);
|
|
399
396
|
|
|
400
|
-
|
|
397
|
+
const isHeldOpen = useCallback(() => {
|
|
398
|
+
const latest = latestRef.current;
|
|
399
|
+
return isHeldRef.current && latest.isLayerOpen && latest.isOpen !== false;
|
|
400
|
+
}, []);
|
|
401
|
+
|
|
402
|
+
const releaseHold = useCallback(() => {
|
|
403
|
+
clearTapOpen();
|
|
404
|
+
setHeld(false);
|
|
405
|
+
const latest = latestRef.current;
|
|
406
|
+
if (latest.isOpen !== undefined) {
|
|
407
|
+
latest.onHide?.();
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
hideNow();
|
|
411
|
+
}, [clearTapOpen, setHeld, hideNow]);
|
|
412
|
+
|
|
413
|
+
const dropHold = useCallback(() => {
|
|
414
|
+
if (isHeldRef.current) {
|
|
415
|
+
setHeld(false);
|
|
416
|
+
}
|
|
417
|
+
}, [setHeld]);
|
|
418
|
+
|
|
419
|
+
// Focus leaving the trigger and the tooltip ends a hold, whatever
|
|
420
|
+
// `focusTrigger` is. Focus that leaves for no element is a press's to
|
|
421
|
+
// decide. The trigger can sit in another document, so the check uses its
|
|
422
|
+
// own window.
|
|
423
|
+
const handleHeldFocusOut = useCallback(
|
|
424
|
+
(event: FocusEvent) => {
|
|
425
|
+
if (!isHeldOpen()) {
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
const next = event.relatedTarget;
|
|
429
|
+
const trigger = triggerRef.current;
|
|
430
|
+
const view = trigger?.ownerDocument.defaultView;
|
|
431
|
+
if (view == null || !(next instanceof view.Node)) {
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
const surface = trigger?.ownerDocument.getElementById(layerId) ?? null;
|
|
435
|
+
if (
|
|
436
|
+
trigger?.contains(next) === true ||
|
|
437
|
+
surface?.contains(next) === true
|
|
438
|
+
) {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
releaseHold();
|
|
442
|
+
},
|
|
443
|
+
[isHeldOpen, layerId, releaseHold],
|
|
444
|
+
);
|
|
445
|
+
|
|
446
|
+
const isHoldShown = isHeldState && isLayerOpen && isOpen !== false;
|
|
447
|
+
|
|
448
|
+
// Only a hold announces the text: a preview is already the trigger's
|
|
401
449
|
// description.
|
|
402
450
|
const contentRef = useRef<HTMLDivElement | null>(null);
|
|
403
|
-
useAnnounceRenderedText(contentRef,
|
|
451
|
+
useAnnounceRenderedText(contentRef, isHoldShown, 'pinned');
|
|
404
452
|
const contentRefs = useMergedRefs<HTMLDivElement>(
|
|
405
453
|
contentRef,
|
|
406
454
|
registerLayerSurface,
|
|
@@ -433,7 +481,7 @@ export function useTooltipWithTriggerBehavior(
|
|
|
433
481
|
// trigger onto the tooltip surface without the tooltip vanishing — required
|
|
434
482
|
// for WCAG 1.4.13 (Content on Hover or Focus: hoverable).
|
|
435
483
|
const scheduleHide = useCallback(() => {
|
|
436
|
-
if (isOpen === true ||
|
|
484
|
+
if (isOpen === true || isHeldOpen()) {
|
|
437
485
|
return;
|
|
438
486
|
}
|
|
439
487
|
clearTimeouts();
|
|
@@ -441,7 +489,7 @@ export function useTooltipWithTriggerBehavior(
|
|
|
441
489
|
hideTimeoutRef.current = setTimeout(() => {
|
|
442
490
|
hideLayer();
|
|
443
491
|
}, effectiveHideDelay);
|
|
444
|
-
}, [isOpen,
|
|
492
|
+
}, [isOpen, isHeldOpen, clearTimeouts, hideLayer, hideDelay]);
|
|
445
493
|
|
|
446
494
|
// Cancel a pending hide (e.g. the pointer entered the tooltip surface).
|
|
447
495
|
const cancelHide = useCallback(() => {
|
|
@@ -485,32 +533,13 @@ export function useTooltipWithTriggerBehavior(
|
|
|
485
533
|
[isTouchPointerRef, layerId, scheduleHide],
|
|
486
534
|
);
|
|
487
535
|
|
|
488
|
-
// Under `auto`, whether focus counts is decided when it arrives,
|
|
489
|
-
//
|
|
490
|
-
|
|
491
|
-
// by definition; focus inside it counts only while the trigger is
|
|
492
|
-
// focusable too, so a plain wrapper still ignores its children's focus.
|
|
493
|
-
const isFocusForTrigger = useCallback(
|
|
494
|
-
(e: Event): boolean => {
|
|
495
|
-
if (focusTrigger === 'always') {
|
|
496
|
-
return true;
|
|
497
|
-
}
|
|
498
|
-
const triggerEl = e.currentTarget as HTMLElement | null;
|
|
499
|
-
return (
|
|
500
|
-
triggerEl != null && (e.target === triggerEl || isFocusable(triggerEl))
|
|
501
|
-
);
|
|
502
|
-
},
|
|
503
|
-
[focusTrigger],
|
|
504
|
-
);
|
|
505
|
-
|
|
506
|
-
// Whether the trigger's current focus counted when it arrived, so its blur
|
|
507
|
-
// hides the tooltip even if the trigger has since left the tab order.
|
|
508
|
-
const focusCountedRef = useRef(false);
|
|
536
|
+
// Under `auto`, whether focus counts is decided when it arrives, and a
|
|
537
|
+
// focus that counted still hides on blur (utils/triggerFocus.ts).
|
|
538
|
+
const [focusGate] = useState(createTriggerFocusGate);
|
|
509
539
|
|
|
510
540
|
const handleFocusIn = useCallback(
|
|
511
541
|
(e: Event) => {
|
|
512
|
-
|
|
513
|
-
if (!isEnabled || !focusCountedRef.current) {
|
|
542
|
+
if (!focusGate.focusIn(e, focusTrigger) || !isEnabled) {
|
|
514
543
|
return;
|
|
515
544
|
}
|
|
516
545
|
// A tap focuses the trigger it activates, and `:focus-visible` does not
|
|
@@ -531,26 +560,26 @@ export function useTooltipWithTriggerBehavior(
|
|
|
531
560
|
showLayer();
|
|
532
561
|
},
|
|
533
562
|
[
|
|
563
|
+
focusGate,
|
|
564
|
+
focusTrigger,
|
|
534
565
|
isEnabled,
|
|
535
|
-
isFocusForTrigger,
|
|
536
566
|
isTouchInteraction,
|
|
537
567
|
clearTimeouts,
|
|
538
568
|
showLayer,
|
|
539
569
|
],
|
|
540
570
|
);
|
|
541
571
|
|
|
542
|
-
// A
|
|
543
|
-
// trigger whatever `focusTrigger` is. This schedules the
|
|
544
|
-
//
|
|
572
|
+
// A held tooltip's focus-leave close is the hold's own: it listens on the
|
|
573
|
+
// trigger whatever `focusTrigger` is. This schedules the unheld hide, which
|
|
574
|
+
// a held tooltip skips.
|
|
545
575
|
const handleFocusOut = useCallback(
|
|
546
576
|
(e: Event) => {
|
|
547
|
-
if (!
|
|
577
|
+
if (!focusGate.focusOut(e, focusTrigger)) {
|
|
548
578
|
return;
|
|
549
579
|
}
|
|
550
|
-
focusCountedRef.current = false;
|
|
551
580
|
scheduleHide();
|
|
552
581
|
},
|
|
553
|
-
[
|
|
582
|
+
[focusGate, focusTrigger, scheduleHide],
|
|
554
583
|
);
|
|
555
584
|
|
|
556
585
|
// Pressing the trigger hides its own tooltip: once the control is activated
|
|
@@ -560,14 +589,56 @@ export function useTooltipWithTriggerBehavior(
|
|
|
560
589
|
// is owned by the consumer. `hideLayer()` self-guards when already closed.
|
|
561
590
|
// A touch press is a different gesture (it may be the only way to open the
|
|
562
591
|
// tooltip at all), so the touch path answers it first.
|
|
592
|
+
// Whether a press on the trigger is down, from the hook's pointerdown to
|
|
593
|
+
// the press's end.
|
|
594
|
+
const isTriggerPressedRef = useRef(false);
|
|
595
|
+
const stopPressTrackingRef = useRef<(() => void) | null>(null);
|
|
596
|
+
const trackTriggerPress = useCallback(() => {
|
|
597
|
+
stopPressTrackingRef.current?.();
|
|
598
|
+
const view = triggerRef.current?.ownerDocument.defaultView;
|
|
599
|
+
if (view == null) {
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
isTriggerPressedRef.current = true;
|
|
603
|
+
const trigger = triggerRef.current;
|
|
604
|
+
const stop = (event?: Event) => {
|
|
605
|
+
// A press that ends on the trigger keeps its hold, as a click does.
|
|
606
|
+
if (
|
|
607
|
+
event?.type === 'pointerup' &&
|
|
608
|
+
event.target instanceof view.Node &&
|
|
609
|
+
trigger?.contains(event.target) === true
|
|
610
|
+
) {
|
|
611
|
+
isHoldFromPressRef.current = false;
|
|
612
|
+
}
|
|
613
|
+
view.removeEventListener('pointerup', stop, true);
|
|
614
|
+
view.removeEventListener('pointercancel', stop, true);
|
|
615
|
+
isTriggerPressedRef.current = false;
|
|
616
|
+
stopPressTrackingRef.current = null;
|
|
617
|
+
};
|
|
618
|
+
view.addEventListener('pointerup', stop, true);
|
|
619
|
+
view.addEventListener('pointercancel', stop, true);
|
|
620
|
+
stopPressTrackingRef.current = stop;
|
|
621
|
+
}, []);
|
|
622
|
+
|
|
563
623
|
const handlePointerDown = useCallback(
|
|
564
624
|
(event: PointerEvent) => {
|
|
565
|
-
|
|
566
|
-
//
|
|
567
|
-
|
|
625
|
+
trackTriggerPress();
|
|
626
|
+
// The app's hide() closes a held tooltip. A press neither hides it here
|
|
627
|
+
// nor waits for a tap verdict. A show() in a capture handler of this
|
|
628
|
+
// press runs before this listener. Tie that hold to the press.
|
|
629
|
+
if (isHeldRef.current) {
|
|
630
|
+
if (isHoldInThisTaskRef.current) {
|
|
631
|
+
isHoldFromPressRef.current = true;
|
|
632
|
+
}
|
|
568
633
|
return;
|
|
569
634
|
}
|
|
570
635
|
if (handleTouchPointerDown(event)) {
|
|
636
|
+
// A pen in range starts the hover show before it lands. Left pending,
|
|
637
|
+
// that show opens the layer during the press. The tap then closes it.
|
|
638
|
+
if (showTimeoutRef.current) {
|
|
639
|
+
clearTimeout(showTimeoutRef.current);
|
|
640
|
+
showTimeoutRef.current = null;
|
|
641
|
+
}
|
|
571
642
|
return;
|
|
572
643
|
}
|
|
573
644
|
if (isOpen !== undefined) {
|
|
@@ -576,7 +647,13 @@ export function useTooltipWithTriggerBehavior(
|
|
|
576
647
|
clearTimeouts();
|
|
577
648
|
hideLayer();
|
|
578
649
|
},
|
|
579
|
-
[
|
|
650
|
+
[
|
|
651
|
+
handleTouchPointerDown,
|
|
652
|
+
trackTriggerPress,
|
|
653
|
+
isOpen,
|
|
654
|
+
clearTimeouts,
|
|
655
|
+
hideLayer,
|
|
656
|
+
],
|
|
580
657
|
);
|
|
581
658
|
|
|
582
659
|
// Interaction ref that handles event listeners only
|
|
@@ -588,6 +665,8 @@ export function useTooltipWithTriggerBehavior(
|
|
|
588
665
|
triggerRef.current.removeEventListener('mouseleave', handleMouseLeave);
|
|
589
666
|
triggerRef.current.removeEventListener('focusin', handleFocusIn);
|
|
590
667
|
triggerRef.current.removeEventListener('focusout', handleFocusOut);
|
|
668
|
+
triggerRef.current.removeEventListener('focusout', handleHeldFocusOut);
|
|
669
|
+
stopPressTrackingRef.current?.();
|
|
591
670
|
triggerRef.current.removeEventListener(
|
|
592
671
|
'pointerenter',
|
|
593
672
|
handlePointerEnter,
|
|
@@ -609,18 +688,19 @@ export function useTooltipWithTriggerBehavior(
|
|
|
609
688
|
el.addEventListener('pointerdown', handlePointerDown);
|
|
610
689
|
|
|
611
690
|
// Focus listeners unless focus never opens the tooltip; `auto` decides
|
|
612
|
-
// per event (
|
|
691
|
+
// per event (utils/triggerFocus.ts).
|
|
613
692
|
if (focusTrigger !== 'never') {
|
|
614
693
|
el.addEventListener('focusin', handleFocusIn);
|
|
615
694
|
el.addEventListener('focusout', handleFocusOut);
|
|
616
695
|
}
|
|
617
696
|
}
|
|
618
697
|
|
|
698
|
+
// Its own focus-leave listener: `focusTrigger="never"` attaches none.
|
|
699
|
+
el?.addEventListener('focusout', handleHeldFocusOut);
|
|
619
700
|
triggerRef.current = el;
|
|
620
|
-
attachPressPin(el);
|
|
621
701
|
},
|
|
622
702
|
[
|
|
623
|
-
|
|
703
|
+
handleHeldFocusOut,
|
|
624
704
|
focusTrigger,
|
|
625
705
|
handleMouseEnter,
|
|
626
706
|
handleMouseLeave,
|
|
@@ -665,9 +745,11 @@ export function useTooltipWithTriggerBehavior(
|
|
|
665
745
|
showLayer();
|
|
666
746
|
} else {
|
|
667
747
|
clearTimeouts();
|
|
748
|
+
// A hold ends when the consumer closes the tooltip.
|
|
749
|
+
dropHold();
|
|
668
750
|
hideLayer();
|
|
669
751
|
}
|
|
670
|
-
}, [isOpen, clearTimeouts, showLayer, hideLayer]);
|
|
752
|
+
}, [isOpen, clearTimeouts, showLayer, hideLayer, dropHold]);
|
|
671
753
|
|
|
672
754
|
// Dismiss on Escape (WCAG 1.4.13 — dismissible) through the shared layer
|
|
673
755
|
// stack. A visible tip is the top-most layer, so it takes the press and
|
|
@@ -708,7 +790,7 @@ export function useTooltipWithTriggerBehavior(
|
|
|
708
790
|
onDismiss: () => {
|
|
709
791
|
clearTimeouts();
|
|
710
792
|
clearTapOpen();
|
|
711
|
-
|
|
793
|
+
dropHold();
|
|
712
794
|
if (isOpen !== undefined) {
|
|
713
795
|
onHide?.();
|
|
714
796
|
return;
|
|
@@ -745,7 +827,7 @@ export function useTooltipWithTriggerBehavior(
|
|
|
745
827
|
// something else in the shared interactive-ancestor walk, so a
|
|
746
828
|
// clickable container around the trigger leaves the press alone while
|
|
747
829
|
// document listeners still see it.
|
|
748
|
-
// The
|
|
830
|
+
// The hold's announcement reads this element's text.
|
|
749
831
|
<div ref={contentRefs} {...stylex.props(styles.content)}>
|
|
750
832
|
{children}
|
|
751
833
|
</div>,
|
|
@@ -763,6 +845,31 @@ export function useTooltipWithTriggerBehavior(
|
|
|
763
845
|
],
|
|
764
846
|
);
|
|
765
847
|
|
|
848
|
+
const show = useCallback(() => {
|
|
849
|
+
clearTimeouts();
|
|
850
|
+
if (!isEnabled) {
|
|
851
|
+
return;
|
|
852
|
+
}
|
|
853
|
+
setHeld(true);
|
|
854
|
+
armOutsideDismiss();
|
|
855
|
+
isHoldFromPressRef.current = isTriggerPressedRef.current;
|
|
856
|
+
isHoldInThisTaskRef.current = true;
|
|
857
|
+
triggerRef.current?.ownerDocument.defaultView?.setTimeout(() => {
|
|
858
|
+
isHoldInThisTaskRef.current = false;
|
|
859
|
+
}, 0);
|
|
860
|
+
const latest = latestRef.current;
|
|
861
|
+
if (latest.isOpen !== undefined) {
|
|
862
|
+
latest.onShow?.();
|
|
863
|
+
return;
|
|
864
|
+
}
|
|
865
|
+
showLayer();
|
|
866
|
+
}, [clearTimeouts, isEnabled, setHeld, armOutsideDismiss, showLayer]);
|
|
867
|
+
|
|
868
|
+
const hide = useCallback(() => {
|
|
869
|
+
clearTimeouts();
|
|
870
|
+
releaseHold();
|
|
871
|
+
}, [clearTimeouts, releaseHold]);
|
|
872
|
+
|
|
766
873
|
return {
|
|
767
874
|
ref,
|
|
768
875
|
positionRef: layerRef,
|
|
@@ -770,5 +877,7 @@ export function useTooltipWithTriggerBehavior(
|
|
|
770
877
|
anchorId: layerAnchorId,
|
|
771
878
|
describedBy: layerId,
|
|
772
879
|
renderTooltip,
|
|
880
|
+
show,
|
|
881
|
+
hide,
|
|
773
882
|
};
|
|
774
883
|
}
|
|
@@ -24,6 +24,7 @@ import React, {
|
|
|
24
24
|
useCallback,
|
|
25
25
|
useEffect,
|
|
26
26
|
useId,
|
|
27
|
+
useInsertionEffect,
|
|
27
28
|
useMemo,
|
|
28
29
|
useRef,
|
|
29
30
|
useState,
|
|
@@ -775,15 +776,6 @@ export const BaseTypeahead = function BaseTypeahead<T extends SearchableItem>({
|
|
|
775
776
|
// source: they can never be re-shown, so focus bootstraps the new source.
|
|
776
777
|
const sourceGenRef = useRef(0);
|
|
777
778
|
|
|
778
|
-
// Results still arriving from a replaced source must not land in the new
|
|
779
|
-
// one's menu.
|
|
780
|
-
const prevSearchSourceRef = useRef(searchSource);
|
|
781
|
-
if (prevSearchSourceRef.current !== searchSource) {
|
|
782
|
-
prevSearchSourceRef.current.cancel?.();
|
|
783
|
-
prevSearchSourceRef.current = searchSource;
|
|
784
|
-
sourceGenRef.current = ++searchGenRef.current;
|
|
785
|
-
}
|
|
786
|
-
|
|
787
779
|
// The previous source is remembered in state, not a ref, so a render React
|
|
788
780
|
// discards cannot consume the comparison without its state updates.
|
|
789
781
|
const [sourceOfState, setSourceOfState] = useState(searchSource);
|
|
@@ -793,7 +785,6 @@ export const BaseTypeahead = function BaseTypeahead<T extends SearchableItem>({
|
|
|
793
785
|
setIsLoading(false);
|
|
794
786
|
setHasSearched(false);
|
|
795
787
|
}
|
|
796
|
-
loadingRef.current = false;
|
|
797
788
|
}
|
|
798
789
|
// A field that becomes disabled stops showing a search as busy in the same
|
|
799
790
|
// render, and the dropped query shows no outcome, so no empty state; the
|
|
@@ -807,15 +798,34 @@ export const BaseTypeahead = function BaseTypeahead<T extends SearchableItem>({
|
|
|
807
798
|
}
|
|
808
799
|
}
|
|
809
800
|
|
|
810
|
-
//
|
|
811
|
-
// source
|
|
812
|
-
//
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
801
|
+
// Results that arrive from a replaced source must not land in the new
|
|
802
|
+
// source's menu, so the replacement starts a new generation. That happens
|
|
803
|
+
// when the replacement commits, not in render. React can render a
|
|
804
|
+
// replacement and then discard it, for example when a transition suspends
|
|
805
|
+
// and a newer update replaces it. The source that stays then keeps its read.
|
|
806
|
+
// An insertion effect runs before every layout effect and ref callback of
|
|
807
|
+
// its commit. A read that one of them starts against the replacement gets a
|
|
808
|
+
// later generation, after the replaced source stopped its requests.
|
|
809
|
+
const prevSearchSourceRef = useRef(searchSource);
|
|
810
|
+
const isSourceReplacedRef = useRef(false);
|
|
811
|
+
useInsertionEffect(() => {
|
|
812
|
+
if (prevSearchSourceRef.current === searchSource) {
|
|
813
|
+
return;
|
|
814
|
+
}
|
|
815
|
+
prevSearchSourceRef.current.cancel?.();
|
|
816
|
+
prevSearchSourceRef.current = searchSource;
|
|
817
|
+
sourceGenRef.current = ++searchGenRef.current;
|
|
818
|
+
// The replacing render cleared the busy state.
|
|
819
|
+
loadingRef.current = false;
|
|
820
|
+
isSourceReplacedRef.current = true;
|
|
821
|
+
}, [searchSource]);
|
|
822
|
+
// Syncs the wrapper's busy lane. A read of the replacement that already
|
|
823
|
+
// started keeps the lane busy.
|
|
824
|
+
useIsomorphicLayoutEffect(() => {
|
|
825
|
+
if (!isSourceReplacedRef.current) {
|
|
817
826
|
return;
|
|
818
827
|
}
|
|
828
|
+
isSourceReplacedRef.current = false;
|
|
819
829
|
if (!loadingRef.current) {
|
|
820
830
|
onLoadingChangeRef.current?.(false);
|
|
821
831
|
}
|
|
@@ -43,7 +43,8 @@ export const docs = {
|
|
|
43
43
|
{
|
|
44
44
|
name: 'group',
|
|
45
45
|
type: 'string',
|
|
46
|
-
description:
|
|
46
|
+
description:
|
|
47
|
+
'This prop has no effect. Set `item.auxiliaryData.group` on search-source items to group results in Typeahead or BaseTypeahead.',
|
|
47
48
|
},
|
|
48
49
|
],
|
|
49
50
|
};
|
|
@@ -79,7 +80,8 @@ export const docsZh = {
|
|
|
79
80
|
{
|
|
80
81
|
name: 'group',
|
|
81
82
|
type: 'string',
|
|
82
|
-
description:
|
|
83
|
+
description:
|
|
84
|
+
'此属性不影响渲染。要在 Typeahead 或 BaseTypeahead 中分组,请在搜索源返回的结果项上设置 `item.auxiliaryData.group`。',
|
|
83
85
|
},
|
|
84
86
|
],
|
|
85
87
|
};
|
|
@@ -94,6 +96,7 @@ export const docsDense = {
|
|
|
94
96
|
icon: 'Icon/avatar before label.',
|
|
95
97
|
description: 'Text below label.',
|
|
96
98
|
isDisabled: 'Visually disabled.',
|
|
97
|
-
group:
|
|
99
|
+
group:
|
|
100
|
+
'No effect. Group results via `item.auxiliaryData.group` in the search source.',
|
|
98
101
|
},
|
|
99
102
|
};
|
|
@@ -54,7 +54,8 @@ export interface TypeaheadItemProps<
|
|
|
54
54
|
isDisabled?: boolean;
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
|
-
*
|
|
57
|
+
* This prop has no effect. Set `item.auxiliaryData.group` on search-source
|
|
58
|
+
* items to group results in Typeahead or BaseTypeahead.
|
|
58
59
|
*/
|
|
59
60
|
group?: string;
|
|
60
61
|
}
|