@astryxdesign/core 0.7.7 → 0.7.8-canary.0d54fd3
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.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 +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 +8 -1
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +2 -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 +625 -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 +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 +10 -10
- 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/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/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 +39 -4
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +441 -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 +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 +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 +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.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/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/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/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 +4 -6
- 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 +194 -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 +41 -7
- 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 +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 +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 +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/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/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 +3 -2
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +3 -2
- 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/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.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 +13 -4
- 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 +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 +7 -0
- package/src/CheckboxList/CheckboxList.tsx +9 -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 +765 -0
- package/src/DateInput/TouchDateField.tsx +6 -32
- 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 +8 -13
- 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 +51 -10
- package/src/Icon/Icon.tsx +15 -7
- 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/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 +620 -157
- package/src/PowerSearch/PowerSearchBottomSheet.tsx +2525 -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 +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 +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 +4 -0
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
- package/src/TextArea/TextArea.tsx +2 -7
- package/src/TextInput/TextInput.tsx +13 -17
- 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/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 +9 -11
- 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 +237 -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 +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 +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 +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 +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/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/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 +3 -2
- package/src/utils/isFocusDetached.ts +34 -0
- package/src/utils/plainDate.ts +80 -4
- package/src/utils/pressFeedback.ts +24 -6
- package/src/utils/triggerFocus.ts +80 -0
- 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/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
- package/src/Layer/usePressPin.ts +0 -510
- package/src/internal/touch-sheet.ts +0 -21
|
@@ -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,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file getStandaloneShortWeekdayNames.ts
|
|
3
|
-
* @input Generated CLDR stand-alone-short weekday table
|
|
4
|
-
* @output Private locale resolver for Calendar weekday headers
|
|
5
|
-
* @position Calendar-internal pure utility; not exported from the package
|
|
6
|
-
*/
|
|
7
|
-
import { type StandaloneShortWeekdayNames } from './standaloneShortWeekdayNames.generated.js';
|
|
8
|
-
/**
|
|
9
|
-
* Resolve generated weekday reference data as exact locale -> language -> English.
|
|
10
|
-
* Unicode extensions are ignored through Intl.Locale.baseName. Invalid tags and
|
|
11
|
-
* valid but unsupported languages safely use English.
|
|
12
|
-
*/
|
|
13
|
-
export declare function getStandaloneShortWeekdayNames(locale: string): StandaloneShortWeekdayNames;
|
|
14
|
-
//# sourceMappingURL=getStandaloneShortWeekdayNames.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getStandaloneShortWeekdayNames.d.ts","sourceRoot":"","sources":["../../src/Calendar/getStandaloneShortWeekdayNames.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,yCAAyC,CAAC;AAOjD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,GACb,2BAA2B,CAW7B"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file getStandaloneShortWeekdayNames.ts
|
|
5
|
-
* @input Generated CLDR stand-alone-short weekday table
|
|
6
|
-
* @output Private locale resolver for Calendar weekday headers
|
|
7
|
-
* @position Calendar-internal pure utility; not exported from the package
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { standaloneShortWeekdayNamesByLocale } from "./standaloneShortWeekdayNames.generated.js";
|
|
11
|
-
const weekdayNamesByLocale = standaloneShortWeekdayNamesByLocale;
|
|
12
|
-
const englishWeekdayNames = weekdayNamesByLocale.en;
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Resolve generated weekday reference data as exact locale -> language -> English.
|
|
16
|
-
* Unicode extensions are ignored through Intl.Locale.baseName. Invalid tags and
|
|
17
|
-
* valid but unsupported languages safely use English.
|
|
18
|
-
*/
|
|
19
|
-
export function getStandaloneShortWeekdayNames(locale) {
|
|
20
|
-
try {
|
|
21
|
-
const parsed = new Intl.Locale(locale);
|
|
22
|
-
return weekdayNamesByLocale[parsed.baseName] ?? weekdayNamesByLocale[parsed.language] ?? englishWeekdayNames;
|
|
23
|
-
} catch {
|
|
24
|
-
return englishWeekdayNames;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standaloneShortWeekdayNames.generated.d.ts","sourceRoot":"","sources":["../../src/Calendar/standaloneShortWeekdayNames.generated.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,MAAM,2BAA2B,GAAG,SAAS;IACjD,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC;AAEF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC0B,CAAC"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file usePressPin.ts
|
|
3
|
-
* @input A hover layer's trigger, open state, show and hide, and its
|
|
4
|
-
* `triggerBehavior` and `touchTrigger` options
|
|
5
|
-
* @output usePressPin, the press toggle that pins a hover layer open;
|
|
6
|
-
* isPressPinTrigger; stopPressPinClick; the LayerTriggerBehavior type
|
|
7
|
-
* @position Core-internal: one call per hover layer, useTooltip's. It owns
|
|
8
|
-
* the layer's touch trigger, so the host makes no second touch-trigger call.
|
|
9
|
-
*
|
|
10
|
-
* SYNC: When modified, update:
|
|
11
|
-
* - /packages/core/src/Tooltip/useTooltip.tsx
|
|
12
|
-
* - /packages/core/src/Layer/usePressPin.test.tsx
|
|
13
|
-
*/
|
|
14
|
-
import { type MouseEvent as ReactMouseEvent, type RefObject } from 'react';
|
|
15
|
-
import { type LayerTouchTrigger, type UseTouchTriggerReturn } from './useTouchTrigger.js';
|
|
16
|
-
/**
|
|
17
|
-
* How the trigger opens the layer. `adaptive`, the default, previews it on
|
|
18
|
-
* hover and focus, and `touchTrigger` decides taps. `toggle` pins it on every
|
|
19
|
-
* press of a button trigger. Internal: InfoTip's press-to-pin uses `toggle`.
|
|
20
|
-
*/
|
|
21
|
-
export type LayerTriggerBehavior = 'adaptive' | 'toggle';
|
|
22
|
-
/**
|
|
23
|
-
* The layer component's wrapper handler. It stops a press that pinned or
|
|
24
|
-
* closed the layer in the React tree only, after the trigger's own handlers.
|
|
25
|
-
* No clickable row, card, or container around the trigger then receives it,
|
|
26
|
-
* and document and window listeners still do. An anchored trigger has no
|
|
27
|
-
* wrapper, so a plain `onClick` element around it still receives the press.
|
|
28
|
-
*/
|
|
29
|
-
export declare function stopPressPinClick(event: ReactMouseEvent): void;
|
|
30
|
-
/** Whether presses on this element can pin a layer: a button, by role. */
|
|
31
|
-
export declare function isPressPinTrigger(element: Element): boolean;
|
|
32
|
-
export interface UsePressPinOptions {
|
|
33
|
-
/** The layer's `triggerBehavior`. */
|
|
34
|
-
triggerBehavior: LayerTriggerBehavior;
|
|
35
|
-
/** Whether the layer's triggers are live at all. */
|
|
36
|
-
isEnabled: boolean;
|
|
37
|
-
/** The controlled open value, or `undefined` when uncontrolled. */
|
|
38
|
-
isOpen: boolean | undefined;
|
|
39
|
-
/** Whether the layer shows now. */
|
|
40
|
-
isLayerOpen: boolean;
|
|
41
|
-
/** The layer surface's element id. */
|
|
42
|
-
layerId: string;
|
|
43
|
-
/** The component its development warning names. */
|
|
44
|
-
component: string;
|
|
45
|
-
/** Shows the layer now, with no delay. */
|
|
46
|
-
show: () => void;
|
|
47
|
-
/** Hides the layer now. */
|
|
48
|
-
hide: () => void;
|
|
49
|
-
/** Reports a controlled layer's toggled value without changing it. */
|
|
50
|
-
report: (isOpen: boolean) => void;
|
|
51
|
-
/** The layer's `label`: a press that pins the layer says it once, in place of its text. */
|
|
52
|
-
label?: string;
|
|
53
|
-
/** The layer's `touchTrigger`, which decides taps only under `adaptive`. */
|
|
54
|
-
touchTrigger: LayerTouchTrigger;
|
|
55
|
-
/** The host's trigger element, which the touch trigger reads. */
|
|
56
|
-
triggerRef: RefObject<HTMLElement | null>;
|
|
57
|
-
}
|
|
58
|
-
export interface UsePressPinReturn {
|
|
59
|
-
/** Whether presses on this trigger pin the layer: toggle mode and a button. */
|
|
60
|
-
isToggleTrigger: (element: HTMLElement | null) => boolean;
|
|
61
|
-
/**
|
|
62
|
-
* Whether a press holds the layer open now: a pin on a wired trigger while
|
|
63
|
-
* the layer shows, or a controlled layer's open value. The host's hover and
|
|
64
|
-
* focus hides ask it.
|
|
65
|
-
*/
|
|
66
|
-
isHeldOpen: () => boolean;
|
|
67
|
-
/** Wires the trigger element, or unwires it with `null`. */
|
|
68
|
-
attach: (element: HTMLElement | null) => void;
|
|
69
|
-
/** Drops the pin: Escape, or a hide that came from elsewhere. */
|
|
70
|
-
unpin: () => void;
|
|
71
|
-
/**
|
|
72
|
-
* While pinned, focus moving onto an element outside the trigger and the
|
|
73
|
-
* layer closes it. Returns whether the pin decided. The pin calls it for its
|
|
74
|
-
* trigger, and a host calls it for the layer's own content.
|
|
75
|
-
*/
|
|
76
|
-
handleFocusLeave: (event: FocusEvent) => boolean;
|
|
77
|
-
/**
|
|
78
|
-
* Whether the layer shows pinned on a wired trigger. The host then announces
|
|
79
|
-
* its rendered text, unless the layer has a `label`.
|
|
80
|
-
*/
|
|
81
|
-
isPinShown: boolean;
|
|
82
|
-
/** The layer's touch trigger (useTouchTriggerInternal), wired to the pin. */
|
|
83
|
-
touch: Pick<UseTouchTriggerReturn, 'isTouchPointerRef' | 'isTouchInteraction' | 'handlePointerEnter' | 'handlePointerDown' | 'clearTapOpen'>;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Pins a hover layer open on a press of a button trigger, under
|
|
87
|
-
* `triggerBehavior="toggle"`. The same press closes it, and so do Escape, a
|
|
88
|
-
* press or scroll outside, and focus that leaves the trigger and the layer.
|
|
89
|
-
* The press stops at the trigger. A trigger that is not a button gets a
|
|
90
|
-
* development warning and keeps tap-only opening.
|
|
91
|
-
*/
|
|
92
|
-
export declare function usePressPin(options: UsePressPinOptions): UsePressPinReturn;
|
|
93
|
-
//# sourceMappingURL=usePressPin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePressPin.d.ts","sourceRoot":"","sources":["../../src/Layer/usePressPin.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAKL,KAAK,UAAU,IAAI,eAAe,EAClC,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAKzD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAI9D;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAM3D;AAED,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,eAAe,EAAE,oBAAoB,CAAC;IACtC,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,mCAAmC;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,sEAAsE;IACtE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,YAAY,EAAE,iBAAiB,CAAC;IAChC,iEAAiE;IACjE,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,eAAe,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC;IAC1D;;;;OAIG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,4DAA4D;IAC5D,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,iEAAiE;IACjE,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IACjD;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,KAAK,EAAE,IAAI,CACT,qBAAqB,EACnB,mBAAmB,GACnB,oBAAoB,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,cAAc,CACjB,CAAC;CACH;AAwBD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CA+V1E"}
|
|
@@ -1,363 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
'use client';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* @file usePressPin.ts
|
|
7
|
-
* @input A hover layer's trigger, open state, show and hide, and its
|
|
8
|
-
* `triggerBehavior` and `touchTrigger` options
|
|
9
|
-
* @output usePressPin, the press toggle that pins a hover layer open;
|
|
10
|
-
* isPressPinTrigger; stopPressPinClick; the LayerTriggerBehavior type
|
|
11
|
-
* @position Core-internal: one call per hover layer, useTooltip's. It owns
|
|
12
|
-
* the layer's touch trigger, so the host makes no second touch-trigger call.
|
|
13
|
-
*
|
|
14
|
-
* SYNC: When modified, update:
|
|
15
|
-
* - /packages/core/src/Tooltip/useTooltip.tsx
|
|
16
|
-
* - /packages/core/src/Layer/usePressPin.test.tsx
|
|
17
|
-
*/
|
|
18
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
19
|
-
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
20
|
-
import { useDevWarning } from "../hooks/useDevWarning.js";
|
|
21
|
-
import { stopInReactTree } from "./layerClickBoundary.js";
|
|
22
|
-
import { useTouchTriggerInternal } from "./useTouchTrigger.js";
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* How the trigger opens the layer. `adaptive`, the default, previews it on
|
|
26
|
-
* hover and focus, and `touchTrigger` decides taps. `toggle` pins it on every
|
|
27
|
-
* press of a button trigger. Internal: InfoTip's press-to-pin uses `toggle`.
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
/** The clicks a press pin answered, so the wrapper can stop them (`stopPressPinClick`). */
|
|
31
|
-
const pressPinClicks = new WeakSet();
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* The layer component's wrapper handler. It stops a press that pinned or
|
|
35
|
-
* closed the layer in the React tree only, after the trigger's own handlers.
|
|
36
|
-
* No clickable row, card, or container around the trigger then receives it,
|
|
37
|
-
* and document and window listeners still do. An anchored trigger has no
|
|
38
|
-
* wrapper, so a plain `onClick` element around it still receives the press.
|
|
39
|
-
*/
|
|
40
|
-
export function stopPressPinClick(event) {
|
|
41
|
-
if (pressPinClicks.has(event.nativeEvent)) {
|
|
42
|
-
stopInReactTree(event);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/** Whether presses on this element can pin a layer: a button, by role. */
|
|
47
|
-
export function isPressPinTrigger(element) {
|
|
48
|
-
const role = element.getAttribute('role');
|
|
49
|
-
if (role != null && role !== '') {
|
|
50
|
-
return role === 'button';
|
|
51
|
-
}
|
|
52
|
-
return element.tagName === 'BUTTON';
|
|
53
|
-
}
|
|
54
|
-
function restoreAttribute(element, name, value) {
|
|
55
|
-
if (value == null) {
|
|
56
|
-
element.removeAttribute(name);
|
|
57
|
-
} else {
|
|
58
|
-
element.setAttribute(name, value);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
function writeAttribute(element, name, value) {
|
|
62
|
-
if (element.getAttribute(name) !== value) {
|
|
63
|
-
restoreAttribute(element, name, value);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Pins a hover layer open on a press of a button trigger, under
|
|
69
|
-
* `triggerBehavior="toggle"`. The same press closes it, and so do Escape, a
|
|
70
|
-
* press or scroll outside, and focus that leaves the trigger and the layer.
|
|
71
|
-
* The press stops at the trigger. A trigger that is not a button gets a
|
|
72
|
-
* development warning and keeps tap-only opening.
|
|
73
|
-
*/
|
|
74
|
-
export function usePressPin(options) {
|
|
75
|
-
const {
|
|
76
|
-
triggerBehavior,
|
|
77
|
-
isOpen,
|
|
78
|
-
isLayerOpen,
|
|
79
|
-
layerId
|
|
80
|
-
} = options;
|
|
81
|
-
const isToggleMode = triggerBehavior === 'toggle';
|
|
82
|
-
|
|
83
|
-
// DOM listeners read the latest options and announcer through refs. The
|
|
84
|
-
// announcer is the layer's own: inside a modal, the modal's region.
|
|
85
|
-
const optionsRef = useRef(options);
|
|
86
|
-
optionsRef.current = options;
|
|
87
|
-
const announce = useAnnounce();
|
|
88
|
-
const announceRef = useRef(announce);
|
|
89
|
-
announceRef.current = announce;
|
|
90
|
-
const isPinnedRef = useRef(false);
|
|
91
|
-
const [isPinned, setIsPinnedState] = useState(false);
|
|
92
|
-
const setPinned = useCallback(next => {
|
|
93
|
-
isPinnedRef.current = next;
|
|
94
|
-
setIsPinnedState(next);
|
|
95
|
-
}, []);
|
|
96
|
-
|
|
97
|
-
// The last offered element lets a `triggerBehavior` change rewire it.
|
|
98
|
-
const triggerRef = useRef(null);
|
|
99
|
-
const offeredRef = useRef(null);
|
|
100
|
-
// A primitive: re-attaching the same trigger renders nothing.
|
|
101
|
-
const [offeredKind, setOfferedKind] = useState('none');
|
|
102
|
-
// The trigger's own aria-expanded and aria-controls, restored on unwiring.
|
|
103
|
-
const ownStateRef = useRef(null);
|
|
104
|
-
|
|
105
|
-
// The touch trigger's outside dismissal (a press or scroll outside) closes
|
|
106
|
-
// a pinned layer through the pin, so the pin drops with it.
|
|
107
|
-
const hideFromTouch = useCallback(() => {
|
|
108
|
-
const current = optionsRef.current;
|
|
109
|
-
if (current.triggerBehavior === 'toggle' && triggerRef.current != null) {
|
|
110
|
-
if (current.isOpen !== undefined) {
|
|
111
|
-
current.report(false);
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
if (isPinnedRef.current) {
|
|
115
|
-
setPinned(false);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
current.hide();
|
|
119
|
-
}, [setPinned]);
|
|
120
|
-
const {
|
|
121
|
-
isTouchPointerRef,
|
|
122
|
-
isTouchInteraction,
|
|
123
|
-
handlePointerEnter,
|
|
124
|
-
handlePointerDown,
|
|
125
|
-
clearTapOpen,
|
|
126
|
-
armOutsideDismiss
|
|
127
|
-
} = useTouchTriggerInternal({
|
|
128
|
-
touchTrigger: isToggleMode ? 'tap' : options.touchTrigger,
|
|
129
|
-
isEnabled: options.isEnabled,
|
|
130
|
-
isControlled: isOpen !== undefined,
|
|
131
|
-
isOpen: isLayerOpen,
|
|
132
|
-
layerId,
|
|
133
|
-
triggerRef: options.triggerRef,
|
|
134
|
-
show: options.show,
|
|
135
|
-
hide: hideFromTouch
|
|
136
|
-
});
|
|
137
|
-
const isToggleTrigger = useCallback(element => optionsRef.current.triggerBehavior === 'toggle' && element != null && isPressPinTrigger(element), []);
|
|
138
|
-
const close = useCallback(() => {
|
|
139
|
-
const current = optionsRef.current;
|
|
140
|
-
clearTapOpen();
|
|
141
|
-
if (current.isOpen !== undefined) {
|
|
142
|
-
current.report(false);
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
setPinned(false);
|
|
146
|
-
current.hide();
|
|
147
|
-
}, [setPinned, clearTapOpen]);
|
|
148
|
-
const announceName = useCallback(() => {
|
|
149
|
-
const current = optionsRef.current;
|
|
150
|
-
const name = current.label?.trim() ?? '';
|
|
151
|
-
if (name !== '') {
|
|
152
|
-
announceRef.current(name, 'polite');
|
|
153
|
-
}
|
|
154
|
-
}, []);
|
|
155
|
-
const toggle = useCallback(() => {
|
|
156
|
-
const current = optionsRef.current;
|
|
157
|
-
if (current.isOpen !== undefined) {
|
|
158
|
-
if (!current.isOpen) {
|
|
159
|
-
armOutsideDismiss();
|
|
160
|
-
announceName();
|
|
161
|
-
} else {
|
|
162
|
-
clearTapOpen();
|
|
163
|
-
}
|
|
164
|
-
current.report(!current.isOpen);
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
// A pin counts only while its layer shows; a closed layer pins again.
|
|
168
|
-
if (isPinnedRef.current && current.isLayerOpen) {
|
|
169
|
-
setPinned(false);
|
|
170
|
-
clearTapOpen();
|
|
171
|
-
current.hide();
|
|
172
|
-
} else {
|
|
173
|
-
setPinned(true);
|
|
174
|
-
current.show();
|
|
175
|
-
armOutsideDismiss();
|
|
176
|
-
announceName();
|
|
177
|
-
}
|
|
178
|
-
}, [setPinned, announceName, armOutsideDismiss, clearTapOpen]);
|
|
179
|
-
|
|
180
|
-
// A non-native button gets no click from the browser for a key. So Enter
|
|
181
|
-
// presses it on keydown, and Space on keyup, as on a native button. A click
|
|
182
|
-
// with no pointer (`detail` 0) while Space is down, or in a key press's
|
|
183
|
-
// task, is that same press.
|
|
184
|
-
const keyPressedRef = useRef(false);
|
|
185
|
-
const spaceHeldRef = useRef(false);
|
|
186
|
-
const handlePress = useCallback(event => {
|
|
187
|
-
const current = optionsRef.current;
|
|
188
|
-
if (!current.isEnabled || current.triggerBehavior !== 'toggle') {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
// The press stops at its trigger: no label control, link, or submit.
|
|
192
|
-
event.preventDefault();
|
|
193
|
-
pressPinClicks.add(event);
|
|
194
|
-
if (event.detail === 0 && (keyPressedRef.current || spaceHeldRef.current)) {
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
toggle();
|
|
198
|
-
}, [toggle]);
|
|
199
|
-
const pressFromKey = useCallback(() => {
|
|
200
|
-
keyPressedRef.current = true;
|
|
201
|
-
setTimeout(() => {
|
|
202
|
-
keyPressedRef.current = false;
|
|
203
|
-
}, 0);
|
|
204
|
-
toggle();
|
|
205
|
-
}, [toggle]);
|
|
206
|
-
const handleKeyDown = useCallback(event => {
|
|
207
|
-
const current = optionsRef.current;
|
|
208
|
-
if (!current.isEnabled || current.triggerBehavior !== 'toggle' || event.isComposing || event.key !== 'Enter' && event.key !== ' ') {
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
// The press replaces the key's own action, such as a page scroll on Space.
|
|
212
|
-
event.preventDefault();
|
|
213
|
-
if (event.repeat) {
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
if (event.key === ' ') {
|
|
217
|
-
spaceHeldRef.current = true;
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
pressFromKey();
|
|
221
|
-
}, [pressFromKey]);
|
|
222
|
-
// Only a Space that went down on the trigger presses it when it comes up.
|
|
223
|
-
const handleKeyUp = useCallback(event => {
|
|
224
|
-
if (event.key !== ' ' || !spaceHeldRef.current) {
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
spaceHeldRef.current = false;
|
|
228
|
-
const current = optionsRef.current;
|
|
229
|
-
if (!current.isEnabled || current.triggerBehavior !== 'toggle') {
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
pressFromKey();
|
|
233
|
-
}, [pressFromKey]);
|
|
234
|
-
const isHeldOpen = useCallback(() => {
|
|
235
|
-
const current = optionsRef.current;
|
|
236
|
-
if (current.triggerBehavior !== 'toggle' || triggerRef.current == null) {
|
|
237
|
-
return false;
|
|
238
|
-
}
|
|
239
|
-
return current.isOpen !== undefined ? current.isOpen && current.isLayerOpen : isPinnedRef.current && current.isLayerOpen;
|
|
240
|
-
}, []);
|
|
241
|
-
const handleFocusLeave = useCallback(event => {
|
|
242
|
-
// A Space that comes up after focus left presses nothing.
|
|
243
|
-
spaceHeldRef.current = false;
|
|
244
|
-
if (!isHeldOpen()) {
|
|
245
|
-
return false;
|
|
246
|
-
}
|
|
247
|
-
const next = event.relatedTarget;
|
|
248
|
-
const trigger = triggerRef.current;
|
|
249
|
-
// Focus that leaves for no element is a press's to decide. The trigger
|
|
250
|
-
// can sit in another document, so the check uses its own window.
|
|
251
|
-
const view = trigger?.ownerDocument.defaultView;
|
|
252
|
-
if (view == null || !(next instanceof view.Node)) {
|
|
253
|
-
return true;
|
|
254
|
-
}
|
|
255
|
-
const surface = trigger?.ownerDocument.getElementById(optionsRef.current.layerId) ?? null;
|
|
256
|
-
if (trigger?.contains(next) === true || surface?.contains(next) === true) {
|
|
257
|
-
return true;
|
|
258
|
-
}
|
|
259
|
-
close();
|
|
260
|
-
return true;
|
|
261
|
-
}, [isHeldOpen, close]);
|
|
262
|
-
const unwire = useCallback(() => {
|
|
263
|
-
const previous = triggerRef.current;
|
|
264
|
-
if (previous == null) {
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
previous.removeEventListener('click', handlePress);
|
|
268
|
-
previous.removeEventListener('keydown', handleKeyDown);
|
|
269
|
-
previous.removeEventListener('keyup', handleKeyUp);
|
|
270
|
-
previous.removeEventListener('focusout', handleFocusLeave);
|
|
271
|
-
const own = ownStateRef.current;
|
|
272
|
-
if (own != null) {
|
|
273
|
-
restoreAttribute(previous, 'aria-expanded', own.expanded);
|
|
274
|
-
restoreAttribute(previous, 'aria-controls', own.controls);
|
|
275
|
-
}
|
|
276
|
-
ownStateRef.current = null;
|
|
277
|
-
triggerRef.current = null;
|
|
278
|
-
}, [handlePress, handleKeyDown, handleKeyUp, handleFocusLeave]);
|
|
279
|
-
|
|
280
|
-
// The element and mode last settled; the same pair again does nothing.
|
|
281
|
-
const settledRef = useRef(null);
|
|
282
|
-
const wire = useCallback(element => {
|
|
283
|
-
const current = optionsRef.current;
|
|
284
|
-
const settled = settledRef.current;
|
|
285
|
-
if (settled != null && settled.element === element && settled.mode === current.triggerBehavior) {
|
|
286
|
-
return;
|
|
287
|
-
}
|
|
288
|
-
settledRef.current = {
|
|
289
|
-
element,
|
|
290
|
-
mode: current.triggerBehavior
|
|
291
|
-
};
|
|
292
|
-
unwire();
|
|
293
|
-
if (element == null || current.triggerBehavior !== 'toggle') {
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
if (!isPressPinTrigger(element)) {
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
|
-
element.addEventListener('click', handlePress);
|
|
300
|
-
if (element.tagName !== 'BUTTON') {
|
|
301
|
-
element.addEventListener('keydown', handleKeyDown);
|
|
302
|
-
element.addEventListener('keyup', handleKeyUp);
|
|
303
|
-
}
|
|
304
|
-
// Its own focus-leave listener: `focusTrigger="never"` attaches none.
|
|
305
|
-
element.addEventListener('focusout', handleFocusLeave);
|
|
306
|
-
ownStateRef.current = {
|
|
307
|
-
expanded: element.getAttribute('aria-expanded'),
|
|
308
|
-
controls: element.getAttribute('aria-controls')
|
|
309
|
-
};
|
|
310
|
-
triggerRef.current = element;
|
|
311
|
-
}, [unwire, handlePress, handleKeyDown, handleKeyUp, handleFocusLeave]);
|
|
312
|
-
const attach = useCallback(element => {
|
|
313
|
-
offeredRef.current = element;
|
|
314
|
-
// Hosts detach and re-attach within one commit, so a detach is not kept.
|
|
315
|
-
if (element != null) {
|
|
316
|
-
setOfferedKind(isPressPinTrigger(element) ? 'button' : 'other');
|
|
317
|
-
}
|
|
318
|
-
wire(element);
|
|
319
|
-
}, [wire]);
|
|
320
|
-
const isWired = isToggleMode && offeredKind === 'button';
|
|
321
|
-
useDevWarning(options.component, 'A press-to-pin tooltip pins only a button trigger (a <button> or role="button"); this trigger keeps tap-only opening.', isToggleMode && offeredKind === 'other');
|
|
322
|
-
|
|
323
|
-
// A later `triggerBehavior` change rewires here; the ref does not rerun.
|
|
324
|
-
useEffect(() => {
|
|
325
|
-
wire(offeredRef.current);
|
|
326
|
-
}, [triggerBehavior, wire]);
|
|
327
|
-
const unpin = useCallback(() => {
|
|
328
|
-
if (isPinnedRef.current) {
|
|
329
|
-
setPinned(false);
|
|
330
|
-
}
|
|
331
|
-
}, [setPinned]);
|
|
332
|
-
|
|
333
|
-
// Each path that hides a pinned layer drops the pin itself, so a layer that
|
|
334
|
-
// does not show is never reported expanded.
|
|
335
|
-
const isExpanded = (isOpen !== undefined ? isOpen : isPinned) && isLayerOpen;
|
|
336
|
-
|
|
337
|
-
// The trigger's aria-expanded and aria-controls follow the pin. No deps: a
|
|
338
|
-
// host can swap the trigger on any commit; equal values are not rewritten.
|
|
339
|
-
useEffect(() => {
|
|
340
|
-
const trigger = triggerRef.current;
|
|
341
|
-
if (!isToggleMode || !isWired || trigger == null) {
|
|
342
|
-
return;
|
|
343
|
-
}
|
|
344
|
-
writeAttribute(trigger, 'aria-expanded', isExpanded ? 'true' : 'false');
|
|
345
|
-
writeAttribute(trigger, 'aria-controls', isLayerOpen ? layerId : null);
|
|
346
|
-
});
|
|
347
|
-
const isPinShown = isToggleMode && isWired && isExpanded;
|
|
348
|
-
return {
|
|
349
|
-
isToggleTrigger,
|
|
350
|
-
isHeldOpen,
|
|
351
|
-
attach,
|
|
352
|
-
unpin,
|
|
353
|
-
handleFocusLeave,
|
|
354
|
-
isPinShown,
|
|
355
|
-
touch: {
|
|
356
|
-
isTouchPointerRef,
|
|
357
|
-
isTouchInteraction,
|
|
358
|
-
handlePointerEnter,
|
|
359
|
-
handlePointerDown,
|
|
360
|
-
clearTapOpen
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
}
|
|
@@ -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,38 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file getStandaloneShortWeekdayNames.ts
|
|
5
|
-
* @input Generated CLDR stand-alone-short weekday table
|
|
6
|
-
* @output Private locale resolver for Calendar weekday headers
|
|
7
|
-
* @position Calendar-internal pure utility; not exported from the package
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
standaloneShortWeekdayNamesByLocale,
|
|
12
|
-
type StandaloneShortWeekdayNames,
|
|
13
|
-
} from './standaloneShortWeekdayNames.generated';
|
|
14
|
-
|
|
15
|
-
const weekdayNamesByLocale: Readonly<
|
|
16
|
-
Record<string, StandaloneShortWeekdayNames>
|
|
17
|
-
> = standaloneShortWeekdayNamesByLocale;
|
|
18
|
-
const englishWeekdayNames = weekdayNamesByLocale.en;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Resolve generated weekday reference data as exact locale -> language -> English.
|
|
22
|
-
* Unicode extensions are ignored through Intl.Locale.baseName. Invalid tags and
|
|
23
|
-
* valid but unsupported languages safely use English.
|
|
24
|
-
*/
|
|
25
|
-
export function getStandaloneShortWeekdayNames(
|
|
26
|
-
locale: string,
|
|
27
|
-
): StandaloneShortWeekdayNames {
|
|
28
|
-
try {
|
|
29
|
-
const parsed = new Intl.Locale(locale);
|
|
30
|
-
return (
|
|
31
|
-
weekdayNamesByLocale[parsed.baseName] ??
|
|
32
|
-
weekdayNamesByLocale[parsed.language] ??
|
|
33
|
-
englishWeekdayNames
|
|
34
|
-
);
|
|
35
|
-
} catch {
|
|
36
|
-
return englishWeekdayNames;
|
|
37
|
-
}
|
|
38
|
-
}
|