@astryxdesign/core 0.7.7 → 0.7.8-canary.36cde5e
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 +5 -0
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +1 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +25 -4
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
- package/dist/BottomSheet/useMobileKeyboard.d.ts.map +1 -1
- package/dist/BottomSheet/useMobileKeyboard.js +6 -0
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +12 -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 +15 -16
- 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 +4 -0
- 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/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 +625 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +1 -0
- package/dist/DateInput/Wheel.d.ts +18 -37
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +84 -113
- 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 +74 -0
- package/dist/DateInput/wheelOptions.d.ts.map +1 -0
- package/dist/DateInput/wheelOptions.js +98 -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 +2 -0
- 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 +20 -33
- package/dist/Icon/Icon.d.ts +5 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +5 -2
- package/dist/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 +3 -0
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
- package/dist/Layer/useLayerDismissal.js +3 -0
- package/dist/Layer/usePressPin.d.ts +17 -5
- package/dist/Layer/usePressPin.d.ts.map +1 -1
- package/dist/Layer/usePressPin.js +62 -12
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +3 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +19 -0
- package/dist/MobileNav/MobileNav.d.ts +3 -2
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +9 -25
- 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/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +6 -0
- package/dist/PowerSearch/PowerSearch.d.ts +43 -4
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +445 -134
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +102 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.js +1919 -0
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +25 -6
- 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 +7 -2
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +193 -83
- package/dist/PowerSearch/formatFilterValue.d.ts +18 -6
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +33 -12
- package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
- package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
- package/dist/PowerSearch/formatTokenValue.js +162 -0
- package/dist/PowerSearch/powerSearchDateZone.d.ts +21 -0
- package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchDateZone.js +37 -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 +2 -0
- 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 +101 -77
- package/dist/Resizable/createResizable.d.ts +145 -0
- package/dist/Resizable/createResizable.d.ts.map +1 -0
- package/dist/Resizable/createResizable.js +575 -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 +5 -8
- 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/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.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +4 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
- package/dist/TextInput/TextInput.d.ts +2 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +10 -7
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +2 -0
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
- package/dist/TimeInput/TouchTimeField.js +2 -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/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 +49 -37
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +22 -19
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
- package/dist/Tokenizer/TokenizerBottomSheet.js +1 -1
- package/dist/Tokenizer/index.d.ts +1 -1
- package/dist/Tokenizer/index.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.d.ts +19 -1
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +34 -53
- 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 +39 -6
- package/dist/gestures/GestureHost.d.ts +16 -1
- package/dist/gestures/GestureHost.d.ts.map +1 -1
- package/dist/gestures/GestureHost.js +1 -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 +13 -3
- 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 +134 -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/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 +7 -9
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +55 -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 +42 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +30 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +30 -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/motion/animatedLayout.d.ts.map +1 -1
- package/dist/motion/animatedLayout.js +7 -7
- package/dist/motion/animator.d.ts +14 -14
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +45 -20
- 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/index.d.ts +4 -3
- package/dist/motion/uikit/index.d.ts.map +1 -1
- package/dist/motion/uikit/index.js +4 -3
- 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/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 +7 -0
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +12 -0
- package/dist/utils/focusReturn.d.ts +15 -0
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +28 -0
- package/dist/utils/interactionModality.d.ts.map +1 -1
- package/dist/utils/interactionModality.js +4 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +3 -2
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +3 -2
- package/dist/utils/plainDate.d.ts +8 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +19 -0
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +20 -6
- 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 +120 -0
- package/locales/pseudo.json +90 -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 +4 -0
- package/src/BottomSheet/BottomSheet.tsx +1 -0
- package/src/BottomSheet/BottomSheetPanel.tsx +39 -3
- package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
- package/src/BottomSheet/useMobileKeyboard.ts +4 -0
- package/src/BottomSheet/useSheetGestures.ts +10 -1
- package/src/Button/Button.tsx +26 -4
- package/src/Calendar/Calendar.tsx +36 -25
- package/src/Carousel/Carousel.tsx +1 -0
- package/src/Chat/ChatComposerInput.tsx +2 -0
- 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/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 +765 -0
- package/src/DateInput/TouchDateField.tsx +1 -0
- package/src/DateInput/Wheel.tsx +94 -150
- 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 +155 -0
- package/src/DateInput/wheelPhysics.ts +406 -0
- package/src/DateInput/wheelStrip.ts +341 -0
- package/src/DateTimeInput/TouchDateTimeField.tsx +2 -0
- 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 +49 -54
- package/src/Icon/Icon.doc.mjs +49 -8
- package/src/Icon/Icon.tsx +15 -7
- package/src/IconButton/IconButton.doc.mjs +141 -21
- 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 +2 -0
- package/src/Layer/useLayerDismissal.ts +2 -0
- package/src/Layer/usePressPin.ts +81 -15
- package/src/Layer/useTouchTrigger.ts +2 -0
- package/src/Lightbox/Lightbox.tsx +19 -0
- package/src/MobileNav/MobileNav.tsx +9 -30
- package/src/Outline/useOutlineFromDOM.ts +2 -0
- package/src/Outline/useScrollSpy.ts +2 -0
- package/src/OverflowList/OverflowList.tsx +2 -0
- package/src/Popover/Popover.tsx +4 -0
- package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
- package/src/PowerSearch/PowerSearch.tsx +627 -157
- package/src/PowerSearch/PowerSearchBottomSheet.tsx +2525 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +39 -6
- package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
- package/src/PowerSearch/PowerSearchToken.tsx +7 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +244 -58
- package/src/PowerSearch/formatFilterValue.ts +55 -17
- package/src/PowerSearch/formatTokenValue.ts +222 -0
- package/src/PowerSearch/powerSearchDateZone.ts +64 -0
- package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
- package/src/PowerSearch/types.ts +2 -0
- 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 +169 -109
- package/src/Resizable/createResizable.ts +831 -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 +5 -12
- package/src/Slider/sliderTouchController.ts +2 -2
- package/src/Spinner/Spinner.tsx +77 -63
- 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 +4 -0
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
- package/src/TextInput/TextInput.tsx +11 -10
- package/src/TimeInput/TimeInput.tsx +2 -0
- package/src/TimeInput/TouchTimeField.tsx +2 -0
- package/src/Timer/Timer.tsx +1 -0
- package/src/Timestamp/Timestamp.tsx +1 -1
- 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 +19 -3
- package/src/Tokenizer/Tokenizer.tsx +73 -51
- package/src/Tokenizer/TokenizerBottomSheet.tsx +1 -1
- package/src/Tokenizer/index.ts +1 -0
- package/src/Tooltip/useTooltip.doc.mjs +24 -0
- package/src/Tooltip/useTooltip.tsx +61 -56
- 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 +1 -1
- 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 +20 -5
- 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 +182 -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 +57 -60
- package/src/hooks/useScrollableArea.ts +4 -0
- package/src/hooks/useStreamingText.ts +2 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +43 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
- package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
- package/src/i18n/generated-locales/en.generated.ts +41 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +42 -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/motion/MEASUREMENTS.md +18 -0
- package/src/motion/README.md +10 -5
- package/src/motion/animatedLayout.ts +10 -5
- package/src/motion/animator.ts +66 -31
- 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/index.ts +4 -3
- 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/motionKnobs.ts +4 -3
- package/src/theme/themeMotion.ts +7 -0
- package/src/utils/dateParser.ts +16 -0
- package/src/utils/focusReturn.ts +30 -0
- package/src/utils/interactionModality.ts +4 -0
- package/src/utils/interactionOverlay.stylex.ts +3 -2
- package/src/utils/plainDate.ts +21 -0
- package/src/utils/pressFeedback.ts +24 -6
- package/src/utils/triggerFocus.ts +80 -0
- 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/internal/touch-sheet.ts +0 -21
package/src/theme/Theme.tsx
CHANGED
|
@@ -45,6 +45,11 @@ import {registerTheme} from './themeRegistry';
|
|
|
45
45
|
import {dataAttr} from '../naming';
|
|
46
46
|
import {ThemeContext} from './useTheme';
|
|
47
47
|
import {warnOnce} from '../utils/devWarning';
|
|
48
|
+
import {REDUCED_MOTION_PROPERTY, resolveMotionKnobs} from './themeMotion';
|
|
49
|
+
import {
|
|
50
|
+
reducedMotionMarkProps,
|
|
51
|
+
setRootReducedMotionMark,
|
|
52
|
+
} from '../privateAttributes/reducedMotion.stylex';
|
|
48
53
|
|
|
49
54
|
/**
|
|
50
55
|
* Theme provider props
|
|
@@ -76,6 +81,11 @@ const wrapperStyles = stylex.create({
|
|
|
76
81
|
system: {
|
|
77
82
|
colorScheme: 'light dark',
|
|
78
83
|
},
|
|
84
|
+
// The mark's custom property (REDUCED_MOTION_PROPERTY), which every element
|
|
85
|
+
// under the mark inherits.
|
|
86
|
+
reducedMotion: {
|
|
87
|
+
'--_astryx-reduced-motion': '1',
|
|
88
|
+
},
|
|
79
89
|
});
|
|
80
90
|
|
|
81
91
|
// =============================================================================
|
|
@@ -110,6 +120,7 @@ const THEME_LAYER_ORDER = '@layer reset, astryx-base, astryx-theme;';
|
|
|
110
120
|
function useThemeStyleInjection(theme: DefinedTheme): void {
|
|
111
121
|
const id = useId();
|
|
112
122
|
|
|
123
|
+
// Syncs the document's stylesheets with the runtime theme CSS.
|
|
113
124
|
useInsertionEffect(() => {
|
|
114
125
|
// Built themes have their CSS in a separate file — skip injection
|
|
115
126
|
if (theme.__built) {
|
|
@@ -197,12 +208,18 @@ function useThemeStyleInjection(theme: DefinedTheme): void {
|
|
|
197
208
|
*
|
|
198
209
|
* - 'light' | 'dark' → sets data-theme="light" | "dark"
|
|
199
210
|
* - 'system' → removes data-theme (reset.css defaults to color-scheme: light dark)
|
|
211
|
+
*
|
|
212
|
+
* A theme that reduces motion for everyone also marks `<html>` with
|
|
213
|
+
* `data-astryx-reduced-motion` and its custom property, so layers portaled
|
|
214
|
+
* outside the wrapper reduce their motion too.
|
|
200
215
|
*/
|
|
201
216
|
function useRootThemeSync(
|
|
202
217
|
isNested: boolean,
|
|
203
218
|
mode: ThemeMode,
|
|
204
219
|
themeName: string,
|
|
220
|
+
reducesMotion: boolean,
|
|
205
221
|
): void {
|
|
222
|
+
// Syncs the theme attributes on the root `<html>` element.
|
|
206
223
|
useIsomorphicLayoutEffect(() => {
|
|
207
224
|
if (isNested) {
|
|
208
225
|
return;
|
|
@@ -220,12 +237,20 @@ function useRootThemeSync(
|
|
|
220
237
|
|
|
221
238
|
// Sync theme name so @scope rules reach portals/fallback viewports.
|
|
222
239
|
document.documentElement.setAttribute(dataAttr('theme'), themeName);
|
|
240
|
+
setRootReducedMotionMark(document.documentElement, reducesMotion);
|
|
241
|
+
if (reducesMotion) {
|
|
242
|
+
document.documentElement.style.setProperty(REDUCED_MOTION_PROPERTY, '1');
|
|
243
|
+
} else {
|
|
244
|
+
document.documentElement.style.removeProperty(REDUCED_MOTION_PROPERTY);
|
|
245
|
+
}
|
|
223
246
|
|
|
224
247
|
return () => {
|
|
225
248
|
document.documentElement.removeAttribute('data-theme');
|
|
226
249
|
document.documentElement.removeAttribute(dataAttr('theme'));
|
|
250
|
+
setRootReducedMotionMark(document.documentElement, false);
|
|
251
|
+
document.documentElement.style.removeProperty(REDUCED_MOTION_PROPERTY);
|
|
227
252
|
};
|
|
228
|
-
}, [isNested, mode, themeName]);
|
|
253
|
+
}, [isNested, mode, themeName, reducesMotion]);
|
|
229
254
|
}
|
|
230
255
|
|
|
231
256
|
// =============================================================================
|
|
@@ -255,7 +280,11 @@ export function Theme({
|
|
|
255
280
|
registerTheme(theme);
|
|
256
281
|
|
|
257
282
|
useThemeStyleInjection(theme);
|
|
258
|
-
|
|
283
|
+
// resolveMotionKnobs resolves no public theme to 'always', so no theme
|
|
284
|
+
// marks its root.
|
|
285
|
+
const reducesMotion =
|
|
286
|
+
resolveMotionKnobs(theme.__axes?.motion).reducedMotion === 'always';
|
|
287
|
+
useRootThemeSync(isNested, mode, theme.name, reducesMotion);
|
|
259
288
|
|
|
260
289
|
// Get color-scheme style
|
|
261
290
|
const colorSchemeStyle =
|
|
@@ -272,8 +301,13 @@ export function Theme({
|
|
|
272
301
|
<ThemeContext value={ctxValue}>
|
|
273
302
|
<ThemeNestingContext value={true}>
|
|
274
303
|
<div
|
|
275
|
-
{...stylex.props(
|
|
304
|
+
{...stylex.props(
|
|
305
|
+
wrapperStyles.base,
|
|
306
|
+
colorSchemeStyle,
|
|
307
|
+
reducesMotion && wrapperStyles.reducedMotion,
|
|
308
|
+
)}
|
|
276
309
|
data-astryx-theme={theme.name}
|
|
310
|
+
{...reducedMotionMarkProps(reducesMotion)}
|
|
277
311
|
data-theme={mode === 'system' ? undefined : mode}>
|
|
278
312
|
{children}
|
|
279
313
|
</div>
|
package/src/theme/motionKnobs.ts
CHANGED
|
@@ -20,10 +20,11 @@
|
|
|
20
20
|
export type MotionCharacter = 'crisp' | 'standard' | 'expressive';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
* Whose Reduce Motion setting a theme follows: `'system'`, each person's own
|
|
24
|
-
*
|
|
23
|
+
* Whose Reduce Motion setting a theme follows: `'system'`, each person's own,
|
|
24
|
+
* or `'always'`, reduced for everyone. Internal: `resolveKnobs` resolves
|
|
25
|
+
* every theme to `'system'` until `'always'` ships (`spec:AST-108` FR6).
|
|
25
26
|
*/
|
|
26
|
-
export type ThemeReducedMotion = 'system';
|
|
27
|
+
export type ThemeReducedMotion = 'system' | 'always';
|
|
27
28
|
|
|
28
29
|
/** The motion knobs a theme sets (`spec:AST-108` FR1). */
|
|
29
30
|
export interface ThemeMotionKnobs {
|
package/src/theme/themeMotion.ts
CHANGED
|
@@ -87,6 +87,13 @@ function msOf(value: string): number {
|
|
|
87
87
|
*/
|
|
88
88
|
export const MOTION_TEMPO_PROPERTY = '--_astryx-motion-tempo';
|
|
89
89
|
|
|
90
|
+
/**
|
|
91
|
+
* The custom property a theme whose `reducedMotion` resolves to `'always'`
|
|
92
|
+
* sets to `1` on its root, and the root theme on `<html>`: styles that cannot
|
|
93
|
+
* key a selector on the mark read it in a value.
|
|
94
|
+
*/
|
|
95
|
+
export const REDUCED_MOTION_PROPERTY = '--_astryx-reduced-motion';
|
|
96
|
+
|
|
90
97
|
/** The duration tokens at `tempo`: today's values times it, to the ms. */
|
|
91
98
|
export function durationTokensAt(tempo: number): Record<string, string> {
|
|
92
99
|
const tokens: Record<string, string> = {};
|
package/src/utils/dateParser.ts
CHANGED
|
@@ -32,6 +32,11 @@ export function isLocaleDayFirst(locale: Locale = 'en'): boolean {
|
|
|
32
32
|
return dayIndex < monthIndex;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
// Built at run time: a Unicode property escape in a literal fails a source
|
|
36
|
+
// build whose Babel lacks the Unicode data.
|
|
37
|
+
const LETTER_FREE = new RegExp('^[^\\p{L}]+$', 'u');
|
|
38
|
+
const YEAR_FIRST = new RegExp('^\\d{4}[^\\p{L}\\d]', 'u');
|
|
39
|
+
|
|
35
40
|
/**
|
|
36
41
|
* Parses user input into a PlainDate.
|
|
37
42
|
*
|
|
@@ -138,6 +143,17 @@ export function parseDateInput(
|
|
|
138
143
|
if (/^\d+$/.test(trimmed)) {
|
|
139
144
|
return null;
|
|
140
145
|
}
|
|
146
|
+
// In a day-first locale, letter-free text that no form above matched is not
|
|
147
|
+
// a date. Native `Date` reads `a/b/c` month first. It also takes a year of
|
|
148
|
+
// one to three digits. So "12/01/2" gives a wrong date. A four-digit year
|
|
149
|
+
// written first is not ambiguous.
|
|
150
|
+
if (
|
|
151
|
+
isLocaleDayFirst(locale) &&
|
|
152
|
+
LETTER_FREE.test(trimmed) &&
|
|
153
|
+
!YEAR_FIRST.test(trimmed)
|
|
154
|
+
) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
141
157
|
|
|
142
158
|
const parsed = new Date(trimmed);
|
|
143
159
|
if (!isNaN(parsed.getTime())) {
|
package/src/utils/focusReturn.ts
CHANGED
|
@@ -151,3 +151,33 @@ export function focusForLastInput(
|
|
|
151
151
|
}
|
|
152
152
|
element.focus({...options, focusVisible: false});
|
|
153
153
|
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Prepares the focus return for an open surface that may be removed while
|
|
157
|
+
* open (rendered only while open, or removed with its view). Removing a
|
|
158
|
+
* `<dialog>` runs no close and no browser focus return. Call this while the
|
|
159
|
+
* surface is mounted: it reads the frame that hosts the surface now, because a
|
|
160
|
+
* removed frame's document has no window. Call the returned function from the
|
|
161
|
+
* effect cleanup with the opener.
|
|
162
|
+
*
|
|
163
|
+
* Once the commit has finished, focus moves to the opener only when the
|
|
164
|
+
* surface really left the document (StrictMode's simulated unmount keeps it),
|
|
165
|
+
* the opener is still on the page, and the removal lost focus, both in the
|
|
166
|
+
* surface's document and in the document that hosts its frame. A control the
|
|
167
|
+
* user pressed outside the surface, or outside its frame, keeps its focus.
|
|
168
|
+
*/
|
|
169
|
+
export function prepareFocusReturnOnRemoval(
|
|
170
|
+
surface: Element,
|
|
171
|
+
): (opener: Element | null) => void {
|
|
172
|
+
const host = surface.ownerDocument.defaultView?.frameElement ?? null;
|
|
173
|
+
return opener => {
|
|
174
|
+
queueMicrotask(() => {
|
|
175
|
+
if (surface.isConnected || opener == null || !opener.isConnected) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (isFocusLost(surface) && (host == null || isFocusLost(host))) {
|
|
179
|
+
focusForLastInput(opener as HTMLElement);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
}
|
|
@@ -203,6 +203,7 @@ function holdNodeDocument(
|
|
|
203
203
|
* tracker of its own for modality.
|
|
204
204
|
*/
|
|
205
205
|
export function useInteractionModalityTracking(): InteractionModalityTracking {
|
|
206
|
+
// Syncs the document's interaction-modality tracking with this mount.
|
|
206
207
|
useEffect(() => trackInteractionModality(), []);
|
|
207
208
|
const nodeRef = useRef<Element | null>(null);
|
|
208
209
|
const holdRef = useRef<{release: (() => void) | null}>({release: null});
|
|
@@ -236,7 +237,10 @@ export function useInteractionModalityTracking(): InteractionModalityTracking {
|
|
|
236
237
|
export function useInteractionModalityTrackingFor(
|
|
237
238
|
elementRef: RefObject<Element | null>,
|
|
238
239
|
): () => InteractionModality {
|
|
240
|
+
// Syncs the document's interaction-modality tracking with this mount.
|
|
239
241
|
useEffect(() => trackInteractionModality(), []);
|
|
242
|
+
// Syncs modality tracking in the element's second document, such as an iframe
|
|
243
|
+
// or a Picture-in-Picture window.
|
|
240
244
|
useEffect(() => {
|
|
241
245
|
const ownerDocument = elementRef.current?.ownerDocument;
|
|
242
246
|
if (
|
|
@@ -15,8 +15,9 @@
|
|
|
15
15
|
* SYNC: When modified, update pressFeedback.ts, pressGesture.ts (the fade
|
|
16
16
|
* clock), hooks/usePressFeedback.doc.mjs, the components that paint the touch
|
|
17
17
|
* press off an ancestor scope or a pseudo-element (Switch, Tab,
|
|
18
|
-
* CheckboxInput, RadioListItem, ClickableCard, SelectableCard, Thumbnail)
|
|
19
|
-
* and
|
|
18
|
+
* CheckboxInput, RadioListItem, ClickableCard, SelectableCard, Thumbnail),
|
|
19
|
+
* Button (a tracked action sizes its `:active` image to zero) and
|
|
20
|
+
* scripts/build-css.test.mjs.
|
|
20
21
|
*/
|
|
21
22
|
|
|
22
23
|
// Every surface that paints a press uses one of these styles, so a change to
|
package/src/utils/plainDate.ts
CHANGED
|
@@ -488,6 +488,27 @@ export function plainDateWeekFieldName(locale: Locale = 'en'): string {
|
|
|
488
488
|
return 'week';
|
|
489
489
|
}
|
|
490
490
|
|
|
491
|
+
const dayNumberFormats = new Map<Locale, Intl.NumberFormat>();
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* A day of the month or a week number in the locale's own digits: `15` in
|
|
495
|
+
* English, `۱۵` in Persian, `١٥` in Egyptian Arabic. Only the digits follow the
|
|
496
|
+
* locale. The number stays the Gregorian day or ISO week that it names, so no
|
|
497
|
+
* other calendar applies, and no grouping separator or unit word is added.
|
|
498
|
+
* Internal: not re-exported from `utils/index.ts`.
|
|
499
|
+
*/
|
|
500
|
+
export function plainDateFormatDayNumber(
|
|
501
|
+
value: number,
|
|
502
|
+
locale: Locale,
|
|
503
|
+
): string {
|
|
504
|
+
let format = dayNumberFormats.get(locale);
|
|
505
|
+
if (format == null) {
|
|
506
|
+
format = new Intl.NumberFormat(locale, {useGrouping: false});
|
|
507
|
+
dayNumberFormats.set(locale, format);
|
|
508
|
+
}
|
|
509
|
+
return format.format(value);
|
|
510
|
+
}
|
|
511
|
+
|
|
491
512
|
// =============================================================================
|
|
492
513
|
// Shared date-only format vocabulary
|
|
493
514
|
// =============================================================================
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @file pressFeedback.ts
|
|
5
|
-
* @input The press state machine (pressGesture.ts), the menu-press
|
|
6
|
-
*
|
|
5
|
+
* @input The press state machine (pressGesture.ts), the menu-press and
|
|
6
|
+
* press-group markers and the document's pointer, keyboard, scroll and
|
|
7
7
|
* visibility events
|
|
8
8
|
* @output PRESSABLE_ATTRIBUTE, PRESSED_ATTRIBUTE, pressableProps and
|
|
9
9
|
* installPressFeedback
|
|
@@ -46,6 +46,7 @@ import {isCoarsePointer, watchCoarsePointer} from './coarsePointer';
|
|
|
46
46
|
import {subscribeInput} from './inputStream';
|
|
47
47
|
import {TOUCH_QUERY} from './touchPresentation';
|
|
48
48
|
import {holdsPressThroughDrag} from '../privateAttributes/pressHoldsDrag.stylex';
|
|
49
|
+
import {isTrackedByGroup} from '../privateAttributes/pressGroupItem.stylex';
|
|
49
50
|
|
|
50
51
|
/**
|
|
51
52
|
* The marker the controller finds with `closest()`. Every Astryx component
|
|
@@ -325,8 +326,9 @@ function stylesheetDroppedActive(): boolean {
|
|
|
325
326
|
|
|
326
327
|
/**
|
|
327
328
|
* The surface a mouse button's or the Space key's press paints, if any: the
|
|
328
|
-
* innermost marked surface, outside a menu. A key's
|
|
329
|
-
* focused element that is itself the surface, as
|
|
329
|
+
* innermost marked surface, outside a menu and off a tracked action. A key's
|
|
330
|
+
* press paints only a focused element that is itself the surface, as
|
|
331
|
+
* `:active` does.
|
|
330
332
|
*/
|
|
331
333
|
function buttonSurfaceAt(
|
|
332
334
|
target: EventTarget | null,
|
|
@@ -336,6 +338,10 @@ function buttonSurfaceAt(
|
|
|
336
338
|
if (element == null || element.closest(MENU_PRESS_ROOT) != null) {
|
|
337
339
|
return null;
|
|
338
340
|
}
|
|
341
|
+
// A tracker that follows a mouse paints a mouse press on its own actions.
|
|
342
|
+
if (pointerId != null && isTrackedByGroup(element, 'mouse')) {
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
339
345
|
if (pointerId == null && element !== target) {
|
|
340
346
|
return null;
|
|
341
347
|
}
|
|
@@ -414,7 +420,14 @@ function onPointerDown(event: PointerEvent): void {
|
|
|
414
420
|
const braking = element != null && scrollerIsBraking(element);
|
|
415
421
|
lastTouchAt = Date.now();
|
|
416
422
|
lastTouchTarget = event.target instanceof Node ? event.target : null;
|
|
417
|
-
|
|
423
|
+
// A group's tracker that follows this pointer paints its action, so two
|
|
424
|
+
// writers would erase each other's paint. The touch still counts for the
|
|
425
|
+
// brake above.
|
|
426
|
+
if (
|
|
427
|
+
element == null ||
|
|
428
|
+
braking ||
|
|
429
|
+
isTrackedByGroup(element, event.pointerType)
|
|
430
|
+
) {
|
|
418
431
|
return;
|
|
419
432
|
}
|
|
420
433
|
takeOver(button, element);
|
|
@@ -560,6 +573,11 @@ function activatesOnSpace(target: EventTarget | null): boolean {
|
|
|
560
573
|
);
|
|
561
574
|
}
|
|
562
575
|
|
|
576
|
+
/** A tracked action takes no `:active` paint, so a key's press paints here. */
|
|
577
|
+
function isTrackedAction(target: EventTarget | null): boolean {
|
|
578
|
+
return target instanceof Element && isTrackedByGroup(target);
|
|
579
|
+
}
|
|
580
|
+
|
|
563
581
|
/**
|
|
564
582
|
* Space went down on a focused button that is itself a pressable surface.
|
|
565
583
|
* Heard in the BUBBLE phase, after the page's own handlers, so a press the
|
|
@@ -573,7 +591,7 @@ function onKeyDown(event: KeyboardEvent): void {
|
|
|
573
591
|
event.isComposing ||
|
|
574
592
|
event.defaultPrevented ||
|
|
575
593
|
!activatesOnSpace(event.target) ||
|
|
576
|
-
!stylesheetDroppedActive()
|
|
594
|
+
!(stylesheetDroppedActive() || isTrackedAction(event.target))
|
|
577
595
|
) {
|
|
578
596
|
return;
|
|
579
597
|
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file triggerFocus.ts
|
|
5
|
+
* @input A focus event on a hover-layer trigger and its focusTrigger value
|
|
6
|
+
* @output Whether that focus counts as focus on the trigger, and a gate that
|
|
7
|
+
* remembers it for the matching blur
|
|
8
|
+
* @position Shared focus-trigger judgement for Tooltip and HoverCard
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** When focus on a trigger opens its layer. */
|
|
12
|
+
export type TriggerFocusMode = 'auto' | 'always' | 'never';
|
|
13
|
+
|
|
14
|
+
/** Whether `element` is in the tab order or naturally focusable. */
|
|
15
|
+
export function isFocusableTrigger(element: HTMLElement): boolean {
|
|
16
|
+
if (element.hasAttribute('tabindex')) {
|
|
17
|
+
return element.tabIndex >= 0;
|
|
18
|
+
}
|
|
19
|
+
const focusableTags = ['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'];
|
|
20
|
+
if (focusableTags.includes(element.tagName)) {
|
|
21
|
+
return !(element as HTMLButtonElement).disabled;
|
|
22
|
+
}
|
|
23
|
+
return element.isContentEditable;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Whether a focus event on a trigger (its `currentTarget`) counts as focus on
|
|
28
|
+
* the trigger.
|
|
29
|
+
*
|
|
30
|
+
* Under `auto` it is decided when focus arrives, not when listeners attach: a
|
|
31
|
+
* roving-tabindex member that was `tabindex="-1"` then can be the tab stop
|
|
32
|
+
* now. A trigger that receives focus is focusable by definition, which covers
|
|
33
|
+
* focusable elements this check does not list, such as a `<summary>` or an SVG
|
|
34
|
+
* link. Focus inside the trigger counts only while the trigger is focusable
|
|
35
|
+
* too, so a plain wrapper ignores its children's focus.
|
|
36
|
+
*/
|
|
37
|
+
export function isFocusForTrigger(
|
|
38
|
+
event: Event,
|
|
39
|
+
mode: TriggerFocusMode,
|
|
40
|
+
): boolean {
|
|
41
|
+
if (mode === 'always') {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
if (mode === 'never') {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
const trigger = event.currentTarget as HTMLElement | null;
|
|
48
|
+
return (
|
|
49
|
+
trigger != null && (event.target === trigger || isFocusableTrigger(trigger))
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Remembers whether a trigger's current focus counted when it arrived. */
|
|
54
|
+
export interface TriggerFocusGate {
|
|
55
|
+
/** On focusin: whether this focus opens the layer. */
|
|
56
|
+
focusIn(event: Event, mode: TriggerFocusMode): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* On focusout: whether this blur closes the layer. A focus that counted
|
|
59
|
+
* closes on blur even if the trigger has since left the tab order.
|
|
60
|
+
*/
|
|
61
|
+
focusOut(event: Event, mode: TriggerFocusMode): boolean;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** A gate for one trigger; each hook keeps one for its lifetime. */
|
|
65
|
+
export function createTriggerFocusGate(): TriggerFocusGate {
|
|
66
|
+
let isCounted = false;
|
|
67
|
+
return {
|
|
68
|
+
focusIn(event, mode) {
|
|
69
|
+
isCounted = isFocusForTrigger(event, mode);
|
|
70
|
+
return isCounted;
|
|
71
|
+
},
|
|
72
|
+
focusOut(event, mode) {
|
|
73
|
+
if (!isCounted && !isFocusForTrigger(event, mode)) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
isCounted = false;
|
|
77
|
+
return true;
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file touch-sheet.ts
|
|
3
|
-
* @input The touch sheets' shared confirmation, search-drag dismissal and
|
|
4
|
-
* draft rules
|
|
5
|
-
* @output `@astryxdesign/core/internal/touch-sheet`: SheetConfirmation,
|
|
6
|
-
* useDismissSearchOnTouchDrag, hasSameSelection and nameSheetDraftChange,
|
|
7
|
-
* re-exported by name for Lab's sheets
|
|
8
|
-
* @position An internal entry reserved for Astryx's own packages:
|
|
9
|
-
* undocumented, outside the public API and its compatibility promise,
|
|
10
|
-
* versioned in lockstep with Core, and allowed only in Core and Lab by the
|
|
11
|
-
* `@astryx/no-core-internal-import` lint rule. Core components import the
|
|
12
|
-
* same modules by relative path. Named re-exports only.
|
|
13
|
-
*
|
|
14
|
-
* SYNC: When modified, update scripts/sync-exports.js.
|
|
15
|
-
*/
|
|
16
|
-
export { SheetConfirmation } from './SheetConfirmation.js';
|
|
17
|
-
export type { SheetConfirmationProps } from './SheetConfirmation.js';
|
|
18
|
-
export { useDismissSearchOnTouchDrag } from './useDismissSearchOnTouchDrag.js';
|
|
19
|
-
export { hasSameSelection, nameSheetDraftChange } from './sheetDraft.js';
|
|
20
|
-
export type { SheetDraftChange } from './sheetDraft.js';
|
|
21
|
-
//# sourceMappingURL=touch-sheet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"touch-sheet.d.ts","sourceRoot":"","sources":["../../src/internal/touch-sheet.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,cAAc,CAAC;AACpE,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
/**
|
|
3
|
-
* @file touch-sheet.ts
|
|
4
|
-
* @input The touch sheets' shared confirmation, search-drag dismissal and
|
|
5
|
-
* draft rules
|
|
6
|
-
* @output `@astryxdesign/core/internal/touch-sheet`: SheetConfirmation,
|
|
7
|
-
* useDismissSearchOnTouchDrag, hasSameSelection and nameSheetDraftChange,
|
|
8
|
-
* re-exported by name for Lab's sheets
|
|
9
|
-
* @position An internal entry reserved for Astryx's own packages:
|
|
10
|
-
* undocumented, outside the public API and its compatibility promise,
|
|
11
|
-
* versioned in lockstep with Core, and allowed only in Core and Lab by the
|
|
12
|
-
* `@astryx/no-core-internal-import` lint rule. Core components import the
|
|
13
|
-
* same modules by relative path. Named re-exports only.
|
|
14
|
-
*
|
|
15
|
-
* SYNC: When modified, update scripts/sync-exports.js.
|
|
16
|
-
*/
|
|
17
|
-
export { SheetConfirmation } from "./SheetConfirmation.js";
|
|
18
|
-
export { useDismissSearchOnTouchDrag } from "./useDismissSearchOnTouchDrag.js";
|
|
19
|
-
export { hasSameSelection, nameSheetDraftChange } from "./sheetDraft.js";
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
/**
|
|
3
|
-
* @file touch-sheet.ts
|
|
4
|
-
* @input The touch sheets' shared confirmation, search-drag dismissal and
|
|
5
|
-
* draft rules
|
|
6
|
-
* @output `@astryxdesign/core/internal/touch-sheet`: SheetConfirmation,
|
|
7
|
-
* useDismissSearchOnTouchDrag, hasSameSelection and nameSheetDraftChange,
|
|
8
|
-
* re-exported by name for Lab's sheets
|
|
9
|
-
* @position An internal entry reserved for Astryx's own packages:
|
|
10
|
-
* undocumented, outside the public API and its compatibility promise,
|
|
11
|
-
* versioned in lockstep with Core, and allowed only in Core and Lab by the
|
|
12
|
-
* `@astryx/no-core-internal-import` lint rule. Core components import the
|
|
13
|
-
* same modules by relative path. Named re-exports only.
|
|
14
|
-
*
|
|
15
|
-
* SYNC: When modified, update scripts/sync-exports.js.
|
|
16
|
-
*/
|
|
17
|
-
export {SheetConfirmation} from './SheetConfirmation';
|
|
18
|
-
export type {SheetConfirmationProps} from './SheetConfirmation';
|
|
19
|
-
export {useDismissSearchOnTouchDrag} from './useDismissSearchOnTouchDrag';
|
|
20
|
-
export {hasSameSelection, nameSheetDraftChange} from './sheetDraft';
|
|
21
|
-
export type {SheetDraftChange} from './sheetDraft';
|