@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
|
@@ -108,8 +108,6 @@ import {
|
|
|
108
108
|
formatSharedDate,
|
|
109
109
|
plainDateFromISO,
|
|
110
110
|
plainDateToday,
|
|
111
|
-
plainDateFormat,
|
|
112
|
-
DATE_FORMAT_WEEKDAY_ONLY,
|
|
113
111
|
type ISODateString,
|
|
114
112
|
} from '../utils';
|
|
115
113
|
import {plainDateFormatStandaloneMonthYear} from '../utils/plainDate';
|
|
@@ -117,6 +115,7 @@ import {chainEventHandlers} from '../utils/chainEventHandlers';
|
|
|
117
115
|
import {interactionOverlayStyles} from '../utils/interactionOverlay.stylex';
|
|
118
116
|
import {usePressFeedback} from '../hooks/usePressFeedback';
|
|
119
117
|
import {normalizeDayOfWeek} from '../utils/dateTypes';
|
|
118
|
+
import {getWeekdayHeaders} from '../Calendar/getWeekdayHeaderNames';
|
|
120
119
|
import {MonthScroller, type MonthScrollerHandle} from './MonthScroller';
|
|
121
120
|
import {MonthYearWheels} from './MonthYearWheels';
|
|
122
121
|
import {
|
|
@@ -676,6 +675,7 @@ export function TouchDateField({
|
|
|
676
675
|
const scrollerHandleRef = useRef<MonthScrollerHandle | null>(null);
|
|
677
676
|
// Pending focus handoff from the clear button; see handleClear.
|
|
678
677
|
const clearFocusTimerRef = useRef<number | null>(null);
|
|
678
|
+
// Releases the focus timer on unmount.
|
|
679
679
|
useEffect(
|
|
680
680
|
() => () => {
|
|
681
681
|
if (clearFocusTimerRef.current != null) {
|
|
@@ -720,34 +720,8 @@ export function TouchDateField({
|
|
|
720
720
|
|
|
721
721
|
const {year, month} = fromMonthIndex(monthIndex);
|
|
722
722
|
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
*
|
|
726
|
-
* The sheet is full width and the columns are ~51px, so there is room for
|
|
727
|
-
* the form people actually read, and a picker operated by thumb should not
|
|
728
|
-
* make anyone decode "Tu" against "Th".
|
|
729
|
-
*
|
|
730
|
-
* This is CLDR's `abbreviated` width, which `Intl` produces natively — no
|
|
731
|
-
* truncation, so the 28 non-English locales stay correct rather than being
|
|
732
|
-
* sliced to three characters. (Verified against the CLDR tables for all 30
|
|
733
|
-
* locales in the catalog.) Calendar's 2-letter row is CLDR's *short* width,
|
|
734
|
-
* which `Intl` cannot express, which is exactly why that surface needs a
|
|
735
|
-
* generated table and this one does not.
|
|
736
|
-
*
|
|
737
|
-
* Built here rather than taken from `useCalendarDays`, which supplies the
|
|
738
|
-
* short form for Calendar's own header. The rotation matches: day 4 of
|
|
739
|
-
* January 1970 was a Sunday, so offsetting from it by `weekStartsOn` walks
|
|
740
|
-
* the week in the same order the panes lay out their columns.
|
|
741
|
-
*/
|
|
742
|
-
const dayNames = useMemo(
|
|
743
|
-
() =>
|
|
744
|
-
Array.from({length: 7}, (_, offset) =>
|
|
745
|
-
plainDateFormat(
|
|
746
|
-
{year: 1970, month: 1, day: 4 + ((weekStartsOn + offset) % 7)},
|
|
747
|
-
DATE_FORMAT_WEEKDAY_ONLY,
|
|
748
|
-
locale,
|
|
749
|
-
),
|
|
750
|
-
),
|
|
723
|
+
const weekdayHeaders = useMemo(
|
|
724
|
+
() => getWeekdayHeaders(locale, weekStartsOn),
|
|
751
725
|
[locale, weekStartsOn],
|
|
752
726
|
);
|
|
753
727
|
const monthYearLabel = plainDateFormatStandaloneMonthYear(
|
|
@@ -1107,8 +1081,8 @@ export function TouchDateField({
|
|
|
1107
1081
|
styles.weekdays,
|
|
1108
1082
|
isWheelOpen && styles.weekdaysHidden,
|
|
1109
1083
|
)}>
|
|
1110
|
-
{
|
|
1111
|
-
<div key={
|
|
1084
|
+
{weekdayHeaders.map(({dayOfWeek, name}) => (
|
|
1085
|
+
<div key={dayOfWeek} {...stylex.props(styles.weekday)}>
|
|
1112
1086
|
{name}
|
|
1113
1087
|
</div>
|
|
1114
1088
|
))}
|
package/src/DateInput/Wheel.tsx
CHANGED
|
@@ -4,41 +4,37 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Wheel.tsx
|
|
7
|
-
* @input Option list, selected value
|
|
8
|
-
*
|
|
9
|
-
* @
|
|
7
|
+
* @input Option list, selected value and change callback; a ref for
|
|
8
|
+
* programmatic turns
|
|
9
|
+
* @output Exports Wheel (one picker column), ScrollWheel (the scrolling
|
|
10
|
+
* column) and the shared types of wheelOptions.ts
|
|
11
|
+
* @position Internal component; consumed by MonthYearWheels.tsx,
|
|
12
|
+
* TouchTimeField.tsx and TouchDateTimeField.tsx
|
|
10
13
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* is
|
|
14
|
-
* each end so the first and last option can reach the middle, and a commit
|
|
15
|
-
* when the scrolling stops and no finger or mouse drag still holds it.
|
|
14
|
+
* Wheel picks its column by the primary pointer. Under a finger it is
|
|
15
|
+
* PickerWheel.tsx, the touch layer, imported here alone. Under a fine pointer
|
|
16
|
+
* it is the snap-scrolling column below.
|
|
16
17
|
*
|
|
17
|
-
* The
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* finger with no JS in the frame loop. It is guarded by `@supports`, because a
|
|
21
|
-
* browser that does not understand `animation-timeline` would otherwise run
|
|
22
|
-
* the same keyframes on the document timeline and simply play them once.
|
|
23
|
-
*
|
|
24
|
-
* Under Reduce Motion, the wheel's own scrolls (a step from a key or a click,
|
|
25
|
-
* the travel to the nearest enabled row) land without travel. They cross-fade
|
|
26
|
-
* on a touch screen and land at once otherwise. A finger's scroll and its
|
|
27
|
-
* momentum stay the platform's.
|
|
28
|
-
*
|
|
29
|
-
* Accessibility: this is a listbox, not a novel widget. It is one tab stop
|
|
30
|
-
* with arrow/Home/End/PageUp/PageDown keys, `aria-activedescendant` tracking
|
|
31
|
-
* the active row, and every row reachable by tap — none of which depends on
|
|
32
|
-
* the scroll-driven decoration.
|
|
18
|
+
* The scrolling column is a scroll container: momentum, rubber-banding and the
|
|
19
|
+
* settle are the platform's. Its rows fade and tip on a CSS `view()` timeline,
|
|
20
|
+
* behind `@supports`. Under Reduce Motion its own scrolls land without travel.
|
|
33
21
|
*
|
|
34
22
|
* SYNC: When modified, update:
|
|
23
|
+
* - /packages/core/src/DateInput/PickerWheel.tsx (the touch column)
|
|
24
|
+
* - /packages/core/src/DateInput/wheelOptions.ts
|
|
35
25
|
* - /packages/core/src/DateInput/TouchDateField.tsx
|
|
36
26
|
* - /packages/core/src/DateTimeInput/TouchDateTimeField.tsx
|
|
37
27
|
* - /packages/core/src/DateInput/DateInput.doc.mjs
|
|
38
28
|
* - /packages/core/src/DateInput/DateInputTouch.test.tsx
|
|
39
29
|
*/
|
|
40
30
|
|
|
41
|
-
import {
|
|
31
|
+
import {
|
|
32
|
+
useCallback,
|
|
33
|
+
useEffect,
|
|
34
|
+
useImperativeHandle,
|
|
35
|
+
useRef,
|
|
36
|
+
useState,
|
|
37
|
+
} from 'react';
|
|
42
38
|
import * as stylex from '@stylexjs/stylex';
|
|
43
39
|
import {
|
|
44
40
|
colorVars,
|
|
@@ -54,10 +50,27 @@ import {
|
|
|
54
50
|
reducedMotionFade,
|
|
55
51
|
type ReducedMotionDip,
|
|
56
52
|
} from '../motion/reducedMotion';
|
|
53
|
+
import {useTouchPresentation} from '../utils/touchPresentation';
|
|
54
|
+
import {PickerWheel} from './PickerWheel';
|
|
57
55
|
import {dateInputTouchSizes, dateInputTouchGeometry} from './tokens.stylex';
|
|
58
56
|
import {useOwnScrollGesture} from './useOwnScrollGesture';
|
|
59
57
|
import {usePointerDragScroll} from './usePointerDragScroll';
|
|
60
58
|
import {useScrollSettle} from './useScrollSettle';
|
|
59
|
+
import {useWheelListbox} from './useWheelListbox';
|
|
60
|
+
import {
|
|
61
|
+
canSpinTo,
|
|
62
|
+
endIndex,
|
|
63
|
+
nearestEnabledIndex,
|
|
64
|
+
steppedIndex,
|
|
65
|
+
type WheelProps,
|
|
66
|
+
} from './wheelOptions';
|
|
67
|
+
|
|
68
|
+
export {
|
|
69
|
+
nearestEnabledIndex,
|
|
70
|
+
type WheelHandle,
|
|
71
|
+
type WheelOption,
|
|
72
|
+
type WheelProps,
|
|
73
|
+
} from './wheelOptions';
|
|
61
74
|
|
|
62
75
|
const ITEM_BLOCK_SIZE = dateInputTouchSizes.wheelItemSize;
|
|
63
76
|
|
|
@@ -67,23 +80,38 @@ const ITEM_BLOCK_SIZE = dateInputTouchSizes.wheelItemSize;
|
|
|
67
80
|
* at the top — which is what a `view()` timeline over the `cover` range means,
|
|
68
81
|
* and why this reads as a cylinder rotating under the finger.
|
|
69
82
|
*/
|
|
70
|
-
const
|
|
83
|
+
const tip = stylex.keyframes({
|
|
84
|
+
'0%': {transform: 'rotateX(52deg) scale(0.86)'},
|
|
85
|
+
'50%': {transform: 'rotateX(0deg) scale(1)'},
|
|
86
|
+
'100%': {transform: 'rotateX(-52deg) scale(0.86)'},
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Colour keeps every row at WCAG AA, which an opacity fade does not. The ends
|
|
91
|
+
* stop halfway to the secondary text colour, because that colour alone falls
|
|
92
|
+
* below AA in two shipped themes.
|
|
93
|
+
*/
|
|
94
|
+
const fade = stylex.keyframes({
|
|
71
95
|
'0%': {
|
|
72
|
-
|
|
73
|
-
transform: 'rotateX(52deg) scale(0.86)',
|
|
74
|
-
},
|
|
75
|
-
'50%': {
|
|
76
|
-
opacity: 1,
|
|
77
|
-
transform: 'rotateX(0deg) scale(1)',
|
|
96
|
+
color: `color-mix(in oklab, ${colorVars['--color-text-primary']}, ${colorVars['--color-text-secondary']})`,
|
|
78
97
|
},
|
|
98
|
+
'50%': {color: colorVars['--color-text-primary']},
|
|
79
99
|
'100%': {
|
|
80
|
-
|
|
81
|
-
transform: 'rotateX(-52deg) scale(0.86)',
|
|
100
|
+
color: `color-mix(in oklab, ${colorVars['--color-text-primary']}, ${colorVars['--color-text-secondary']})`,
|
|
82
101
|
},
|
|
83
102
|
});
|
|
84
103
|
|
|
85
|
-
/**
|
|
86
|
-
|
|
104
|
+
/**
|
|
105
|
+
* A disabled row keeps its disabled colour and fades by opacity instead: WCAG
|
|
106
|
+
* 1.4.3 exempts inactive components from the contrast minimum.
|
|
107
|
+
*/
|
|
108
|
+
const tipAndDim = stylex.keyframes({
|
|
109
|
+
'0%': {opacity: 0.3, transform: 'rotateX(52deg) scale(0.86)'},
|
|
110
|
+
'50%': {opacity: 1, transform: 'rotateX(0deg) scale(1)'},
|
|
111
|
+
'100%': {opacity: 0.3, transform: 'rotateX(-52deg) scale(0.86)'},
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const dim = stylex.keyframes({
|
|
87
115
|
'0%': {opacity: 0.3},
|
|
88
116
|
'50%': {opacity: 1},
|
|
89
117
|
'100%': {opacity: 0.3},
|
|
@@ -111,7 +139,7 @@ const styles = stylex.create({
|
|
|
111
139
|
overscrollBehavior: 'contain',
|
|
112
140
|
// Room for row 0 and row n-1 to reach the centre.
|
|
113
141
|
paddingBlock: dateInputTouchGeometry.wheelEdgePadding,
|
|
114
|
-
// Gives the rotateX
|
|
142
|
+
// Gives the rotateX tip somewhere to recede to.
|
|
115
143
|
perspective: '520px',
|
|
116
144
|
transformStyle: 'preserve-3d',
|
|
117
145
|
scrollbarWidth: 'none',
|
|
@@ -140,7 +168,7 @@ const styles = stylex.create({
|
|
|
140
168
|
whiteSpace: 'nowrap',
|
|
141
169
|
// NO `overflow: hidden` here. It would make the row itself a scroll
|
|
142
170
|
// container, and `view()` binds to the subject's nearest ancestor scroll
|
|
143
|
-
// container — the
|
|
171
|
+
// container — the tip would measure the row against itself and sit
|
|
144
172
|
// frozen at 50% forever. Clipping belongs on the inner element.
|
|
145
173
|
cursor: {
|
|
146
174
|
default: 'pointer',
|
|
@@ -151,7 +179,7 @@ const styles = stylex.create({
|
|
|
151
179
|
transitionDuration: durationVars['--duration-fast'],
|
|
152
180
|
},
|
|
153
181
|
/**
|
|
154
|
-
* The
|
|
182
|
+
* The tip rides an inner element, never the row itself.
|
|
155
183
|
*
|
|
156
184
|
* A snap area is the element's TRANSFORMED border box, so animating the row
|
|
157
185
|
* would move the very positions the scroller is snapping to — the wheel
|
|
@@ -167,15 +195,14 @@ const styles = stylex.create({
|
|
|
167
195
|
overflow: 'hidden',
|
|
168
196
|
textOverflow: 'ellipsis',
|
|
169
197
|
// The wheel look. Held behind @supports so browsers without scroll-driven
|
|
170
|
-
// animations get a plain
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
// the tipping does not.
|
|
198
|
+
// animations get a plain list instead of these keyframes playing
|
|
199
|
+
// themselves out once on the document timeline. Under reduced motion, the
|
|
200
|
+
// colour fade on the row keeps the depth cue.
|
|
174
201
|
animationName: {
|
|
175
202
|
default: null,
|
|
176
203
|
'@supports (animation-timeline: view())': {
|
|
177
|
-
default:
|
|
178
|
-
'@media (prefers-reduced-motion: reduce)':
|
|
204
|
+
default: tip,
|
|
205
|
+
'@media (prefers-reduced-motion: reduce)': 'none',
|
|
179
206
|
},
|
|
180
207
|
},
|
|
181
208
|
animationTimeline: 'view(y)',
|
|
@@ -185,6 +212,31 @@ const styles = stylex.create({
|
|
|
185
212
|
animationTimingFunction: 'linear',
|
|
186
213
|
backfaceVisibility: 'hidden',
|
|
187
214
|
},
|
|
215
|
+
itemInnerDisabled: {
|
|
216
|
+
animationName: {
|
|
217
|
+
default: null,
|
|
218
|
+
'@supports (animation-timeline: view())': {
|
|
219
|
+
default: tipAndDim,
|
|
220
|
+
'@media (prefers-reduced-motion: reduce)': dim,
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
/**
|
|
225
|
+
* The colour fade, on the row and not the tipped inner element: colour does
|
|
226
|
+
* not move a snap area. An animated colour outranks the selected and
|
|
227
|
+
* disabled colours, so those rows do not take this fade.
|
|
228
|
+
*/
|
|
229
|
+
itemFade: {
|
|
230
|
+
animationName: {
|
|
231
|
+
default: null,
|
|
232
|
+
'@supports (animation-timeline: view())': fade,
|
|
233
|
+
},
|
|
234
|
+
animationTimeline: 'view(y)',
|
|
235
|
+
animationRange: 'cover 0% cover 100%',
|
|
236
|
+
animationFillMode: 'both',
|
|
237
|
+
animationDuration: 'auto',
|
|
238
|
+
animationTimingFunction: 'linear',
|
|
239
|
+
},
|
|
188
240
|
itemActive: {
|
|
189
241
|
color: colorVars['--color-text-accent'],
|
|
190
242
|
fontWeight: fontWeightVars['--font-weight-semibold'],
|
|
@@ -214,80 +266,35 @@ const styles = stylex.create({
|
|
|
214
266
|
},
|
|
215
267
|
});
|
|
216
268
|
|
|
217
|
-
export interface WheelOption {
|
|
218
|
-
/** Stable numeric identity of the row (a month 1-12, or a year). */
|
|
219
|
-
value: number;
|
|
220
|
-
/** Row text. */
|
|
221
|
-
label: string;
|
|
222
|
-
/**
|
|
223
|
-
* Rows outside min/max stay visible but cannot be committed: a wheel that
|
|
224
|
-
* stops on one travels on to the nearest enabled row.
|
|
225
|
-
*/
|
|
226
|
-
isDisabled?: boolean;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
export interface WheelProps {
|
|
230
|
-
/** Accessible name for the column, e.g. "Month". */
|
|
231
|
-
label: string;
|
|
232
|
-
/** Rows, top to bottom. */
|
|
233
|
-
options: ReadonlyArray<WheelOption>;
|
|
234
|
-
/** Committed value; must match one option's `value`. */
|
|
235
|
-
value: number;
|
|
236
|
-
/** Fired when the wheel comes to rest on a different, enabled row. */
|
|
237
|
-
onChange: (value: number) => void;
|
|
238
|
-
/**
|
|
239
|
-
* False while the wheel is hidden — scroll offsets of a display:none
|
|
240
|
-
* scroller are meaningless, so listeners and the initial scroll wait.
|
|
241
|
-
*/
|
|
242
|
-
isActive?: boolean;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
269
|
/**
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
* `towardIndex` (the committed row), and a wheel with no enabled row stays on
|
|
249
|
-
* `towardIndex`.
|
|
270
|
+
* One picker column: UIPickerView's motion with flat rows under a finger, the
|
|
271
|
+
* snap-scrolling column under a fine pointer.
|
|
250
272
|
*
|
|
251
273
|
* @example
|
|
252
274
|
* ```
|
|
253
|
-
*
|
|
254
|
-
*
|
|
275
|
+
* <Wheel
|
|
276
|
+
* label="Month"
|
|
277
|
+
* options={monthOptions}
|
|
278
|
+
* value={month}
|
|
279
|
+
* onChange={setMonth}
|
|
280
|
+
* />
|
|
255
281
|
* ```
|
|
256
282
|
*/
|
|
257
|
-
export function
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
const isEnabled = (i: number) =>
|
|
263
|
-
i >= 0 && i < options.length && !options[i].isDisabled;
|
|
264
|
-
if (isEnabled(index)) {
|
|
265
|
-
return index;
|
|
266
|
-
}
|
|
267
|
-
for (let distance = 1; distance < options.length; distance++) {
|
|
268
|
-
const below = index - distance;
|
|
269
|
-
const above = index + distance;
|
|
270
|
-
const isBelowEnabled = isEnabled(below);
|
|
271
|
-
const isAboveEnabled = isEnabled(above);
|
|
272
|
-
if (isBelowEnabled && isAboveEnabled) {
|
|
273
|
-
return towardIndex < index ? below : above;
|
|
274
|
-
}
|
|
275
|
-
if (isBelowEnabled) {
|
|
276
|
-
return below;
|
|
277
|
-
}
|
|
278
|
-
if (isAboveEnabled) {
|
|
279
|
-
return above;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
return towardIndex;
|
|
283
|
+
export function Wheel(props: WheelProps) {
|
|
284
|
+
// One touch model on every touch device: a finger gets UIPickerView's motion
|
|
285
|
+
// with flat rows, a fine pointer the scrolling column.
|
|
286
|
+
const {isTouch} = useTouchPresentation();
|
|
287
|
+
return isTouch ? <PickerWheel {...props} /> : <ScrollWheel {...props} />;
|
|
283
288
|
}
|
|
284
289
|
|
|
290
|
+
Wheel.displayName = 'Wheel';
|
|
291
|
+
|
|
285
292
|
/**
|
|
286
|
-
* One snap-scrolling picker column.
|
|
293
|
+
* One snap-scrolling picker column, under a fine pointer.
|
|
287
294
|
*
|
|
288
295
|
* @example
|
|
289
296
|
* ```
|
|
290
|
-
* <
|
|
297
|
+
* <ScrollWheel
|
|
291
298
|
* label="Month"
|
|
292
299
|
* options={monthOptions}
|
|
293
300
|
* value={month}
|
|
@@ -295,14 +302,32 @@ export function nearestEnabledIndex(
|
|
|
295
302
|
* />
|
|
296
303
|
* ```
|
|
297
304
|
*/
|
|
298
|
-
export function
|
|
305
|
+
export function ScrollWheel({
|
|
299
306
|
label,
|
|
300
307
|
options,
|
|
301
308
|
value,
|
|
302
309
|
onChange,
|
|
303
310
|
isActive = true,
|
|
311
|
+
ref,
|
|
304
312
|
}: WheelProps) {
|
|
305
|
-
|
|
313
|
+
// A spin commits the row at once. The new value then scrolls the column
|
|
314
|
+
// there, as any new value does.
|
|
315
|
+
useImperativeHandle(
|
|
316
|
+
ref,
|
|
317
|
+
() => ({
|
|
318
|
+
spinTo: async index => {
|
|
319
|
+
if (!canSpinTo(options, index)) {
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
const option = options[index];
|
|
323
|
+
if (option.value !== value) {
|
|
324
|
+
onChange(option.value);
|
|
325
|
+
}
|
|
326
|
+
return true;
|
|
327
|
+
},
|
|
328
|
+
}),
|
|
329
|
+
[options, value, onChange],
|
|
330
|
+
);
|
|
306
331
|
const scrollerRef = useRef<HTMLDivElement | null>(null);
|
|
307
332
|
const selectedIndex = Math.max(
|
|
308
333
|
0,
|
|
@@ -462,6 +487,8 @@ export function Wheel({
|
|
|
462
487
|
// useScrollSettle. The settle handler re-checks the position afterwards, so
|
|
463
488
|
// a correction that is genuinely needed still happens, just at rest.
|
|
464
489
|
const parkedRef = useRef(false);
|
|
490
|
+
// Syncs the wheel's scroll position with the selected index while the wheel
|
|
491
|
+
// is active.
|
|
465
492
|
useEffect(() => {
|
|
466
493
|
if (!isActive) {
|
|
467
494
|
parkedRef.current = false;
|
|
@@ -492,6 +519,8 @@ export function Wheel({
|
|
|
492
519
|
// Highlight follows the finger. rAF-throttled: a scroll can fire far more
|
|
493
520
|
// often than the display refreshes, and this only feeds a repaint.
|
|
494
521
|
const frameRef = useRef<number | undefined>(undefined);
|
|
522
|
+
// Syncs a scroll listener with the active wheel. It updates the highlighted
|
|
523
|
+
// row.
|
|
495
524
|
useEffect(() => {
|
|
496
525
|
const scroller = scrollerRef.current;
|
|
497
526
|
if (scroller == null || !isActive) {
|
|
@@ -531,69 +560,63 @@ export function Wheel({
|
|
|
531
560
|
// there is no way to share — it takes every touch that lands on it.
|
|
532
561
|
useOwnScrollGesture(scrollerRef, 'all', {isEnabled: isActive});
|
|
533
562
|
|
|
534
|
-
const
|
|
535
|
-
(
|
|
536
|
-
const
|
|
537
|
-
|
|
538
|
-
Math.max(0, activeIndex + delta),
|
|
539
|
-
);
|
|
540
|
-
const option = options[next];
|
|
541
|
-
if (option == null || option.isDisabled) {
|
|
563
|
+
const moveTo = useCallback(
|
|
564
|
+
(row: number | null) => {
|
|
565
|
+
const option = row == null ? undefined : options[row];
|
|
566
|
+
if (row == null || option == null || option.isDisabled) {
|
|
542
567
|
return;
|
|
543
568
|
}
|
|
544
|
-
setActiveIndex(
|
|
545
|
-
scrollToIndex(
|
|
569
|
+
setActiveIndex(row);
|
|
570
|
+
scrollToIndex(row, 'smooth');
|
|
546
571
|
if (option.value !== value) {
|
|
547
572
|
onChange(option.value);
|
|
548
573
|
}
|
|
549
574
|
},
|
|
550
|
-
[
|
|
575
|
+
[options, scrollToIndex, value, onChange],
|
|
576
|
+
);
|
|
577
|
+
|
|
578
|
+
const moveBy = useCallback(
|
|
579
|
+
(delta: number) => moveTo(steppedIndex(options, activeIndex, delta)),
|
|
580
|
+
[moveTo, options, activeIndex],
|
|
581
|
+
);
|
|
582
|
+
|
|
583
|
+
// Home and End: the first and the last enabled row.
|
|
584
|
+
const toEnd = useCallback(
|
|
585
|
+
(end: 'first' | 'last') => moveTo(endIndex(options, end)),
|
|
586
|
+
[moveTo, options],
|
|
551
587
|
);
|
|
552
588
|
|
|
553
|
-
const
|
|
554
|
-
(
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
break;
|
|
564
|
-
case 'PageDown':
|
|
565
|
-
event.preventDefault();
|
|
566
|
-
moveBy(10);
|
|
567
|
-
break;
|
|
568
|
-
case 'PageUp':
|
|
569
|
-
event.preventDefault();
|
|
570
|
-
moveBy(-10);
|
|
571
|
-
break;
|
|
572
|
-
case 'Home':
|
|
573
|
-
event.preventDefault();
|
|
574
|
-
moveBy(-activeIndex);
|
|
575
|
-
break;
|
|
576
|
-
case 'End':
|
|
577
|
-
event.preventDefault();
|
|
578
|
-
moveBy(options.length - 1 - activeIndex);
|
|
579
|
-
break;
|
|
580
|
-
default:
|
|
581
|
-
break;
|
|
589
|
+
const activate = useCallback(
|
|
590
|
+
(index: number) => {
|
|
591
|
+
const option = options[index];
|
|
592
|
+
if (option == null || option.isDisabled) {
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
setActiveIndex(index);
|
|
596
|
+
scrollToIndex(index, 'smooth');
|
|
597
|
+
if (option.value !== value) {
|
|
598
|
+
onChange(option.value);
|
|
582
599
|
}
|
|
583
600
|
},
|
|
584
|
-
[
|
|
601
|
+
[options, scrollToIndex, value, onChange],
|
|
585
602
|
);
|
|
586
603
|
|
|
604
|
+
const {listboxProps, optionProps} = useWheelListbox({
|
|
605
|
+
label,
|
|
606
|
+
options,
|
|
607
|
+
value,
|
|
608
|
+
activeIndex,
|
|
609
|
+
stepBy: moveBy,
|
|
610
|
+
toEnd,
|
|
611
|
+
activate,
|
|
612
|
+
});
|
|
613
|
+
|
|
587
614
|
return (
|
|
588
615
|
<div {...stylex.props(styles.column)}>
|
|
589
616
|
<div aria-hidden="true" {...stylex.props(styles.band)} />
|
|
590
617
|
<div
|
|
591
618
|
ref={scrollerRef}
|
|
592
|
-
|
|
593
|
-
aria-label={label}
|
|
594
|
-
aria-activedescendant={`${id}-${options[activeIndex]?.value}`}
|
|
595
|
-
tabIndex={0}
|
|
596
|
-
onKeyDown={handleKeyDown}
|
|
619
|
+
{...listboxProps}
|
|
597
620
|
// Read in the capture phase. usePointerDragScroll stops a primary
|
|
598
621
|
// mouse press from bubbling, so that it does not reach BottomSheet's
|
|
599
622
|
// drag. A bubbling handler would never see a mouse, and would keep the
|
|
@@ -608,26 +631,20 @@ export function Wheel({
|
|
|
608
631
|
{options.map((option, index) => (
|
|
609
632
|
<div
|
|
610
633
|
key={option.value}
|
|
611
|
-
|
|
612
|
-
role="option"
|
|
613
|
-
aria-selected={option.value === value}
|
|
614
|
-
aria-disabled={option.isDisabled || undefined}
|
|
615
|
-
onClick={() => {
|
|
616
|
-
if (option.isDisabled) {
|
|
617
|
-
return;
|
|
618
|
-
}
|
|
619
|
-
setActiveIndex(index);
|
|
620
|
-
scrollToIndex(index, 'smooth');
|
|
621
|
-
if (option.value !== value) {
|
|
622
|
-
onChange(option.value);
|
|
623
|
-
}
|
|
624
|
-
}}
|
|
634
|
+
{...optionProps(option, index)}
|
|
625
635
|
{...stylex.props(
|
|
626
636
|
styles.item,
|
|
637
|
+
index !== activeIndex && !option.isDisabled && styles.itemFade,
|
|
627
638
|
index === activeIndex && styles.itemActive,
|
|
628
639
|
option.isDisabled && styles.itemDisabled,
|
|
629
640
|
)}>
|
|
630
|
-
<span
|
|
641
|
+
<span
|
|
642
|
+
{...stylex.props(
|
|
643
|
+
styles.itemInner,
|
|
644
|
+
option.isDisabled && styles.itemInnerDisabled,
|
|
645
|
+
)}>
|
|
646
|
+
{option.label}
|
|
647
|
+
</span>
|
|
631
648
|
</div>
|
|
632
649
|
))}
|
|
633
650
|
</div>
|
|
@@ -635,4 +652,4 @@ export function Wheel({
|
|
|
635
652
|
);
|
|
636
653
|
}
|
|
637
654
|
|
|
638
|
-
|
|
655
|
+
ScrollWheel.displayName = 'ScrollWheel';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file datePickerTouch.ts
|
|
5
|
+
* @input The date and time pickers' touch-only pieces
|
|
6
|
+
* @output Re-exports what the date and time sheets use only under a finger:
|
|
7
|
+
* TimeWheels
|
|
8
|
+
* @position The pickers' touch layer. The sheets import touch behaviour from
|
|
9
|
+
* here only, so a desktop build can replace this one module.
|
|
10
|
+
*
|
|
11
|
+
* SYNC: When modified, update TouchTimeField.tsx and TouchDateTimeField.tsx.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export {TimeWheels} from '../TimeInput/TimeWheels';
|
|
15
|
+
export type {TimeWheelsProps} from '../TimeInput/TimeWheels';
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* @file useOwnScrollGesture.ts
|
|
7
7
|
* @input A scroll container ref and which axis it owns
|
|
8
8
|
* @output Stops touch gestures on that container from reaching an ancestor
|
|
9
|
-
* @position Internal behavior hook; consumed by Wheel.tsx
|
|
9
|
+
* @position Internal behavior hook; consumed by Wheel.tsx, PickerWheel.tsx and
|
|
10
|
+
* MonthScroller.tsx
|
|
10
11
|
*
|
|
11
12
|
* Lets a nested scroller keep the finger that lands on it.
|
|
12
13
|
*
|
|
@@ -114,6 +115,16 @@ export type OwnScrollGestureOptions = {
|
|
|
114
115
|
* so momentum and snapping are never second-guessed.
|
|
115
116
|
*/
|
|
116
117
|
onSwipe?: (direction: 1 | -1) => void;
|
|
118
|
+
/**
|
|
119
|
+
* Also keep the pointer a touch lands with, for an `'all'` scroller that pans
|
|
120
|
+
* through the gesture system rather than natively. A sheet arms its pull-down
|
|
121
|
+
* on its body's `pointerdown`, and counts on a native pan to cancel a touch
|
|
122
|
+
* pointer. A pan of the gesture system never cancels it. Without this, the
|
|
123
|
+
* sheet follows the first 8 px of a downward drag before the scroller's own
|
|
124
|
+
* pan takes over. The gesture host and the shared modality tracker listen in
|
|
125
|
+
* the capture phase, before this.
|
|
126
|
+
*/
|
|
127
|
+
isPointerKept?: boolean;
|
|
117
128
|
};
|
|
118
129
|
|
|
119
130
|
/**
|
|
@@ -130,13 +141,15 @@ export function useOwnScrollGesture(
|
|
|
130
141
|
axis: OwnedAxis = 'all',
|
|
131
142
|
options: OwnScrollGestureOptions = {},
|
|
132
143
|
): void {
|
|
133
|
-
const {isEnabled = true, onSwipe} = options;
|
|
144
|
+
const {isEnabled = true, onSwipe, isPointerKept = false} = options;
|
|
134
145
|
|
|
135
146
|
// Read through a ref so a caller need not memoize the callback: re-running
|
|
136
147
|
// this effect would tear the listeners off mid-gesture.
|
|
137
148
|
const onSwipeRef = useRef(onSwipe);
|
|
138
149
|
onSwipeRef.current = onSwipe;
|
|
139
150
|
|
|
151
|
+
// Syncs touch listeners on the element with `isEnabled`. They decide which
|
|
152
|
+
// gesture owns a horizontal scroll.
|
|
140
153
|
useEffect(() => {
|
|
141
154
|
const element = ref.current;
|
|
142
155
|
if (element == null || !isEnabled) {
|
|
@@ -213,15 +226,24 @@ export function useOwnScrollGesture(
|
|
|
213
226
|
claimed = null;
|
|
214
227
|
};
|
|
215
228
|
|
|
229
|
+
const keepPointer = (event: PointerEvent) => event.stopPropagation();
|
|
230
|
+
const isKeepingPointer = axis === 'all' && isPointerKept;
|
|
231
|
+
|
|
216
232
|
element.addEventListener('touchstart', onStart, {passive: true});
|
|
217
233
|
element.addEventListener('touchmove', onMove, {passive: true});
|
|
218
234
|
element.addEventListener('touchend', onEnd, {passive: true});
|
|
219
235
|
element.addEventListener('touchcancel', onEnd, {passive: true});
|
|
236
|
+
if (isKeepingPointer) {
|
|
237
|
+
element.addEventListener('pointerdown', keepPointer);
|
|
238
|
+
}
|
|
220
239
|
return () => {
|
|
221
240
|
element.removeEventListener('touchstart', onStart);
|
|
222
241
|
element.removeEventListener('touchmove', onMove);
|
|
223
242
|
element.removeEventListener('touchend', onEnd);
|
|
224
243
|
element.removeEventListener('touchcancel', onEnd);
|
|
244
|
+
if (isKeepingPointer) {
|
|
245
|
+
element.removeEventListener('pointerdown', keepPointer);
|
|
246
|
+
}
|
|
225
247
|
};
|
|
226
|
-
}, [ref, axis, isEnabled]);
|
|
248
|
+
}, [ref, axis, isEnabled, isPointerKept]);
|
|
227
249
|
}
|