@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
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file timeWheelRules.ts
|
|
5
|
+
* @input A time of day, the hour format and the bounds
|
|
6
|
+
* @output Pure rules of UIDatePicker's time wheels: the columns' rows, the
|
|
7
|
+
* time a turned column makes, and which other columns turn with it
|
|
8
|
+
* @position Internal helper of the TimeInput and DateTimeInput sheets: the
|
|
9
|
+
* rows of both their finger and their mouse wheels
|
|
10
|
+
*
|
|
11
|
+
* The columns do not loop. Each rule follows a leaf of motion/uikit/
|
|
12
|
+
* datePicker.ts `wheels`. Pure functions keep the rules testable without a
|
|
13
|
+
* layout engine.
|
|
14
|
+
*
|
|
15
|
+
* SYNC: When modified, update timeWheelRules.test.ts and TimeWheels.tsx.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import {
|
|
19
|
+
clampTime,
|
|
20
|
+
formatISOTime,
|
|
21
|
+
parseISOTime,
|
|
22
|
+
type ISOTimeString,
|
|
23
|
+
} from '../utils/timeParser';
|
|
24
|
+
|
|
25
|
+
/** A time of day, 24-hour. */
|
|
26
|
+
export interface TimeParts {
|
|
27
|
+
hour: number;
|
|
28
|
+
minute: number;
|
|
29
|
+
second: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** A time wheel column. */
|
|
33
|
+
export type TimeColumn = 'hour' | 'minute' | 'second' | 'meridiem';
|
|
34
|
+
|
|
35
|
+
/** One row of a column: the value it stands for and its label. */
|
|
36
|
+
export interface TimeRow {
|
|
37
|
+
value: number;
|
|
38
|
+
label: string;
|
|
39
|
+
isDisabled: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Where the row falls when a key steps the column. An hour row holds the hour
|
|
42
|
+
* it stands for, so a key follows the full time: 12 PM comes before 1 PM.
|
|
43
|
+
*/
|
|
44
|
+
order?: number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Inclusive bounds in seconds since midnight; `null` is unbounded. */
|
|
48
|
+
export interface TimeBounds {
|
|
49
|
+
min: number | null;
|
|
50
|
+
max: number | null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const SECONDS_PER_DAY = 24 * 3600;
|
|
54
|
+
|
|
55
|
+
function secondsOfISO(time: ISOTimeString | undefined): number | null {
|
|
56
|
+
if (time == null) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const parsed = parseISOTime(time);
|
|
60
|
+
return parsed == null
|
|
61
|
+
? null
|
|
62
|
+
: parsed.hour * 3600 + parsed.minute * 60 + parsed.second;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** The bounds of a field's `min` and `max` times. */
|
|
66
|
+
export function wheelBounds(
|
|
67
|
+
min: ISOTimeString | undefined,
|
|
68
|
+
max: ISOTimeString | undefined,
|
|
69
|
+
): TimeBounds {
|
|
70
|
+
return {min: secondsOfISO(min), max: secondsOfISO(max)};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** Whether the hour falls in the PM half (1) or the AM half (0). */
|
|
74
|
+
export function meridiemOf(hour: number): 0 | 1 {
|
|
75
|
+
return hour < 12 ? 0 : 1;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** The 12-hour clock's label for a 24-hour hour: 0 → 12, 13 → 1. */
|
|
79
|
+
export function hour12From24(hour: number): number {
|
|
80
|
+
const h = hour % 12;
|
|
81
|
+
return h === 0 ? 12 : h;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** The 24-hour hour for a 12-hour hour in a half of the day: 12 AM → 0. */
|
|
85
|
+
export function hour24From12(hour: number, meridiem: number): number {
|
|
86
|
+
return (hour % 12) + (meridiem === 1 ? 12 : 0);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function partsOf(seconds: number): TimeParts {
|
|
90
|
+
const s = ((seconds % SECONDS_PER_DAY) + SECONDS_PER_DAY) % SECONDS_PER_DAY;
|
|
91
|
+
return {
|
|
92
|
+
hour: Math.floor(s / 3600),
|
|
93
|
+
minute: Math.floor((s % 3600) / 60),
|
|
94
|
+
second: s % 60,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** Whether [start, end] (seconds) overlaps the bounds. */
|
|
99
|
+
function overlaps(start: number, end: number, bounds: TimeBounds): boolean {
|
|
100
|
+
return (
|
|
101
|
+
(bounds.min == null || end >= bounds.min) &&
|
|
102
|
+
(bounds.max == null || start <= bounds.max)
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* The time the wheels show for `time`: its seconds kept when the picker has a
|
|
108
|
+
* seconds column and dropped when it has none. A time outside the bounds is
|
|
109
|
+
* shown as it is, on its disabled rows: opening the sheet never moves an
|
|
110
|
+
* untouched value.
|
|
111
|
+
*/
|
|
112
|
+
export function displayedTime(time: TimeParts, hasSeconds: boolean): TimeParts {
|
|
113
|
+
return {...time, second: hasSeconds ? time.second : 0};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* The time a column's rest commits when it would make `time`: the nearest
|
|
118
|
+
* time inside the bounds that the columns have a row for. Past a bound, that
|
|
119
|
+
* is the bound itself, or, with no seconds column, the nearest whole minute
|
|
120
|
+
* inside it (a 16:55:30 maximum: 16:55). Inside the bounds, `time` itself.
|
|
121
|
+
*/
|
|
122
|
+
export function restingTime(
|
|
123
|
+
time: TimeParts,
|
|
124
|
+
hasSeconds: boolean,
|
|
125
|
+
bounds: TimeBounds,
|
|
126
|
+
): TimeParts {
|
|
127
|
+
const boundAt = (seconds: number | null) =>
|
|
128
|
+
seconds == null ? undefined : formatISOTime(partsOf(seconds), true);
|
|
129
|
+
const resting = clampTime(
|
|
130
|
+
formatISOTime(time, hasSeconds),
|
|
131
|
+
boundAt(bounds.min),
|
|
132
|
+
boundAt(bounds.max),
|
|
133
|
+
hasSeconds,
|
|
134
|
+
);
|
|
135
|
+
return parseISOTime(resting) ?? time;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* The hour the hour column makes when it comes to rest on `row` from the row
|
|
140
|
+
* that showed `from` (24-hour). In 24-hour time the row is the hour. In 12-hour
|
|
141
|
+
* time the half of the day changes only when the move passes between 11 and 12.
|
|
142
|
+
* The column (1 … 12) does not loop, so 12 counts as next to 1. A move between
|
|
143
|
+
* 12 and 1 to 6 keeps the half of the day. A move between 12 and 7 to 11
|
|
144
|
+
* changes it.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```
|
|
148
|
+
* hourAfterTurn(11, 12, '12h'); // 12: 11 AM → 12 PM
|
|
149
|
+
* hourAfterTurn(12, 1, '12h'); // 13: 12 PM → 1 PM
|
|
150
|
+
* hourAfterTurn(13, 9, '12h'); // 21: 1 PM → 9 PM
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export function hourAfterTurn(
|
|
154
|
+
from: number,
|
|
155
|
+
row: number,
|
|
156
|
+
hourFormat: '12h' | '24h',
|
|
157
|
+
): number {
|
|
158
|
+
if (hourFormat === '24h') {
|
|
159
|
+
return row;
|
|
160
|
+
}
|
|
161
|
+
const shown = hour12From24(from);
|
|
162
|
+
if (row === shown) {
|
|
163
|
+
return from;
|
|
164
|
+
}
|
|
165
|
+
const half = meridiemOf(from);
|
|
166
|
+
const passes11And12 =
|
|
167
|
+
(shown === 12 && row >= 7) || (row === 12 && shown >= 7);
|
|
168
|
+
return hour24From12(row, passes11And12 ? 1 - half : half);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function hourRowsFor(
|
|
172
|
+
hourFormat: '12h' | '24h',
|
|
173
|
+
hourOf: (row: number) => number,
|
|
174
|
+
bounds: TimeBounds,
|
|
175
|
+
): TimeRow[] {
|
|
176
|
+
const rows =
|
|
177
|
+
hourFormat === '24h'
|
|
178
|
+
? Array.from({length: 24}, (_, hour) => hour)
|
|
179
|
+
: Array.from({length: 12}, (_, index) => index + 1);
|
|
180
|
+
return rows.map(row => {
|
|
181
|
+
const hour = hourOf(row);
|
|
182
|
+
return {
|
|
183
|
+
value: row,
|
|
184
|
+
label: hourFormat === '24h' ? String(row).padStart(2, '0') : String(row),
|
|
185
|
+
isDisabled: !overlaps(hour * 3600, hour * 3600 + 3599, bounds),
|
|
186
|
+
order: hour,
|
|
187
|
+
};
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* The hour column under a finger. In 24-hour time its rows are 00 … 23. In
|
|
193
|
+
* 12-hour time they are 1 … 12, each row standing for the hour a turn onto it
|
|
194
|
+
* from `from` makes (`hourAfterTurn`). A row is disabled when no minute of that
|
|
195
|
+
* hour is inside the bounds.
|
|
196
|
+
*/
|
|
197
|
+
export function hourRows(
|
|
198
|
+
from: number,
|
|
199
|
+
hourFormat: '12h' | '24h',
|
|
200
|
+
bounds: TimeBounds,
|
|
201
|
+
): TimeRow[] {
|
|
202
|
+
return hourRowsFor(
|
|
203
|
+
hourFormat,
|
|
204
|
+
row => hourAfterTurn(from, row, hourFormat),
|
|
205
|
+
bounds,
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* The hour column under a mouse, whose columns turn one at a time. A 12-hour
|
|
211
|
+
* row stands for its hour in the half of the day that `from` is in.
|
|
212
|
+
*/
|
|
213
|
+
export function hourRowsInHalf(
|
|
214
|
+
from: number,
|
|
215
|
+
hourFormat: '12h' | '24h',
|
|
216
|
+
bounds: TimeBounds,
|
|
217
|
+
): TimeRow[] {
|
|
218
|
+
const half = meridiemOf(from);
|
|
219
|
+
return hourRowsFor(
|
|
220
|
+
hourFormat,
|
|
221
|
+
row => (hourFormat === '24h' ? row : hour24From12(row, half)),
|
|
222
|
+
bounds,
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* The minute column for `hour`: every minute. A row is disabled when it is
|
|
228
|
+
* outside the bounds (its whole minute, when the picker shows seconds).
|
|
229
|
+
*/
|
|
230
|
+
export function minuteRows(
|
|
231
|
+
hour: number,
|
|
232
|
+
hasSeconds: boolean,
|
|
233
|
+
bounds: TimeBounds,
|
|
234
|
+
): TimeRow[] {
|
|
235
|
+
return Array.from({length: 60}, (_, minute): TimeRow => {
|
|
236
|
+
const start = hour * 3600 + minute * 60;
|
|
237
|
+
return {
|
|
238
|
+
value: minute,
|
|
239
|
+
label: String(minute).padStart(2, '0'),
|
|
240
|
+
isDisabled: !overlaps(start, start + (hasSeconds ? 59 : 0), bounds),
|
|
241
|
+
};
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/** The second column for `hour`:`minute`. */
|
|
246
|
+
export function secondRows(
|
|
247
|
+
hour: number,
|
|
248
|
+
minute: number,
|
|
249
|
+
bounds: TimeBounds,
|
|
250
|
+
): TimeRow[] {
|
|
251
|
+
return Array.from({length: 60}, (_, second): TimeRow => {
|
|
252
|
+
const at = hour * 3600 + minute * 60 + second;
|
|
253
|
+
return {
|
|
254
|
+
value: second,
|
|
255
|
+
label: String(second).padStart(2, '0'),
|
|
256
|
+
isDisabled: !overlaps(at, at, bounds),
|
|
257
|
+
};
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/** The AM/PM column: a half is disabled when none of its hours is in bounds. */
|
|
262
|
+
export function meridiemRows(
|
|
263
|
+
labels: {am: string; pm: string},
|
|
264
|
+
bounds: TimeBounds,
|
|
265
|
+
): TimeRow[] {
|
|
266
|
+
return [
|
|
267
|
+
{
|
|
268
|
+
value: 0,
|
|
269
|
+
label: labels.am,
|
|
270
|
+
isDisabled: !overlaps(0, 12 * 3600 - 1, bounds),
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
value: 1,
|
|
274
|
+
label: labels.pm,
|
|
275
|
+
isDisabled: !overlaps(12 * 3600, SECONDS_PER_DAY - 1, bounds),
|
|
276
|
+
},
|
|
277
|
+
];
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* The time made by turning `column` to `value` (its row's value) from `from`
|
|
282
|
+
* (the time the wheels show). Only that column changes, and the AM/PM column
|
|
283
|
+
* moves the hour by twelve.
|
|
284
|
+
*/
|
|
285
|
+
export function turnColumn(
|
|
286
|
+
from: TimeParts,
|
|
287
|
+
column: TimeColumn,
|
|
288
|
+
value: number,
|
|
289
|
+
hourFormat: '12h' | '24h',
|
|
290
|
+
): TimeParts {
|
|
291
|
+
switch (column) {
|
|
292
|
+
case 'hour':
|
|
293
|
+
return {...from, hour: hourAfterTurn(from.hour, value, hourFormat)};
|
|
294
|
+
case 'minute':
|
|
295
|
+
return {...from, minute: value};
|
|
296
|
+
case 'second':
|
|
297
|
+
return {...from, second: value};
|
|
298
|
+
case 'meridiem':
|
|
299
|
+
return {...from, hour: hour24From12(hour12From24(from.hour), value)};
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/** What a column shows for a time: its row's value. */
|
|
304
|
+
export function columnValue(
|
|
305
|
+
time: TimeParts,
|
|
306
|
+
column: TimeColumn,
|
|
307
|
+
hourFormat: '12h' | '24h',
|
|
308
|
+
): number {
|
|
309
|
+
switch (column) {
|
|
310
|
+
case 'hour':
|
|
311
|
+
return hourFormat === '24h' ? time.hour : hour12From24(time.hour);
|
|
312
|
+
case 'minute':
|
|
313
|
+
return time.minute;
|
|
314
|
+
case 'second':
|
|
315
|
+
return time.second;
|
|
316
|
+
case 'meridiem':
|
|
317
|
+
return meridiemOf(time.hour);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* The columns that must turn after `column` came to rest on `value`. That is
|
|
323
|
+
* every column whose row for the committed time differs from the row it shows
|
|
324
|
+
* now. The column that moved shows `value`; the others show `from`. An hour
|
|
325
|
+
* that crossed 11 ↔ 12 turns the AM/PM column; a time brought back onto a bound
|
|
326
|
+
* turns every column whose row changed.
|
|
327
|
+
*/
|
|
328
|
+
export function columnsToTurn(
|
|
329
|
+
from: TimeParts,
|
|
330
|
+
column: TimeColumn,
|
|
331
|
+
value: number,
|
|
332
|
+
committed: TimeParts,
|
|
333
|
+
options: {hourFormat: '12h' | '24h'; hasSeconds: boolean},
|
|
334
|
+
): {column: TimeColumn; value: number}[] {
|
|
335
|
+
const columns: TimeColumn[] = ['hour', 'minute'];
|
|
336
|
+
if (options.hasSeconds) {
|
|
337
|
+
columns.push('second');
|
|
338
|
+
}
|
|
339
|
+
if (options.hourFormat === '12h') {
|
|
340
|
+
columns.push('meridiem');
|
|
341
|
+
}
|
|
342
|
+
const turns: {column: TimeColumn; value: number}[] = [];
|
|
343
|
+
for (const each of columns) {
|
|
344
|
+
const shown =
|
|
345
|
+
each === column ? value : columnValue(from, each, options.hourFormat);
|
|
346
|
+
const target = columnValue(committed, each, options.hourFormat);
|
|
347
|
+
if (shown !== target) {
|
|
348
|
+
turns.push({column: each, value: target});
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return turns;
|
|
352
|
+
}
|
package/src/Timer/Timer.tsx
CHANGED
|
@@ -186,6 +186,7 @@ export function Timer({
|
|
|
186
186
|
const resolvedFormat = resolveFormat(format);
|
|
187
187
|
const initialPresentation = getPresentation(0, resolvedFormat);
|
|
188
188
|
|
|
189
|
+
// Syncs the elapsed-time text with a timer.
|
|
189
190
|
useEffect(() => {
|
|
190
191
|
const resolvedStartTime =
|
|
191
192
|
startTime !== undefined && Number.isFinite(startTime)
|
|
@@ -378,7 +378,7 @@ export function Timestamp({
|
|
|
378
378
|
? formatInstant(date, 'full', locale, {timeZoneNameStyle: 'long'})
|
|
379
379
|
: '';
|
|
380
380
|
|
|
381
|
-
//
|
|
381
|
+
// Syncs the relative time with an interval timer while the timestamp is live.
|
|
382
382
|
useEffect(() => {
|
|
383
383
|
if (!isLive || !isValidDate || !isRelativeFormat(effectiveFormat)) {
|
|
384
384
|
return;
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* - /packages/core/src/Timestamp/Timestamp.test.tsx
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
|
-
import {SHARED_DATE_FORMAT_OPTIONS,
|
|
32
|
+
import {SHARED_DATE_FORMAT_OPTIONS, getWallClock} from '../utils/plainDate';
|
|
33
33
|
import type {Locale} from '../i18n/types';
|
|
34
34
|
import type {TimestampFormat} from './Timestamp';
|
|
35
35
|
|
|
@@ -125,38 +125,6 @@ function pad(n: number): string {
|
|
|
125
125
|
return String(n).padStart(2, '0');
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
/** The fields a `system_*` string is assembled from. */
|
|
129
|
-
interface WallClock {
|
|
130
|
-
year: number;
|
|
131
|
-
month: number;
|
|
132
|
-
day: number;
|
|
133
|
-
hour: number;
|
|
134
|
-
minute: number;
|
|
135
|
-
second: number;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Wall-clock fields for an instant: in the named zone, or — with no zone —
|
|
140
|
-
* the viewer's own, read straight off the `Date`. The zone-less branch
|
|
141
|
-
* deliberately stays on plain getters so the default rendering never gains a
|
|
142
|
-
* dependency on `Intl` zone data it did not have before.
|
|
143
|
-
*
|
|
144
|
-
* The explicit return type is load-bearing: it is what forces the two branches
|
|
145
|
-
* to keep producing the same shape.
|
|
146
|
-
*/
|
|
147
|
-
function getWallClock(date: Date, timeZone: string | undefined): WallClock {
|
|
148
|
-
return timeZone === undefined
|
|
149
|
-
? {
|
|
150
|
-
year: date.getFullYear(),
|
|
151
|
-
month: date.getMonth() + 1,
|
|
152
|
-
day: date.getDate(),
|
|
153
|
-
hour: date.getHours(),
|
|
154
|
-
minute: date.getMinutes(),
|
|
155
|
-
second: date.getSeconds(),
|
|
156
|
-
}
|
|
157
|
-
: getTimeZoneParts(date.getTime(), timeZone);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
128
|
/**
|
|
161
129
|
* Renders one instant in one absolute format.
|
|
162
130
|
*
|
package/src/Toast/Toast.doc.mjs
CHANGED
|
@@ -89,7 +89,7 @@ export const docs = {
|
|
|
89
89
|
name: 'renderContent',
|
|
90
90
|
type: '(toast: ToastContentRenderProps) => ReactNode',
|
|
91
91
|
description:
|
|
92
|
-
"Replaces the content of this toast's card with your own layout. Astryx keeps the card, its astryx-toast theme target
|
|
92
|
+
"Replaces the content of this toast's card with your own layout. Astryx keeps the card, its astryx-toast theme target and auto-hide behavior (inside a ToastViewport the viewport announces the toast, and while a modal hosts the viewport the card announces itself), then hands the renderer the message, endContent, resolved toast settings and a dismiss callback. The custom renderer owns every control in its layout: compose the control you want and call dismiss from it. Astryx does not inject a fallback close into custom content. Per-toast: an app shares one layout by wrapping useToast and passing it on every call, while a toast raised by library code that never passes it renders as an ordinary Astryx toast. The argument is {body, endContent, type, isAutoHide, autoHideDuration, dismiss}, where type is 'info' | 'error'.",
|
|
93
93
|
},
|
|
94
94
|
],
|
|
95
95
|
theming: {
|
|
@@ -211,7 +211,7 @@ export const docsZh = {
|
|
|
211
211
|
collisionBehavior: '当已存在相同 uniqueID 的 toast 时的行为。',
|
|
212
212
|
onHide: '当 toast 被移除时触发的回调。',
|
|
213
213
|
renderContent:
|
|
214
|
-
"用你自己的布局替换该 toast 卡片内部的内容。Astryx 保留卡片本身、astryx-toast
|
|
214
|
+
"用你自己的布局替换该 toast 卡片内部的内容。Astryx 保留卡片本身、astryx-toast 主题目标和自动关闭行为(在 ToastViewport 中由视口播报该 toast;当模态框承载视口时由卡片自行播报),并把消息、endContent、解析后的 toast 设置和 dismiss 回调交给渲染函数。自定义渲染函数完全拥有布局中的控件:请组合所需的控件并通过它调用 dismiss。Astryx 不会向自定义内容注入后备关闭按钮。按 toast 单独设置:应用可通过封装 useToast 并在每次调用时传入来共享同一套布局;而由库代码发起、从不传入该参数的 toast 会渲染为普通的 Astryx toast。传入参数为 {body, endContent, type, isAutoHide, autoHideDuration, dismiss},其中 type 为 'info' | 'error'。",
|
|
215
215
|
},
|
|
216
216
|
usage: {
|
|
217
217
|
description:
|
|
@@ -328,6 +328,7 @@ export const docsDense = {
|
|
|
328
328
|
uniqueID: 'unique id for dedup',
|
|
329
329
|
collisionBehavior: 'behavior when matching uniqueID exists',
|
|
330
330
|
onHide: 'callback when toast removed',
|
|
331
|
-
renderContent:
|
|
331
|
+
renderContent:
|
|
332
|
+
'custom inner layout; receives content, resolved settings + dismiss callback; no injected fallback control',
|
|
332
333
|
},
|
|
333
334
|
};
|
package/src/Toast/Toast.tsx
CHANGED
|
@@ -154,6 +154,16 @@ export interface ToastProps {
|
|
|
154
154
|
|
|
155
155
|
interface ToastSurfaceProps extends ToastProps {
|
|
156
156
|
gestureDirection: ToastGestureDirection;
|
|
157
|
+
/**
|
|
158
|
+
* Changes when a uniqueID overwrite updates this card in place: the new
|
|
159
|
+
* toast's auto-hide timer starts over.
|
|
160
|
+
*/
|
|
161
|
+
timerKey?: string;
|
|
162
|
+
/**
|
|
163
|
+
* False when the viewport announces the toast: the card then carries no
|
|
164
|
+
* live region of its own, so an update in place is announced once.
|
|
165
|
+
*/
|
|
166
|
+
isLiveRegion?: boolean;
|
|
157
167
|
}
|
|
158
168
|
|
|
159
169
|
/**
|
|
@@ -193,6 +203,8 @@ export function ToastSurface({
|
|
|
193
203
|
onDismiss,
|
|
194
204
|
renderContent,
|
|
195
205
|
gestureDirection,
|
|
206
|
+
timerKey,
|
|
207
|
+
isLiveRegion = true,
|
|
196
208
|
}: ToastSurfaceProps) {
|
|
197
209
|
const t = useComponentTranslator();
|
|
198
210
|
const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
@@ -226,34 +238,28 @@ export function ToastSurface({
|
|
|
226
238
|
}, remainingRef.current);
|
|
227
239
|
}, [isAutoHide]);
|
|
228
240
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
},
|
|
249
|
-
[isAutoHide],
|
|
250
|
-
);
|
|
241
|
+
// Pointer, focus and gesture holds are tracked whatever isAutoHide is: an
|
|
242
|
+
// overwrite can turn a toast that does not auto-hide into one that does
|
|
243
|
+
// while a hold is in place. The window hold leaves with its listeners.
|
|
244
|
+
const pauseTimer = useCallback((source: PauseSource) => {
|
|
245
|
+
const sources = pauseSourcesRef.current;
|
|
246
|
+
const wasRunning = sources.size === 0;
|
|
247
|
+
sources.add(source);
|
|
248
|
+
if (!wasRunning) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (timerRef.current) {
|
|
252
|
+
clearTimeout(timerRef.current);
|
|
253
|
+
timerRef.current = null;
|
|
254
|
+
}
|
|
255
|
+
if (startTimeRef.current != null) {
|
|
256
|
+
const elapsed = Date.now() - startTimeRef.current;
|
|
257
|
+
remainingRef.current = Math.max(remainingRef.current - elapsed, 1000);
|
|
258
|
+
}
|
|
259
|
+
}, []);
|
|
251
260
|
|
|
252
261
|
const resumeTimer = useCallback(
|
|
253
262
|
(source: PauseSource) => {
|
|
254
|
-
if (!isAutoHide) {
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
263
|
const sources = pauseSourcesRef.current;
|
|
258
264
|
if (!sources.delete(source)) {
|
|
259
265
|
return;
|
|
@@ -271,20 +277,31 @@ export function ToastSurface({
|
|
|
271
277
|
}
|
|
272
278
|
startTimer();
|
|
273
279
|
},
|
|
274
|
-
[
|
|
280
|
+
[startTimer],
|
|
275
281
|
);
|
|
276
282
|
|
|
277
283
|
useEffect(() => {
|
|
278
284
|
remainingRef.current = autoHideDuration;
|
|
285
|
+
// An update in place can remove the focused control, which fires no blur:
|
|
286
|
+
// a focus hold whose focus has left the card is stale.
|
|
287
|
+
const root = cardRootRef.current?.current;
|
|
288
|
+
if (
|
|
289
|
+
pauseSourcesRef.current.has('focus') &&
|
|
290
|
+
root != null &&
|
|
291
|
+
!root.contains(root.ownerDocument.activeElement)
|
|
292
|
+
) {
|
|
293
|
+
pauseSourcesRef.current.delete('focus');
|
|
294
|
+
}
|
|
279
295
|
startTimer();
|
|
280
296
|
return () => {
|
|
281
297
|
if (timerRef.current) {
|
|
282
298
|
clearTimeout(timerRef.current);
|
|
283
299
|
}
|
|
284
300
|
};
|
|
285
|
-
// startTimer's identity is stable per isAutoHide, so this runs on mount
|
|
286
|
-
//
|
|
287
|
-
|
|
301
|
+
// startTimer's identity is stable per isAutoHide, so this runs on mount,
|
|
302
|
+
// on a genuine duration change and on an overwrite (timerKey), not on
|
|
303
|
+
// unrelated viewport renders.
|
|
304
|
+
}, [autoHideDuration, startTimer, timerKey]);
|
|
288
305
|
|
|
289
306
|
// Pause the auto-hide timer while the window is not focused, so a toast
|
|
290
307
|
// doesn't silently expire while the user is in another window or tab.
|
|
@@ -292,6 +309,7 @@ export function ToastSurface({
|
|
|
292
309
|
if (!isAutoHide) {
|
|
293
310
|
return;
|
|
294
311
|
}
|
|
312
|
+
const pauseSources = pauseSourcesRef.current;
|
|
295
313
|
const pauseForWindow = () => pauseTimer('window');
|
|
296
314
|
const resumeForWindow = () => resumeTimer('window');
|
|
297
315
|
window.addEventListener('blur', pauseForWindow);
|
|
@@ -304,6 +322,8 @@ export function ToastSurface({
|
|
|
304
322
|
return () => {
|
|
305
323
|
window.removeEventListener('blur', pauseForWindow);
|
|
306
324
|
window.removeEventListener('focus', resumeForWindow);
|
|
325
|
+
// With the listeners gone, no focus event would clear the window hold.
|
|
326
|
+
pauseSources.delete('window');
|
|
307
327
|
};
|
|
308
328
|
}, [isAutoHide, pauseTimer, resumeTimer]);
|
|
309
329
|
|
|
@@ -368,9 +388,9 @@ export function ToastSurface({
|
|
|
368
388
|
return (
|
|
369
389
|
<div
|
|
370
390
|
ref={rootRef}
|
|
371
|
-
role={isError ? 'alert' : 'status'}
|
|
372
|
-
aria-live={isError ? 'assertive' : 'polite'}
|
|
373
|
-
aria-atomic=
|
|
391
|
+
role={isLiveRegion ? (isError ? 'alert' : 'status') : undefined}
|
|
392
|
+
aria-live={isLiveRegion ? (isError ? 'assertive' : 'polite') : undefined}
|
|
393
|
+
aria-atomic={isLiveRegion ? 'true' : undefined}
|
|
374
394
|
onMouseEnter={pauseForPointer}
|
|
375
395
|
onMouseLeave={resumeForPointer}
|
|
376
396
|
onFocusCapture={pauseForFocus}
|