@astryxdesign/core 0.7.7 → 0.7.8-canary.0588a13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AlertDialog/AlertDialog.d.ts +4 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +46 -6
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +11 -3
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +1 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts +1 -1
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +55 -18
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
- package/dist/BottomSheet/bottomSheetStack.js +1 -1
- package/dist/BottomSheet/useSheetGestures.d.ts +3 -1
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +16 -1
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +17 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +18 -22
- package/dist/Calendar/getWeekdayHeaderNames.d.ts +16 -0
- package/dist/Calendar/getWeekdayHeaderNames.d.ts.map +1 -0
- package/dist/Calendar/getWeekdayHeaderNames.js +70 -0
- package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarDays.js +2 -10
- package/dist/Calendar/{standaloneShortWeekdayNames.generated.d.ts → weekdayHeaderNames.generated.d.ts} +14 -14
- package/dist/Calendar/weekdayHeaderNames.generated.d.ts.map +1 -0
- package/dist/Calendar/{standaloneShortWeekdayNames.generated.js → weekdayHeaderNames.generated.js} +12 -12
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +2 -0
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +6 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +2 -1
- package/dist/Chat/useChatDictation.d.ts.map +1 -1
- package/dist/Chat/useChatDictation.js +2 -0
- package/dist/Chat/useChatNewMessages.js +1 -1
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +2 -0
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +3 -0
- package/dist/Chat/useTriggerMenu.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +17 -12
- package/dist/CheckboxList/CheckboxList.d.ts +20 -2
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +12 -4
- package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
- package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListContext.js +2 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +14 -2
- package/dist/CheckboxList/requiredGroup.d.ts +22 -0
- package/dist/CheckboxList/requiredGroup.d.ts.map +1 -0
- package/dist/CheckboxList/requiredGroup.js +52 -0
- package/dist/CodeBlock/CodeBlock.d.ts +10 -1
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +28 -11
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +2 -0
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +2 -0
- package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +14 -4
- package/dist/ContextMenu/ContextMenu.js +2 -2
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +5 -2
- package/dist/DateInput/PickerWheel.d.ts +19 -0
- package/dist/DateInput/PickerWheel.d.ts.map +1 -0
- package/dist/DateInput/PickerWheel.js +646 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +9 -30
- package/dist/DateInput/Wheel.d.ts +18 -37
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +133 -120
- package/dist/DateInput/datePickerTouch.d.ts +13 -0
- package/dist/DateInput/datePickerTouch.d.ts.map +1 -0
- package/dist/DateInput/datePickerTouch.js +14 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
- package/dist/DateInput/useOwnScrollGesture.js +16 -3
- package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
- package/dist/DateInput/usePointerDragScroll.js +2 -0
- package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
- package/dist/DateInput/useScrollSettle.js +3 -0
- package/dist/DateInput/useWheelListbox.d.ts +59 -0
- package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
- package/dist/DateInput/useWheelListbox.js +88 -0
- package/dist/DateInput/wheelOptions.d.ts +94 -0
- package/dist/DateInput/wheelOptions.d.ts.map +1 -0
- package/dist/DateInput/wheelOptions.js +110 -0
- package/dist/DateInput/wheelPhysics.d.ts +127 -0
- package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
- package/dist/DateInput/wheelPhysics.js +341 -0
- package/dist/DateInput/wheelStrip.d.ts +92 -0
- package/dist/DateInput/wheelStrip.d.ts.map +1 -0
- package/dist/DateInput/wheelStrip.js +258 -0
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.js +70 -127
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +9 -32
- package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
- package/dist/Drawer/useDrawerDialogPresence.js +3 -0
- package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
- package/dist/DropdownMenu/useMenuOverflow.js +5 -0
- package/dist/Field/Field.js +2 -2
- package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
- package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
- package/dist/FormLayout/FormLayout.d.ts +5 -1
- package/dist/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.d.ts +6 -4
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +48 -3
- package/dist/HoverCard/useHoverCard.d.ts +5 -4
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +26 -34
- package/dist/Icon/Icon.d.ts +5 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +20 -3
- package/dist/InfoTip/InfoTip.d.ts +5 -5
- package/dist/InfoTip/InfoTip.d.ts.map +1 -1
- package/dist/InfoTip/InfoTip.js +58 -19
- package/dist/Item/useSwipeAction.d.ts.map +1 -1
- package/dist/Item/useSwipeAction.js +3 -0
- package/dist/Layer/modalOutlet.d.ts.map +1 -1
- package/dist/Layer/modalOutlet.js +2 -0
- package/dist/Layer/outsidePress.d.ts.map +1 -1
- package/dist/Layer/outsidePress.js +1 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +4 -1
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
- package/dist/Layer/useLayerDismissal.js +3 -0
- package/dist/Layer/useTouchTrigger.d.ts +13 -7
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +20 -6
- package/dist/Layout/index.d.ts +1 -1
- package/dist/Layout/index.d.ts.map +1 -1
- package/dist/Layout/index.js +1 -1
- package/dist/Layout/layoutReset.js +1 -1
- package/dist/Layout/overlayPaddingReset.stylex.d.ts +68 -0
- package/dist/Layout/overlayPaddingReset.stylex.d.ts.map +1 -0
- package/dist/Layout/overlayPaddingReset.stylex.js +72 -0
- package/dist/Layout/padding.stylex.d.ts +5 -129
- package/dist/Layout/padding.stylex.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.js +9 -143
- package/dist/Layout/paddingStyles.stylex.d.ts +83 -0
- package/dist/Layout/paddingStyles.stylex.d.ts.map +1 -0
- package/dist/Layout/paddingStyles.stylex.js +99 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +20 -1
- package/dist/MobileNav/MobileNav.d.ts +3 -2
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +10 -26
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +2 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +2 -1
- package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
- package/dist/Outline/useOutlineFromDOM.js +3 -0
- package/dist/Outline/useScrollSpy.d.ts.map +1 -1
- package/dist/Outline/useScrollSpy.js +3 -0
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +3 -0
- package/dist/Overlay/Overlay.d.ts.map +1 -1
- package/dist/Overlay/Overlay.js +7 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +6 -0
- package/dist/Popover/usePopover.js +2 -2
- package/dist/PowerSearch/PowerSearch.d.ts +41 -4
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +441 -134
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +125 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.js +2041 -0
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +43 -10
- package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
- package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
- package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
- package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchToken.js +3 -2
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +273 -86
- package/dist/PowerSearch/formatFilterValue.d.ts +14 -7
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +31 -23
- package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
- package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
- package/dist/PowerSearch/formatTokenValue.js +161 -0
- package/dist/PowerSearch/index.d.ts +1 -1
- package/dist/PowerSearch/index.d.ts.map +1 -1
- package/dist/PowerSearch/powerSearchDateZone.d.ts +25 -0
- package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchDateZone.js +57 -0
- package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
- package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
- package/dist/PowerSearch/types.d.ts +8 -1
- package/dist/PowerSearch/types.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBarTouch.js +2 -0
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +3 -2
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +5 -3
- package/dist/Resizable/ResizeHandle.d.ts +2 -1
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +116 -92
- package/dist/Resizable/createResizable.d.ts +199 -0
- package/dist/Resizable/createResizable.d.ts.map +1 -0
- package/dist/Resizable/createResizable.js +733 -0
- package/dist/Resizable/separatorAttributes.d.ts +45 -0
- package/dist/Resizable/separatorAttributes.d.ts.map +1 -0
- package/dist/Resizable/separatorAttributes.js +35 -0
- package/dist/Resizable/useResizable.d.ts +3 -3
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +252 -459
- package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
- package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
- package/dist/SelectableCard/SelectableCard.d.ts +2 -0
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +36 -11
- package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
- package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
- package/dist/SelectableCard/selectableCardInput.js +20 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +7 -9
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +36 -5
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +16 -11
- package/dist/Slider/sliderTouchController.js +2 -2
- package/dist/Spinner/Spinner.d.ts +1 -1
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +60 -58
- package/dist/Stepper/Stepper.d.ts.map +1 -1
- package/dist/Stepper/Stepper.js +10 -15
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +4 -10
- package/dist/Switch/useSwitchTouch.js +4 -4
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +29 -8
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +12 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +17 -3
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +27 -14
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +2 -1
- package/dist/TextInput/TextInput.d.ts +2 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +12 -8
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +2 -0
- package/dist/TimeInput/TimeWheels.d.ts +32 -0
- package/dist/TimeInput/TimeWheels.d.ts.map +1 -0
- package/dist/TimeInput/TimeWheels.js +144 -0
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
- package/dist/TimeInput/TouchTimeField.js +63 -116
- package/dist/TimeInput/timeWheelRules.d.ts +124 -0
- package/dist/TimeInput/timeWheelRules.d.ts.map +1 -0
- package/dist/TimeInput/timeWheelRules.js +277 -0
- package/dist/Timer/Timer.d.ts.map +1 -1
- package/dist/Timer/Timer.js +2 -0
- package/dist/Timestamp/Timestamp.js +1 -1
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +1 -23
- package/dist/Toast/Toast.d.ts +11 -1
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +25 -15
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +97 -34
- package/dist/Toast/types.d.ts +9 -3
- package/dist/Toast/types.d.ts.map +1 -1
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +1 -0
- package/dist/Tokenizer/Tokenizer.d.ts +44 -46
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +20 -21
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
- package/dist/Tokenizer/TokenizerBottomSheet.js +12 -18
- package/dist/Tokenizer/index.d.ts +1 -1
- package/dist/Tokenizer/index.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.d.ts +2 -23
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.js +5 -29
- package/dist/Tooltip/useTooltip.d.ts +23 -30
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +200 -108
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +27 -18
- package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/animator/createAnimator.d.ts +98 -0
- package/dist/animator/createAnimator.d.ts.map +1 -0
- package/dist/animator/createAnimator.js +259 -0
- package/dist/astryx.css +53 -8
- package/dist/gestures/GestureHost.d.ts +16 -1
- package/dist/gestures/GestureHost.d.ts.map +1 -1
- package/dist/gestures/GestureHost.js +4 -1
- package/dist/gestures/PressTracker.d.ts.map +1 -1
- package/dist/gestures/PressTracker.js +4 -3
- package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
- package/dist/hooks/ModalAnnounceProvider.js +1 -0
- package/dist/hooks/actionGroupTracker.d.ts +4 -1
- package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
- package/dist/hooks/actionGroupTracker.js +18 -7
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/longPressDetector.d.ts +66 -0
- package/dist/hooks/longPressDetector.d.ts.map +1 -0
- package/dist/hooks/longPressDetector.js +200 -0
- package/dist/hooks/pressGroupContext.d.ts +6 -0
- package/dist/hooks/pressGroupContext.d.ts.map +1 -0
- package/dist/hooks/pressGroupContext.js +20 -0
- package/dist/hooks/rootScrollStyles.d.ts +48 -0
- package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
- package/dist/hooks/rootScrollStyles.js +207 -0
- package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
- package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
- package/dist/hooks/scrollLockTouchGuard.js +117 -0
- package/dist/hooks/scrollbarGutter.d.ts +4 -4
- package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
- package/dist/hooks/scrollbarGutter.js +36 -23
- package/dist/hooks/useActionGroupTracking.d.ts +53 -0
- package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
- package/dist/hooks/useActionGroupTracking.js +174 -0
- package/dist/hooks/useAnimator.d.ts +41 -0
- package/dist/hooks/useAnimator.d.ts.map +1 -0
- package/dist/hooks/useAnimator.js +70 -0
- package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
- package/dist/hooks/useAnnounceRenderedText.js +1 -0
- package/dist/hooks/useAttachment.d.ts +1 -1
- package/dist/hooks/useAttachment.js +1 -1
- package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
- package/dist/hooks/useAutoMediaMode.js +1 -0
- package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
- package/dist/hooks/useBusyAnnouncement.js +2 -0
- package/dist/hooks/useDevWarning.d.ts.map +1 -1
- package/dist/hooks/useDevWarning.js +2 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +2 -0
- package/dist/hooks/useGridFocus.d.ts +8 -5
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +4 -3
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -0
- package/dist/hooks/useImageMode.d.ts.map +1 -1
- package/dist/hooks/useImageMode.js +3 -0
- package/dist/hooks/useInputStatusIcon.d.ts +1 -1
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +2 -2
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
- package/dist/hooks/useKeyboardHint.js +1 -1
- package/dist/hooks/useLongPress.d.ts +8 -9
- package/dist/hooks/useLongPress.d.ts.map +1 -1
- package/dist/hooks/useLongPress.js +23 -106
- package/dist/hooks/useMenuHover.d.ts.map +1 -1
- package/dist/hooks/useMenuHover.js +2 -0
- package/dist/hooks/useMenuPress.d.ts.map +1 -1
- package/dist/hooks/useMenuPress.js +3 -0
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +2 -1
- package/dist/hooks/usePressFeedback.d.ts.map +1 -1
- package/dist/hooks/usePressFeedback.js +1 -0
- package/dist/hooks/useResolvedRequired.d.ts +3 -0
- package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
- package/dist/hooks/useResolvedRequired.js +3 -0
- package/dist/hooks/useScrollLock.d.ts +8 -9
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +50 -48
- package/dist/hooks/useScrollableArea.d.ts.map +1 -1
- package/dist/hooks/useScrollableArea.js +5 -0
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +3 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +45 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts +8 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.js +13 -0
- package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.js +3 -1
- package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.js +3 -1
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts +8 -0
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.js +17 -0
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +37 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +37 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/internal/indicatorPress.stylex.d.ts +20 -0
- package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
- package/dist/internal/indicatorPress.stylex.js +26 -0
- package/dist/internal/selectable-card.d.ts +21 -0
- package/dist/internal/selectable-card.d.ts.map +1 -0
- package/dist/internal/selectable-card.js +20 -0
- package/dist/internal/sheetDraft.d.ts +2 -2
- package/dist/internal/sheetDraft.js +2 -2
- package/dist/keyboard/index.d.ts +17 -0
- package/dist/keyboard/index.d.ts.map +1 -0
- package/dist/keyboard/index.js +19 -0
- package/dist/keyboard/keyboardHeight.d.ts +149 -0
- package/dist/keyboard/keyboardHeight.d.ts.map +1 -0
- package/dist/keyboard/keyboardHeight.js +432 -0
- package/dist/keyboard/keyboardLayoutGuide.d.ts +59 -0
- package/dist/keyboard/keyboardLayoutGuide.d.ts.map +1 -0
- package/dist/keyboard/keyboardLayoutGuide.js +207 -0
- package/dist/keyboard/keyboardModel.d.ts +93 -0
- package/dist/keyboard/keyboardModel.d.ts.map +1 -0
- package/dist/keyboard/keyboardModel.js +220 -0
- package/dist/keyboard/rideKeyboard.d.ts +42 -0
- package/dist/keyboard/rideKeyboard.d.ts.map +1 -0
- package/dist/keyboard/rideKeyboard.js +77 -0
- package/dist/keyboard/useMobileKeyboard.d.ts +61 -0
- package/dist/keyboard/useMobileKeyboard.d.ts.map +1 -0
- package/dist/keyboard/useMobileKeyboard.js +699 -0
- package/dist/motion/android/index.d.ts +16 -0
- package/dist/motion/android/index.d.ts.map +1 -0
- package/dist/motion/android/index.js +18 -0
- package/dist/motion/android/keyboard.d.ts +83 -0
- package/dist/motion/android/keyboard.d.ts.map +1 -0
- package/dist/motion/android/keyboard.js +96 -0
- package/dist/motion/animatedLayout.d.ts +8 -0
- package/dist/motion/animatedLayout.d.ts.map +1 -1
- package/dist/motion/animatedLayout.js +246 -53
- package/dist/motion/animator.d.ts +14 -14
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +45 -26
- package/dist/motion/frameBlock.d.ts +14 -0
- package/dist/motion/frameBlock.d.ts.map +1 -0
- package/dist/motion/frameBlock.js +16 -0
- package/dist/motion/progress.d.ts +88 -0
- package/dist/motion/progress.d.ts.map +1 -0
- package/dist/motion/progress.js +128 -0
- package/dist/motion/reducedMotion.d.ts.map +1 -1
- package/dist/motion/reducedMotion.js +3 -1
- package/dist/motion/uikit/alert.d.ts +41 -0
- package/dist/motion/uikit/alert.d.ts.map +1 -0
- package/dist/motion/uikit/alert.js +43 -0
- package/dist/motion/uikit/datePicker.d.ts +58 -0
- package/dist/motion/uikit/datePicker.d.ts.map +1 -0
- package/dist/motion/uikit/datePicker.js +60 -0
- package/dist/motion/uikit/index.d.ts +6 -4
- package/dist/motion/uikit/index.d.ts.map +1 -1
- package/dist/motion/uikit/index.js +6 -4
- package/dist/motion/uikit/picker.d.ts +96 -0
- package/dist/motion/uikit/picker.d.ts.map +1 -0
- package/dist/motion/uikit/picker.js +117 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
- package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
- package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +29 -4
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +14 -13
- package/dist/theme/motionKnobs.d.ts +4 -3
- package/dist/theme/motionKnobs.d.ts.map +1 -1
- package/dist/theme/motionKnobs.js +3 -2
- package/dist/theme/themeMotion.d.ts +6 -0
- package/dist/theme/themeMotion.d.ts.map +1 -1
- package/dist/theme/themeMotion.js +15 -2
- package/dist/theme/tokens.stylex.d.ts +3 -0
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +4 -1
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +12 -0
- package/dist/utils/disabledInteraction.d.ts +10 -2
- package/dist/utils/disabledInteraction.d.ts.map +1 -1
- package/dist/utils/disabledInteraction.js +16 -2
- package/dist/utils/focusReturn.d.ts +22 -25
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +36 -29
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/interactionModality.d.ts.map +1 -1
- package/dist/utils/interactionModality.js +4 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +6 -4
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +6 -4
- package/dist/utils/isFocusDetached.d.ts +27 -0
- package/dist/utils/isFocusDetached.d.ts.map +1 -0
- package/dist/utils/isFocusDetached.js +32 -0
- package/dist/utils/layoutViewport.d.ts +25 -0
- package/dist/utils/layoutViewport.d.ts.map +1 -0
- package/dist/utils/layoutViewport.js +102 -0
- package/dist/utils/plainDate.d.ts +31 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +68 -4
- package/dist/utils/pressFeedback.d.ts +6 -0
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +97 -18
- package/dist/utils/pressGesture.d.ts +4 -2
- package/dist/utils/pressGesture.d.ts.map +1 -1
- package/dist/utils/pressGesture.js +3 -1
- package/dist/utils/selectionLock.d.ts +10 -1
- package/dist/utils/selectionLock.d.ts.map +1 -1
- package/dist/utils/selectionLock.js +31 -5
- package/dist/utils/sharedMutationObserver.d.ts +2 -1
- package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
- package/dist/utils/sharedMutationObserver.js +2 -1
- package/dist/utils/timeParser.d.ts +2 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +29 -3
- package/dist/utils/triggerFocus.d.ts +36 -0
- package/dist/utils/triggerFocus.d.ts.map +1 -0
- package/dist/utils/triggerFocus.js +65 -0
- package/locales/en.json +148 -0
- package/locales/pseudo.json +111 -0
- package/package.json +14 -9
- package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
- package/src/AlertDialog/AlertDialog.tsx +46 -5
- package/src/AppShell/AppShell.tsx +13 -4
- package/src/BottomSheet/BottomSheet.doc.mjs +1 -1
- package/src/BottomSheet/BottomSheet.tsx +1 -0
- package/src/BottomSheet/BottomSheetPanel.tsx +80 -16
- package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +5 -0
- package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
- package/src/BottomSheet/bottomSheetStack.ts +1 -1
- package/src/BottomSheet/useSheetGestures.ts +16 -1
- package/src/Button/Button.tsx +26 -4
- package/src/Calendar/Calendar.tsx +40 -32
- package/src/Calendar/getWeekdayHeaderNames.ts +88 -0
- package/src/Calendar/hooks/useCalendarDays.ts +5 -10
- package/src/Calendar/{standaloneShortWeekdayNames.generated.ts → weekdayHeaderNames.generated.ts} +14 -14
- package/src/Carousel/Carousel.tsx +1 -0
- package/src/Chat/ChatComposerInput.tsx +4 -7
- package/src/Chat/ChatMessageList.tsx +2 -1
- package/src/Chat/useChatDictation.ts +1 -0
- package/src/Chat/useChatNewMessages.ts +1 -1
- package/src/Chat/useChatStreamScroll.ts +2 -0
- package/src/Chat/useSpeechRecognition.ts +2 -0
- package/src/Chat/useTriggerMenu.tsx +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
- package/src/CheckboxInput/CheckboxInput.tsx +38 -15
- package/src/CheckboxList/CheckboxList.doc.mjs +14 -0
- package/src/CheckboxList/CheckboxList.tsx +43 -2
- package/src/CheckboxList/CheckboxListContext.tsx +9 -1
- package/src/CheckboxList/CheckboxListItem.tsx +23 -2
- package/src/CheckboxList/requiredGroup.ts +77 -0
- package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
- package/src/CodeBlock/CodeBlock.tsx +41 -4
- package/src/CommandPalette/CommandPalette.tsx +1 -0
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
- package/src/ComplexSelector/ComplexSelector.tsx +20 -5
- package/src/ContextMenu/ContextMenu.tsx +2 -2
- package/src/DateInput/MonthScroller.tsx +8 -2
- package/src/DateInput/PickerWheel.tsx +796 -0
- package/src/DateInput/TouchDateField.tsx +6 -32
- package/src/DateInput/Wheel.tsx +188 -171
- package/src/DateInput/datePickerTouch.ts +15 -0
- package/src/DateInput/useOwnScrollGesture.ts +25 -3
- package/src/DateInput/usePointerDragScroll.ts +1 -0
- package/src/DateInput/useScrollSettle.ts +2 -0
- package/src/DateInput/useWheelListbox.ts +112 -0
- package/src/DateInput/wheelOptions.ts +184 -0
- package/src/DateInput/wheelPhysics.ts +406 -0
- package/src/DateInput/wheelStrip.ts +341 -0
- package/src/DateTimeInput/TouchDateTimeField.tsx +100 -189
- package/src/Dialog/Dialog.tsx +12 -32
- package/src/Drawer/useDrawerDialogPresence.ts +2 -0
- package/src/DropdownMenu/useMenuOverflow.ts +3 -0
- package/src/Field/Field.tsx +2 -2
- package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
- package/src/FormLayout/FormLayout.doc.mjs +181 -46
- package/src/FormLayout/FormLayout.tsx +5 -1
- package/src/HoverCard/HoverCard.doc.mjs +10 -8
- package/src/HoverCard/HoverCard.tsx +58 -6
- package/src/HoverCard/useHoverCard.doc.mjs +178 -36
- package/src/HoverCard/useHoverCard.tsx +55 -55
- package/src/Icon/Icon.doc.mjs +51 -10
- package/src/Icon/Icon.tsx +31 -8
- package/src/IconButton/IconButton.doc.mjs +141 -21
- package/src/InfoTip/InfoTip.tsx +72 -16
- package/src/Item/useSwipeAction.ts +2 -0
- package/src/Layer/modalOutlet.ts +2 -0
- package/src/Layer/outsidePress.ts +1 -0
- package/src/Layer/useLayer.tsx +3 -1
- package/src/Layer/useLayerDismissal.ts +2 -0
- package/src/Layer/useTouchTrigger.ts +19 -6
- package/src/Layout/index.ts +1 -1
- package/src/Layout/layoutReset.ts +1 -1
- package/src/Layout/overlayPaddingReset.stylex.ts +73 -0
- package/src/Layout/padding.stylex.ts +9 -133
- package/src/Layout/paddingStyles.stylex.ts +87 -0
- package/src/Lightbox/Lightbox.tsx +20 -1
- package/src/Lightbox/useLightbox.doc.mjs +167 -0
- package/src/MobileNav/MobileNav.tsx +10 -31
- package/src/MultiSelector/MultiSelector.tsx +2 -7
- package/src/NumberInput/NumberInput.tsx +2 -7
- package/src/Outline/useOutlineFromDOM.ts +2 -0
- package/src/Outline/useScrollSpy.ts +2 -0
- package/src/OverflowList/OverflowList.tsx +2 -0
- package/src/Overlay/Overlay.tsx +7 -2
- package/src/Popover/Popover.tsx +4 -0
- package/src/Popover/usePopover.tsx +2 -2
- package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
- package/src/PowerSearch/PowerSearch.tsx +622 -157
- package/src/PowerSearch/PowerSearchBottomSheet.tsx +2700 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +65 -9
- package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
- package/src/PowerSearch/PowerSearchToken.tsx +2 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +340 -59
- package/src/PowerSearch/formatFilterValue.ts +49 -27
- package/src/PowerSearch/formatTokenValue.ts +220 -0
- package/src/PowerSearch/index.ts +5 -1
- package/src/PowerSearch/powerSearchDateZone.ts +95 -0
- package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
- package/src/PowerSearch/types.ts +8 -1
- package/src/ProgressBar/ProgressBarTouch.ts +2 -0
- package/src/RadioList/RadioList.tsx +3 -2
- package/src/RadioList/RadioListItem.tsx +5 -3
- package/src/Resizable/Resizable.doc.mjs +5 -4
- package/src/Resizable/ResizeHandle.tsx +187 -135
- package/src/Resizable/createResizable.ts +1046 -0
- package/src/Resizable/separatorAttributes.ts +73 -0
- package/src/Resizable/useResizable.ts +292 -623
- package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
- package/src/SelectableCard/SelectableCard.tsx +39 -10
- package/src/SelectableCard/selectableCardInput.ts +30 -0
- package/src/Selector/Selector.tsx +7 -19
- package/src/SideNav/SideNav.tsx +41 -5
- package/src/Slider/Slider.tsx +20 -11
- package/src/Slider/sliderTouchController.ts +2 -2
- package/src/Spinner/Spinner.tsx +77 -63
- package/src/Stepper/Stepper.tsx +10 -27
- package/src/Switch/Switch.tsx +2 -6
- package/src/Switch/useSwitchTouch.ts +4 -4
- package/src/Table/BaseTable.tsx +46 -12
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
- package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +31 -7
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
- package/src/Table/plugins/tree/useTableTreeData.tsx +43 -20
- package/src/Table/useTableRowExpansion.doc.mjs +9 -0
- package/src/Table/useTableTreeData.doc.mjs +15 -3
- package/src/TextArea/TextArea.tsx +2 -7
- package/src/TextInput/TextInput.tsx +13 -17
- package/src/TimeInput/TimeInput.tsx +2 -0
- package/src/TimeInput/TimeWheels.tsx +218 -0
- package/src/TimeInput/TouchTimeField.tsx +93 -155
- package/src/TimeInput/timeWheelRules.ts +352 -0
- package/src/Timer/Timer.tsx +1 -0
- package/src/Timestamp/Timestamp.tsx +1 -1
- package/src/Timestamp/formatInstant.ts +1 -33
- package/src/Toast/Toast.doc.mjs +4 -3
- package/src/Toast/Toast.tsx +52 -32
- package/src/Toast/ToastViewport.tsx +123 -35
- package/src/Toast/types.ts +9 -3
- package/src/Toast/useToast.tsx +1 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +10 -10
- package/src/Tokenizer/Tokenizer.tsx +61 -62
- package/src/Tokenizer/TokenizerBottomSheet.tsx +17 -23
- package/src/Tokenizer/index.ts +1 -0
- package/src/Tooltip/Tooltip.tsx +6 -42
- package/src/Tooltip/useTooltip.doc.mjs +24 -0
- package/src/Tooltip/useTooltip.tsx +243 -134
- package/src/Typeahead/BaseTypeahead.tsx +27 -17
- package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
- package/src/Typeahead/TypeaheadItem.tsx +2 -1
- package/src/animator/createAnimator.doc.mjs +153 -0
- package/src/animator/createAnimator.ts +324 -0
- package/src/gestures/GestureHost.ts +6 -5
- package/src/gestures/PressTracker.ts +4 -3
- package/src/gestures/README.md +10 -4
- package/src/hooks/ModalAnnounceProvider.tsx +1 -0
- package/src/hooks/actionGroupTracker.ts +25 -9
- package/src/hooks/index.ts +2 -0
- package/src/hooks/longPressDetector.ts +273 -0
- package/src/hooks/pressGroupContext.ts +21 -0
- package/src/hooks/rootScrollStyles.ts +247 -0
- package/src/hooks/scrollLockTouchGuard.ts +149 -0
- package/src/hooks/scrollbarGutter.ts +41 -26
- package/src/hooks/useActionGroupTracking.ts +224 -0
- package/src/hooks/useAnimator.doc.mjs +109 -0
- package/src/hooks/useAnimator.ts +67 -0
- package/src/hooks/useAnnounceRenderedText.ts +1 -0
- package/src/hooks/useAttachment.ts +1 -1
- package/src/hooks/useAutoMediaMode.ts +1 -0
- package/src/hooks/useBusyAnnouncement.ts +2 -0
- package/src/hooks/useDevWarning.ts +2 -0
- package/src/hooks/useFocusTrap.ts +2 -0
- package/src/hooks/useGridFocus.doc.mjs +6 -6
- package/src/hooks/useGridFocus.ts +10 -7
- package/src/hooks/useHotkeys.ts +2 -0
- package/src/hooks/useImageMode.ts +2 -0
- package/src/hooks/useInputStatusIcon.tsx +3 -2
- package/src/hooks/useKeyboardHint.tsx +1 -1
- package/src/hooks/useLongPress.doc.mjs +2 -2
- package/src/hooks/useLongPress.ts +32 -122
- package/src/hooks/useMenuHover.ts +1 -0
- package/src/hooks/useMenuPress.ts +2 -0
- package/src/hooks/useOverflow.ts +2 -1
- package/src/hooks/usePressFeedback.ts +1 -0
- package/src/hooks/useResolvedRequired.ts +3 -0
- package/src/hooks/useScrollLock.doc.mjs +51 -12
- package/src/hooks/useScrollLock.ts +53 -60
- package/src/hooks/useScrollableArea.ts +4 -0
- package/src/hooks/useStreamingText.ts +2 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +46 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
- package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
- package/src/i18n/generated-english/Resizable/createResizable.generated.ts +14 -0
- package/src/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.ts +3 -1
- package/src/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.ts +3 -1
- package/src/i18n/generated-english/TimeInput/TimeWheels.generated.ts +18 -0
- package/src/i18n/generated-locales/en.generated.ts +47 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +48 -0
- package/src/index.ts +13 -0
- package/src/internal/indicatorPress.stylex.ts +24 -0
- package/src/internal/selectable-card.ts +21 -0
- package/src/internal/sheetDraft.ts +2 -2
- package/src/keyboard/README.md +197 -0
- package/src/keyboard/index.ts +48 -0
- package/src/keyboard/keyboardHeight.ts +543 -0
- package/src/keyboard/keyboardLayoutGuide.ts +266 -0
- package/src/keyboard/keyboardModel.ts +301 -0
- package/src/keyboard/rideKeyboard.ts +100 -0
- package/src/keyboard/useMobileKeyboard.ts +866 -0
- package/src/motion/MEASUREMENTS.md +28 -0
- package/src/motion/README.md +12 -5
- package/src/motion/android/index.ts +18 -0
- package/src/motion/android/keyboard.ts +96 -0
- package/src/motion/animatedLayout.ts +323 -60
- package/src/motion/animator.ts +66 -37
- package/src/motion/frameBlock.ts +16 -0
- package/src/motion/progress.ts +155 -0
- package/src/motion/reducedMotion.ts +3 -1
- package/src/motion/uikit/alert.ts +43 -0
- package/src/motion/uikit/datePicker.ts +60 -0
- package/src/motion/uikit/index.ts +6 -4
- package/src/motion/uikit/picker.ts +116 -0
- package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
- package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
- package/src/theme/Theme.tsx +37 -3
- package/src/theme/generateThemeRules.ts +14 -12
- package/src/theme/motionKnobs.ts +4 -3
- package/src/theme/themeMotion.ts +17 -2
- package/src/theme/tokens.stylex.ts +2 -0
- package/src/utils/dateParser.ts +16 -0
- package/src/utils/disabledInteraction.ts +23 -2
- package/src/utils/focusReturn.ts +38 -31
- package/src/utils/index.ts +1 -1
- package/src/utils/interactionModality.ts +4 -0
- package/src/utils/interactionOverlay.stylex.ts +6 -4
- package/src/utils/isFocusDetached.ts +34 -0
- package/src/utils/layoutViewport.ts +104 -0
- package/src/utils/plainDate.ts +80 -4
- package/src/utils/pressFeedback.ts +126 -30
- package/src/utils/pressGesture.ts +4 -2
- package/src/utils/selectionLock.ts +40 -6
- package/src/utils/sharedMutationObserver.ts +2 -1
- package/src/utils/timeParser.ts +40 -3
- package/src/utils/triggerFocus.ts +80 -0
- package/dist/BottomSheet/useMobileKeyboard.d.ts +0 -21
- package/dist/BottomSheet/useMobileKeyboard.d.ts.map +0 -1
- package/dist/BottomSheet/useMobileKeyboard.js +0 -407
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +0 -14
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +0 -1
- package/dist/Calendar/getStandaloneShortWeekdayNames.js +0 -26
- package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +0 -1
- package/dist/Layer/usePressPin.d.ts +0 -93
- package/dist/Layer/usePressPin.d.ts.map +0 -1
- package/dist/Layer/usePressPin.js +0 -363
- package/dist/internal/touch-sheet.d.ts +0 -21
- package/dist/internal/touch-sheet.d.ts.map +0 -1
- package/dist/internal/touch-sheet.js +0 -19
- package/src/BottomSheet/useMobileKeyboard.ts +0 -538
- package/src/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
- package/src/Layer/usePressPin.ts +0 -510
- package/src/internal/touch-sheet.ts +0 -21
|
@@ -4,9 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file PowerSearchValueEditor.tsx
|
|
7
|
-
* @input OperatorValue, FilterValue, onChange callback
|
|
7
|
+
* @input OperatorValue, FilterValue, onChange callback, and the presentation
|
|
8
|
+
* the editor renders in
|
|
8
9
|
* @output Renders the appropriate editor for a filter value type
|
|
9
|
-
* @position Sub-component; consumed by PowerSearchEditPopover
|
|
10
|
+
* @position Sub-component; consumed by PowerSearchEditPopover (popover
|
|
11
|
+
* presentation) and PowerSearchBottomSheet (sheet presentation, which
|
|
12
|
+
* renders the closed vocabularies as rows itself)
|
|
10
13
|
*
|
|
11
14
|
* SYNC: When modified, update:
|
|
12
15
|
* - /packages/core/src/PowerSearch/index.ts
|
|
@@ -16,6 +19,7 @@ import React, {
|
|
|
16
19
|
useCallback,
|
|
17
20
|
useMemo,
|
|
18
21
|
useRef,
|
|
22
|
+
useState,
|
|
19
23
|
type FormEvent,
|
|
20
24
|
type KeyboardEvent,
|
|
21
25
|
} from 'react';
|
|
@@ -39,13 +43,23 @@ import {
|
|
|
39
43
|
type NumberInputCommitDecision,
|
|
40
44
|
} from '../NumberInput/numberInputCommit';
|
|
41
45
|
import {DateInput} from '../DateInput';
|
|
46
|
+
import {
|
|
47
|
+
isoDateTimeToUnixSeconds,
|
|
48
|
+
isoDateToUnixSeconds,
|
|
49
|
+
resolveDateZone,
|
|
50
|
+
unixSecondsToISODate,
|
|
51
|
+
unixSecondsToISODateTime,
|
|
52
|
+
} from './powerSearchDateZone';
|
|
53
|
+
import type {ISODateTimeString} from '../DateTimeInput/DateTimeInput';
|
|
54
|
+
import {HStack} from '../HStack/HStack';
|
|
42
55
|
import {DateRangeInput, type DateRange} from '../DateRangeInput';
|
|
43
56
|
import {resolveDateTimeRangePart} from './resolveDateTimeRangePart';
|
|
44
57
|
import {TimeInput} from '../TimeInput';
|
|
45
58
|
import {Selector} from '../Selector';
|
|
46
|
-
import {Tokenizer} from '../Tokenizer';
|
|
59
|
+
import {Tokenizer} from '../Tokenizer/Tokenizer';
|
|
47
60
|
import {Typeahead} from '../Typeahead';
|
|
48
61
|
import {useLocale} from '../i18n';
|
|
62
|
+
import type {TranslatorFn} from '../i18n';
|
|
49
63
|
import {
|
|
50
64
|
registerEnglishFallback,
|
|
51
65
|
useComponentTranslator,
|
|
@@ -64,8 +78,30 @@ export interface PowerSearchValueEditorProps {
|
|
|
64
78
|
maxMenuItems?: number;
|
|
65
79
|
isDisabled?: boolean;
|
|
66
80
|
timezoneID?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Called when a staged value no longer stands — the number input's draft is
|
|
83
|
+
* empty or does not parse — so the sheet presentation's confirm action
|
|
84
|
+
* disables again. Only the `bottom-sheet` presentation stages as typed; the
|
|
85
|
+
* popover commits on blur or Enter and never calls this.
|
|
86
|
+
*/
|
|
87
|
+
onUnstage?: () => void;
|
|
88
|
+
/**
|
|
89
|
+
* Where the editor renders. In the `bottom-sheet` presentation the inputs
|
|
90
|
+
* fill the sheet's width, number inputs stage every parseable keystroke
|
|
91
|
+
* (the sheet's footer confirms; there is no Enter-to-save), the date range
|
|
92
|
+
* shows one month, and list values open the Tokenizer's own sheet titled
|
|
93
|
+
* with `fieldLabel`.
|
|
94
|
+
* @default 'popover'
|
|
95
|
+
*/
|
|
96
|
+
presentation?: 'popover' | 'bottom-sheet';
|
|
97
|
+
/** The field's label; names the Tokenizer sheet in the sheet presentation. */
|
|
98
|
+
fieldLabel?: string;
|
|
67
99
|
}
|
|
68
100
|
|
|
101
|
+
type EditorPresentation = NonNullable<
|
|
102
|
+
PowerSearchValueEditorProps['presentation']
|
|
103
|
+
>;
|
|
104
|
+
|
|
69
105
|
// =============================================================================
|
|
70
106
|
// Helpers
|
|
71
107
|
// =============================================================================
|
|
@@ -96,10 +132,9 @@ function enumItemsToSearchableItems(
|
|
|
96
132
|
function dateRangePartToISO(
|
|
97
133
|
part: DateTimeRangePart,
|
|
98
134
|
nowSeconds: number,
|
|
135
|
+
zone: string | undefined,
|
|
99
136
|
): ISODateString {
|
|
100
|
-
return
|
|
101
|
-
.toISOString()
|
|
102
|
-
.split('T')[0] as ISODateString;
|
|
137
|
+
return unixSecondsToISODate(resolveDateTimeRangePart(part, nowSeconds), zone);
|
|
103
138
|
}
|
|
104
139
|
|
|
105
140
|
// =============================================================================
|
|
@@ -113,6 +148,7 @@ function StringEditor({
|
|
|
113
148
|
onEnter: _onEnter,
|
|
114
149
|
maxMenuItems,
|
|
115
150
|
isDisabled,
|
|
151
|
+
presentation,
|
|
116
152
|
}: {
|
|
117
153
|
operatorValue: OperatorValue & {type: 'string'};
|
|
118
154
|
filterValue: FilterValue | undefined;
|
|
@@ -120,8 +156,10 @@ function StringEditor({
|
|
|
120
156
|
onEnter?: () => void;
|
|
121
157
|
maxMenuItems?: number;
|
|
122
158
|
isDisabled?: boolean;
|
|
159
|
+
presentation: EditorPresentation;
|
|
123
160
|
}) {
|
|
124
161
|
const t = useComponentTranslator();
|
|
162
|
+
const width = presentation === 'bottom-sheet' ? '100%' : undefined;
|
|
125
163
|
const currentValue = filterValue?.type === 'string' ? filterValue.value : '';
|
|
126
164
|
|
|
127
165
|
// When a searchSource is provided, render a typeahead instead of a plain
|
|
@@ -148,6 +186,7 @@ function StringEditor({
|
|
|
148
186
|
placeholder={t('@astryx.powersearch.valueEditor.searchPlaceholder')}
|
|
149
187
|
debounceMs={150}
|
|
150
188
|
maxMenuItems={maxMenuItems}
|
|
189
|
+
width={width}
|
|
151
190
|
/>
|
|
152
191
|
);
|
|
153
192
|
}
|
|
@@ -162,6 +201,7 @@ function StringEditor({
|
|
|
162
201
|
onChange={(value: string) => {
|
|
163
202
|
onChange({type: 'string', value});
|
|
164
203
|
}}
|
|
204
|
+
width={width}
|
|
165
205
|
/>
|
|
166
206
|
);
|
|
167
207
|
}
|
|
@@ -172,14 +212,19 @@ function StringListEditor({
|
|
|
172
212
|
onChange,
|
|
173
213
|
maxMenuItems,
|
|
174
214
|
isDisabled,
|
|
215
|
+
presentation,
|
|
216
|
+
fieldLabel,
|
|
175
217
|
}: {
|
|
176
218
|
operatorValue: OperatorValue & {type: 'string_list'};
|
|
177
219
|
filterValue: FilterValue | undefined;
|
|
178
220
|
onChange: (value: FilterValue) => void;
|
|
179
221
|
maxMenuItems?: number;
|
|
180
222
|
isDisabled?: boolean;
|
|
223
|
+
presentation: EditorPresentation;
|
|
224
|
+
fieldLabel?: string;
|
|
181
225
|
}) {
|
|
182
226
|
const t = useComponentTranslator();
|
|
227
|
+
const isSheet = presentation === 'bottom-sheet';
|
|
183
228
|
const currentValue: SearchableItem[] = useMemo(() => {
|
|
184
229
|
if (filterValue?.type !== 'string_list') {
|
|
185
230
|
return [];
|
|
@@ -203,9 +248,16 @@ function StringListEditor({
|
|
|
203
248
|
const hasCreate =
|
|
204
249
|
operatorValue.isArbitraryStringAllowed || !operatorValue.searchSource;
|
|
205
250
|
|
|
251
|
+
// In the sheet presentation the list value edits through the Tokenizer's
|
|
252
|
+
// own sheet, titled with the field's label; a popover menu inside a sheet
|
|
253
|
+
// would stack a second anchored layer on a surface the person is already in.
|
|
206
254
|
return (
|
|
207
255
|
<Tokenizer
|
|
208
|
-
label={
|
|
256
|
+
label={
|
|
257
|
+
isSheet && fieldLabel != null
|
|
258
|
+
? fieldLabel
|
|
259
|
+
: t('@astryx.powersearch.valueEditor.values')
|
|
260
|
+
}
|
|
209
261
|
isLabelHidden
|
|
210
262
|
isDisabled={isDisabled}
|
|
211
263
|
searchSource={source}
|
|
@@ -220,6 +272,8 @@ function StringListEditor({
|
|
|
220
272
|
debounceMs={operatorValue.searchSource ? 150 : 0}
|
|
221
273
|
hasCreate={hasCreate}
|
|
222
274
|
maxMenuItems={maxMenuItems}
|
|
275
|
+
width={isSheet ? '100%' : undefined}
|
|
276
|
+
presentation={isSheet ? 'bottom-sheet' : 'popover'}
|
|
223
277
|
/>
|
|
224
278
|
);
|
|
225
279
|
}
|
|
@@ -231,6 +285,8 @@ function useNumberEditorHandlers({
|
|
|
231
285
|
isIntegerOnly,
|
|
232
286
|
onChange,
|
|
233
287
|
onEnter,
|
|
288
|
+
onUnstage,
|
|
289
|
+
stagesAsTyped,
|
|
234
290
|
}: {
|
|
235
291
|
valueType: 'integer' | 'float';
|
|
236
292
|
min?: number;
|
|
@@ -238,6 +294,14 @@ function useNumberEditorHandlers({
|
|
|
238
294
|
isIntegerOnly: boolean;
|
|
239
295
|
onChange: (value: FilterValue, shouldSave?: boolean) => void;
|
|
240
296
|
onEnter?: () => void;
|
|
297
|
+
onUnstage?: () => void;
|
|
298
|
+
/**
|
|
299
|
+
* Stage every keystroke the input would commit, and unstage when the draft
|
|
300
|
+
* stops parsing. The sheet presentation confirms from its footer, so the
|
|
301
|
+
* confirm action must enable while the person is still typing and disable
|
|
302
|
+
* again over an empty field; the popover commits on blur or Enter.
|
|
303
|
+
*/
|
|
304
|
+
stagesAsTyped: boolean;
|
|
241
305
|
}) {
|
|
242
306
|
const locale = useLocale();
|
|
243
307
|
const pendingDecisionRef = useRef<NumberInputCommitDecision | null>(null);
|
|
@@ -259,12 +323,30 @@ function useNumberEditorHandlers({
|
|
|
259
323
|
}, []);
|
|
260
324
|
const handleInput = useCallback(
|
|
261
325
|
(event: FormEvent<HTMLElement>) => {
|
|
262
|
-
|
|
326
|
+
const decision = resolveNumberInputCommit(
|
|
263
327
|
(event.currentTarget as HTMLInputElement).value,
|
|
264
328
|
{min, max, isIntegerOnly, locale, hasClear: false},
|
|
265
329
|
);
|
|
330
|
+
pendingDecisionRef.current = decision;
|
|
331
|
+
if (stagesAsTyped) {
|
|
332
|
+
if (decision.type === 'commit') {
|
|
333
|
+
onChange(toFilterValue(decision.value));
|
|
334
|
+
} else {
|
|
335
|
+
// Cleared, or not a number: nothing stands to confirm.
|
|
336
|
+
onUnstage?.();
|
|
337
|
+
}
|
|
338
|
+
}
|
|
266
339
|
},
|
|
267
|
-
[
|
|
340
|
+
[
|
|
341
|
+
isIntegerOnly,
|
|
342
|
+
locale,
|
|
343
|
+
max,
|
|
344
|
+
min,
|
|
345
|
+
onChange,
|
|
346
|
+
onUnstage,
|
|
347
|
+
stagesAsTyped,
|
|
348
|
+
toFilterValue,
|
|
349
|
+
],
|
|
268
350
|
);
|
|
269
351
|
const handleEnter = useCallback(() => {
|
|
270
352
|
const decision = pendingDecisionRef.current;
|
|
@@ -292,13 +374,17 @@ function IntegerEditor({
|
|
|
292
374
|
filterValue,
|
|
293
375
|
onChange,
|
|
294
376
|
onEnter,
|
|
377
|
+
onUnstage,
|
|
295
378
|
isDisabled,
|
|
379
|
+
presentation,
|
|
296
380
|
}: {
|
|
297
381
|
operatorValue: OperatorValue & {type: 'integer'};
|
|
298
382
|
filterValue: FilterValue | undefined;
|
|
299
383
|
onChange: (value: FilterValue, shouldSave?: boolean) => void;
|
|
300
384
|
onEnter?: () => void;
|
|
385
|
+
onUnstage?: () => void;
|
|
301
386
|
isDisabled?: boolean;
|
|
387
|
+
presentation: EditorPresentation;
|
|
302
388
|
}) {
|
|
303
389
|
const t = useComponentTranslator();
|
|
304
390
|
const currentValue =
|
|
@@ -310,6 +396,8 @@ function IntegerEditor({
|
|
|
310
396
|
isIntegerOnly: true,
|
|
311
397
|
onChange,
|
|
312
398
|
onEnter,
|
|
399
|
+
onUnstage,
|
|
400
|
+
stagesAsTyped: presentation === 'bottom-sheet',
|
|
313
401
|
});
|
|
314
402
|
|
|
315
403
|
return (
|
|
@@ -328,6 +416,7 @@ function IntegerEditor({
|
|
|
328
416
|
units={operatorValue.units}
|
|
329
417
|
isIntegerOnly
|
|
330
418
|
placeholder={t('@astryx.powersearch.valueEditor.enterNumberPlaceholder')}
|
|
419
|
+
width={presentation === 'bottom-sheet' ? '100%' : undefined}
|
|
331
420
|
/>
|
|
332
421
|
);
|
|
333
422
|
}
|
|
@@ -337,13 +426,17 @@ function FloatEditor({
|
|
|
337
426
|
filterValue,
|
|
338
427
|
onChange,
|
|
339
428
|
onEnter,
|
|
429
|
+
onUnstage,
|
|
340
430
|
isDisabled,
|
|
431
|
+
presentation,
|
|
341
432
|
}: {
|
|
342
433
|
operatorValue: OperatorValue & {type: 'float'};
|
|
343
434
|
filterValue: FilterValue | undefined;
|
|
344
435
|
onChange: (value: FilterValue, shouldSave?: boolean) => void;
|
|
345
436
|
onEnter?: () => void;
|
|
437
|
+
onUnstage?: () => void;
|
|
346
438
|
isDisabled?: boolean;
|
|
439
|
+
presentation: EditorPresentation;
|
|
347
440
|
}) {
|
|
348
441
|
const t = useComponentTranslator();
|
|
349
442
|
const currentValue =
|
|
@@ -355,6 +448,8 @@ function FloatEditor({
|
|
|
355
448
|
isIntegerOnly: false,
|
|
356
449
|
onChange,
|
|
357
450
|
onEnter,
|
|
451
|
+
onUnstage,
|
|
452
|
+
stagesAsTyped: presentation === 'bottom-sheet',
|
|
358
453
|
});
|
|
359
454
|
|
|
360
455
|
return (
|
|
@@ -372,6 +467,7 @@ function FloatEditor({
|
|
|
372
467
|
max={operatorValue.maxValue}
|
|
373
468
|
units={operatorValue.units}
|
|
374
469
|
placeholder={t('@astryx.powersearch.valueEditor.enterNumberPlaceholder')}
|
|
470
|
+
width={presentation === 'bottom-sheet' ? '100%' : undefined}
|
|
375
471
|
/>
|
|
376
472
|
);
|
|
377
473
|
}
|
|
@@ -381,11 +477,13 @@ function TimeEditor({
|
|
|
381
477
|
filterValue,
|
|
382
478
|
onChange,
|
|
383
479
|
isDisabled,
|
|
480
|
+
presentation,
|
|
384
481
|
}: {
|
|
385
482
|
operatorValue: OperatorValue & {type: 'time'};
|
|
386
483
|
filterValue: FilterValue | undefined;
|
|
387
484
|
onChange: (value: FilterValue) => void;
|
|
388
485
|
isDisabled?: boolean;
|
|
486
|
+
presentation: EditorPresentation;
|
|
389
487
|
}) {
|
|
390
488
|
const t = useComponentTranslator();
|
|
391
489
|
const currentValue =
|
|
@@ -406,46 +504,207 @@ function TimeEditor({
|
|
|
406
504
|
}}
|
|
407
505
|
min={operatorValue.minValue as ISOTimeString | undefined}
|
|
408
506
|
max={operatorValue.maxValue as ISOTimeString | undefined}
|
|
507
|
+
width={presentation === 'bottom-sheet' ? '100%' : undefined}
|
|
409
508
|
/>
|
|
410
509
|
);
|
|
411
510
|
}
|
|
412
511
|
|
|
512
|
+
/**
|
|
513
|
+
* A value with a time of day: its wall-clock time in `zone`, read and written
|
|
514
|
+
* as one instant through a date picker beside a time field.
|
|
515
|
+
*/
|
|
516
|
+
function DateTimeEditor({
|
|
517
|
+
label,
|
|
518
|
+
isDisabled,
|
|
519
|
+
presentation,
|
|
520
|
+
unixSeconds,
|
|
521
|
+
zone,
|
|
522
|
+
onChange,
|
|
523
|
+
}: {
|
|
524
|
+
label: string;
|
|
525
|
+
isDisabled?: boolean;
|
|
526
|
+
presentation: EditorPresentation;
|
|
527
|
+
unixSeconds: number | undefined;
|
|
528
|
+
zone: string | undefined;
|
|
529
|
+
onChange: (value: FilterValue) => void;
|
|
530
|
+
}) {
|
|
531
|
+
const t = useComponentTranslator();
|
|
532
|
+
const [datePart, timePart] = useMemo(() => {
|
|
533
|
+
if (unixSeconds == null) {
|
|
534
|
+
return [undefined, undefined] as const;
|
|
535
|
+
}
|
|
536
|
+
const [date, time] = unixSecondsToISODateTime(unixSeconds, zone).split('T');
|
|
537
|
+
return [date as ISODateString, time as ISOTimeString] as const;
|
|
538
|
+
}, [unixSeconds, zone]);
|
|
539
|
+
// A part picked first waits for the other. The editor writes the instant
|
|
540
|
+
// once both parts exist.
|
|
541
|
+
const [pendingDate, setPendingDate] = useState<ISODateString | undefined>();
|
|
542
|
+
const [pendingTime, setPendingTime] = useState<ISOTimeString | undefined>();
|
|
543
|
+
const date = datePart ?? pendingDate;
|
|
544
|
+
const time = timePart ?? pendingTime;
|
|
545
|
+
const commit = (
|
|
546
|
+
nextDate: ISODateString | undefined,
|
|
547
|
+
nextTime: ISOTimeString | undefined,
|
|
548
|
+
) => {
|
|
549
|
+
if (nextDate == null || nextTime == null) {
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
onChange({
|
|
553
|
+
type: 'date_absolute',
|
|
554
|
+
unixSeconds: isoDateTimeToUnixSeconds(
|
|
555
|
+
`${nextDate}T${nextTime}` as ISODateTimeString,
|
|
556
|
+
zone,
|
|
557
|
+
),
|
|
558
|
+
});
|
|
559
|
+
};
|
|
560
|
+
const width = presentation === 'bottom-sheet' ? '100%' : undefined;
|
|
561
|
+
// A nested sub-filter row keeps its selectors' widths, so the pair wraps
|
|
562
|
+
// where the value cell is narrower than the two inputs.
|
|
563
|
+
return (
|
|
564
|
+
<HStack gap={2} wrap="wrap">
|
|
565
|
+
<DateInput
|
|
566
|
+
label={label}
|
|
567
|
+
isLabelHidden
|
|
568
|
+
isDisabled={isDisabled}
|
|
569
|
+
value={date}
|
|
570
|
+
onChange={value => {
|
|
571
|
+
setPendingDate(value);
|
|
572
|
+
commit(value, time);
|
|
573
|
+
}}
|
|
574
|
+
width={width}
|
|
575
|
+
/>
|
|
576
|
+
<TimeInput
|
|
577
|
+
label={t('@astryx.powersearch.valueEditor.time')}
|
|
578
|
+
isLabelHidden
|
|
579
|
+
isDisabled={isDisabled}
|
|
580
|
+
value={time}
|
|
581
|
+
onChange={value => {
|
|
582
|
+
setPendingTime(value);
|
|
583
|
+
commit(date, value);
|
|
584
|
+
}}
|
|
585
|
+
width={width}
|
|
586
|
+
/>
|
|
587
|
+
</HStack>
|
|
588
|
+
);
|
|
589
|
+
}
|
|
590
|
+
|
|
413
591
|
function DateAbsoluteEditor({
|
|
592
|
+
operatorValue,
|
|
414
593
|
filterValue,
|
|
415
594
|
onChange,
|
|
416
595
|
isDisabled,
|
|
596
|
+
presentation,
|
|
597
|
+
timezoneID,
|
|
417
598
|
}: {
|
|
418
599
|
operatorValue: OperatorValue & {type: 'date_absolute'};
|
|
419
600
|
filterValue: FilterValue | undefined;
|
|
420
601
|
onChange: (value: FilterValue) => void;
|
|
421
602
|
isDisabled?: boolean;
|
|
603
|
+
presentation: EditorPresentation;
|
|
604
|
+
timezoneID?: string;
|
|
422
605
|
}) {
|
|
423
606
|
const t = useComponentTranslator();
|
|
424
|
-
|
|
425
|
-
const
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
607
|
+
const label = t('@astryx.powersearch.valueEditor.date');
|
|
608
|
+
const unixSeconds =
|
|
609
|
+
filterValue?.type === 'date_absolute' ? filterValue.unixSeconds : undefined;
|
|
610
|
+
|
|
611
|
+
if (operatorValue.isDateOnly === false) {
|
|
612
|
+
return (
|
|
613
|
+
<DateTimeEditor
|
|
614
|
+
label={label}
|
|
615
|
+
isDisabled={isDisabled}
|
|
616
|
+
presentation={presentation}
|
|
617
|
+
unixSeconds={unixSeconds}
|
|
618
|
+
zone={resolveDateZone(timezoneID, false)}
|
|
619
|
+
onChange={onChange}
|
|
620
|
+
/>
|
|
621
|
+
);
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
// A calendar day edits in the one zone the token and the label read it in.
|
|
625
|
+
const zone = resolveDateZone(timezoneID, true);
|
|
432
626
|
|
|
433
627
|
return (
|
|
434
628
|
<DateInput
|
|
435
|
-
label={
|
|
629
|
+
label={label}
|
|
436
630
|
isLabelHidden
|
|
437
631
|
isDisabled={isDisabled}
|
|
438
|
-
value={
|
|
632
|
+
value={
|
|
633
|
+
unixSeconds == null
|
|
634
|
+
? undefined
|
|
635
|
+
: unixSecondsToISODate(unixSeconds, zone)
|
|
636
|
+
}
|
|
439
637
|
onChange={value => {
|
|
440
638
|
if (value != null) {
|
|
441
|
-
|
|
442
|
-
|
|
639
|
+
onChange({
|
|
640
|
+
type: 'date_absolute',
|
|
641
|
+
unixSeconds: isoDateToUnixSeconds(value, zone),
|
|
642
|
+
});
|
|
443
643
|
}
|
|
444
644
|
}}
|
|
645
|
+
width={presentation === 'bottom-sheet' ? '100%' : undefined}
|
|
445
646
|
/>
|
|
446
647
|
);
|
|
447
648
|
}
|
|
448
649
|
|
|
650
|
+
const RELATIVE_DATE_UNITS = [
|
|
651
|
+
{
|
|
652
|
+
unit: 'day',
|
|
653
|
+
plural: 'days',
|
|
654
|
+
amounts: [1, 3, 7, 14, 30],
|
|
655
|
+
ago: '@astryx.powersearch.sheet.relativeDaysAgo',
|
|
656
|
+
fromNow: '@astryx.powersearch.sheet.relativeDaysFromNow',
|
|
657
|
+
},
|
|
658
|
+
{
|
|
659
|
+
unit: 'week',
|
|
660
|
+
plural: 'weeks',
|
|
661
|
+
amounts: [1, 2, 4],
|
|
662
|
+
ago: '@astryx.powersearch.sheet.relativeWeeksAgo',
|
|
663
|
+
fromNow: '@astryx.powersearch.sheet.relativeWeeksFromNow',
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
unit: 'month',
|
|
667
|
+
plural: 'months',
|
|
668
|
+
amounts: [1, 3, 6, 12],
|
|
669
|
+
ago: '@astryx.powersearch.sheet.relativeMonthsAgo',
|
|
670
|
+
fromNow: '@astryx.powersearch.sheet.relativeMonthsFromNow',
|
|
671
|
+
},
|
|
672
|
+
] as const;
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* The relative-date choices an operator offers, in display order. Shared by
|
|
676
|
+
* the popover's Selector and the sheet presentation's rows so both list the
|
|
677
|
+
* same values. With `t` the labels resolve through the catalog's ICU plural
|
|
678
|
+
* messages (the sheet presentation's rows); without it they are the popover
|
|
679
|
+
* editor's own literals. In English the two read identically.
|
|
680
|
+
*/
|
|
681
|
+
export function buildRelativeDateOptions(
|
|
682
|
+
operatorValue: OperatorValue & {type: 'date_relative'},
|
|
683
|
+
t?: TranslatorFn,
|
|
684
|
+
): {value: string; label: string}[] {
|
|
685
|
+
const result: {value: string; label: string}[] = [];
|
|
686
|
+
for (const {unit, plural, amounts, ago, fromNow} of RELATIVE_DATE_UNITS) {
|
|
687
|
+
for (const amount of amounts) {
|
|
688
|
+
const unitWord = amount === 1 ? unit : plural;
|
|
689
|
+
if (operatorValue.isPastAllowed !== false) {
|
|
690
|
+
result.push({
|
|
691
|
+
value: `${amount}${unit[0]}_ago`,
|
|
692
|
+
label: t ? t(ago, {count: amount}) : `${amount} ${unitWord} ago`,
|
|
693
|
+
});
|
|
694
|
+
}
|
|
695
|
+
if (operatorValue.isFutureAllowed !== false) {
|
|
696
|
+
result.push({
|
|
697
|
+
value: `${amount}${unit[0]}_from_now`,
|
|
698
|
+
label: t
|
|
699
|
+
? t(fromNow, {count: amount})
|
|
700
|
+
: `${amount} ${unitWord} from now`,
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
return result;
|
|
706
|
+
}
|
|
707
|
+
|
|
449
708
|
function DateRelativeEditor({
|
|
450
709
|
operatorValue,
|
|
451
710
|
filterValue,
|
|
@@ -461,37 +720,18 @@ function DateRelativeEditor({
|
|
|
461
720
|
const currentValue =
|
|
462
721
|
filterValue?.type === 'date_relative' ? filterValue.value : undefined;
|
|
463
722
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
{
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
? [1, 2, 4]
|
|
477
|
-
: [1, 3, 6, 12];
|
|
478
|
-
for (const amount of amounts) {
|
|
479
|
-
if (operatorValue.isPastAllowed !== false) {
|
|
480
|
-
result.push({
|
|
481
|
-
value: `${amount}${unit[0]}_ago`,
|
|
482
|
-
label: `${amount} ${amount === 1 ? unit : plural} ago`,
|
|
483
|
-
});
|
|
484
|
-
}
|
|
485
|
-
if (operatorValue.isFutureAllowed !== false) {
|
|
486
|
-
result.push({
|
|
487
|
-
value: `${amount}${unit[0]}_from_now`,
|
|
488
|
-
label: `${amount} ${amount === 1 ? unit : plural} from now`,
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
return result;
|
|
494
|
-
}, [operatorValue.isPastAllowed, operatorValue.isFutureAllowed]);
|
|
723
|
+
// The choices depend on the two flags only; a config that rebuilds its
|
|
724
|
+
// operator objects per render keeps the same memoized list.
|
|
725
|
+
const {isPastAllowed, isFutureAllowed} = operatorValue;
|
|
726
|
+
const options = useMemo(
|
|
727
|
+
() =>
|
|
728
|
+
buildRelativeDateOptions({
|
|
729
|
+
type: 'date_relative',
|
|
730
|
+
isPastAllowed,
|
|
731
|
+
isFutureAllowed,
|
|
732
|
+
}),
|
|
733
|
+
[isPastAllowed, isFutureAllowed],
|
|
734
|
+
);
|
|
495
735
|
|
|
496
736
|
return (
|
|
497
737
|
<Selector
|
|
@@ -511,13 +751,19 @@ function DateRangeEditor({
|
|
|
511
751
|
filterValue,
|
|
512
752
|
onChange,
|
|
513
753
|
isDisabled,
|
|
754
|
+
presentation,
|
|
755
|
+
timezoneID,
|
|
514
756
|
}: {
|
|
515
757
|
operatorValue: OperatorValue & {type: 'date_range'};
|
|
516
758
|
filterValue: FilterValue | undefined;
|
|
517
759
|
onChange: (value: FilterValue) => void;
|
|
518
760
|
isDisabled?: boolean;
|
|
761
|
+
presentation: EditorPresentation;
|
|
762
|
+
timezoneID?: string;
|
|
519
763
|
}) {
|
|
520
764
|
const t = useComponentTranslator();
|
|
765
|
+
// A range part is a calendar day, read and written as a date-only value is.
|
|
766
|
+
const zone = resolveDateZone(timezoneID, true);
|
|
521
767
|
const currentValue = useMemo<DateRange | null>(() => {
|
|
522
768
|
if (filterValue?.type !== 'date_range') {
|
|
523
769
|
return null;
|
|
@@ -525,10 +771,10 @@ function DateRangeEditor({
|
|
|
525
771
|
const {start, end} = filterValue.value;
|
|
526
772
|
const nowSeconds = Date.now() / 1000;
|
|
527
773
|
return {
|
|
528
|
-
start: dateRangePartToISO(start, nowSeconds),
|
|
529
|
-
end: dateRangePartToISO(end, nowSeconds),
|
|
774
|
+
start: dateRangePartToISO(start, nowSeconds, zone),
|
|
775
|
+
end: dateRangePartToISO(end, nowSeconds, zone),
|
|
530
776
|
};
|
|
531
|
-
}, [filterValue]);
|
|
777
|
+
}, [filterValue, zone]);
|
|
532
778
|
|
|
533
779
|
const handleChange = useCallback(
|
|
534
780
|
(range: DateRange | null) => {
|
|
@@ -540,16 +786,16 @@ function DateRangeEditor({
|
|
|
540
786
|
value: {
|
|
541
787
|
start: {
|
|
542
788
|
type: 'ABSOLUTE',
|
|
543
|
-
unixSeconds:
|
|
789
|
+
unixSeconds: isoDateToUnixSeconds(range.start, zone),
|
|
544
790
|
},
|
|
545
791
|
end: {
|
|
546
792
|
type: 'ABSOLUTE',
|
|
547
|
-
unixSeconds:
|
|
793
|
+
unixSeconds: isoDateToUnixSeconds(range.end, zone),
|
|
548
794
|
},
|
|
549
795
|
},
|
|
550
796
|
});
|
|
551
797
|
},
|
|
552
|
-
[onChange],
|
|
798
|
+
[onChange, zone],
|
|
553
799
|
);
|
|
554
800
|
|
|
555
801
|
const handleKeyDown = useCallback((event: KeyboardEvent<HTMLDivElement>) => {
|
|
@@ -569,6 +815,9 @@ function DateRangeEditor({
|
|
|
569
815
|
value={currentValue}
|
|
570
816
|
onChange={handleChange}
|
|
571
817
|
hasClear={false}
|
|
818
|
+
// A phone-wide sheet fits one month; the popover keeps the default.
|
|
819
|
+
numberOfMonths={presentation === 'bottom-sheet' ? 1 : undefined}
|
|
820
|
+
width={presentation === 'bottom-sheet' ? '100%' : undefined}
|
|
572
821
|
/>
|
|
573
822
|
</div>
|
|
574
823
|
);
|
|
@@ -661,6 +910,7 @@ function EnumListEditor({
|
|
|
661
910
|
// all of them instead of BaseTypeahead's 10-suggestion default, which
|
|
662
911
|
// would silently drop valid choices with no way to reach them.
|
|
663
912
|
maxMenuItems={items.length}
|
|
913
|
+
presentation="popover"
|
|
664
914
|
/>
|
|
665
915
|
);
|
|
666
916
|
}
|
|
@@ -671,14 +921,19 @@ function EntityListEditor({
|
|
|
671
921
|
onChange,
|
|
672
922
|
maxMenuItems,
|
|
673
923
|
isDisabled,
|
|
924
|
+
presentation,
|
|
925
|
+
fieldLabel,
|
|
674
926
|
}: {
|
|
675
927
|
operatorValue: OperatorValue & {type: 'entity_list'};
|
|
676
928
|
filterValue: FilterValue | undefined;
|
|
677
929
|
onChange: (value: FilterValue) => void;
|
|
678
930
|
maxMenuItems?: number;
|
|
679
931
|
isDisabled?: boolean;
|
|
932
|
+
presentation: EditorPresentation;
|
|
933
|
+
fieldLabel?: string;
|
|
680
934
|
}) {
|
|
681
935
|
const t = useComponentTranslator();
|
|
936
|
+
const isSheet = presentation === 'bottom-sheet';
|
|
682
937
|
const source = useMemo<SearchSource<SearchableItem>>(() => {
|
|
683
938
|
if (operatorValue.searchSource) {
|
|
684
939
|
return operatorValue.searchSource;
|
|
@@ -701,9 +956,15 @@ function EntityListEditor({
|
|
|
701
956
|
}));
|
|
702
957
|
}, [filterValue]);
|
|
703
958
|
|
|
959
|
+
// Sheet presentation: the Tokenizer's own sheet, titled with the field
|
|
960
|
+
// label, as for string_list.
|
|
704
961
|
return (
|
|
705
962
|
<Tokenizer
|
|
706
|
-
label={
|
|
963
|
+
label={
|
|
964
|
+
isSheet && fieldLabel != null
|
|
965
|
+
? fieldLabel
|
|
966
|
+
: t('@astryx.powersearch.valueEditor.entities')
|
|
967
|
+
}
|
|
707
968
|
isLabelHidden
|
|
708
969
|
isDisabled={isDisabled}
|
|
709
970
|
searchSource={source}
|
|
@@ -726,6 +987,8 @@ function EntityListEditor({
|
|
|
726
987
|
placeholder={t('@astryx.powersearch.valueEditor.searchPlaceholder')}
|
|
727
988
|
debounceMs={operatorValue.searchSource ? 150 : 0}
|
|
728
989
|
maxMenuItems={maxMenuItems}
|
|
990
|
+
width={isSheet ? '100%' : undefined}
|
|
991
|
+
presentation={isSheet ? 'bottom-sheet' : 'popover'}
|
|
729
992
|
/>
|
|
730
993
|
);
|
|
731
994
|
}
|
|
@@ -771,6 +1034,10 @@ export function PowerSearchValueEditor({
|
|
|
771
1034
|
onEnter,
|
|
772
1035
|
maxMenuItems,
|
|
773
1036
|
isDisabled,
|
|
1037
|
+
onUnstage,
|
|
1038
|
+
presentation = 'popover',
|
|
1039
|
+
fieldLabel,
|
|
1040
|
+
timezoneID,
|
|
774
1041
|
}: PowerSearchValueEditorProps) {
|
|
775
1042
|
switch (operatorValue.type) {
|
|
776
1043
|
case 'empty':
|
|
@@ -780,6 +1047,7 @@ export function PowerSearchValueEditor({
|
|
|
780
1047
|
return (
|
|
781
1048
|
<StringEditor
|
|
782
1049
|
isDisabled={isDisabled}
|
|
1050
|
+
presentation={presentation}
|
|
783
1051
|
operatorValue={operatorValue}
|
|
784
1052
|
filterValue={filterValue}
|
|
785
1053
|
onChange={onChange}
|
|
@@ -792,6 +1060,8 @@ export function PowerSearchValueEditor({
|
|
|
792
1060
|
return (
|
|
793
1061
|
<StringListEditor
|
|
794
1062
|
isDisabled={isDisabled}
|
|
1063
|
+
presentation={presentation}
|
|
1064
|
+
fieldLabel={fieldLabel}
|
|
795
1065
|
operatorValue={operatorValue}
|
|
796
1066
|
filterValue={filterValue}
|
|
797
1067
|
onChange={onChange}
|
|
@@ -803,6 +1073,8 @@ export function PowerSearchValueEditor({
|
|
|
803
1073
|
return (
|
|
804
1074
|
<IntegerEditor
|
|
805
1075
|
isDisabled={isDisabled}
|
|
1076
|
+
presentation={presentation}
|
|
1077
|
+
onUnstage={onUnstage}
|
|
806
1078
|
operatorValue={operatorValue}
|
|
807
1079
|
filterValue={filterValue}
|
|
808
1080
|
onChange={onChange}
|
|
@@ -814,6 +1086,8 @@ export function PowerSearchValueEditor({
|
|
|
814
1086
|
return (
|
|
815
1087
|
<FloatEditor
|
|
816
1088
|
isDisabled={isDisabled}
|
|
1089
|
+
presentation={presentation}
|
|
1090
|
+
onUnstage={onUnstage}
|
|
817
1091
|
operatorValue={operatorValue}
|
|
818
1092
|
filterValue={filterValue}
|
|
819
1093
|
onChange={onChange}
|
|
@@ -825,6 +1099,7 @@ export function PowerSearchValueEditor({
|
|
|
825
1099
|
return (
|
|
826
1100
|
<TimeEditor
|
|
827
1101
|
isDisabled={isDisabled}
|
|
1102
|
+
presentation={presentation}
|
|
828
1103
|
operatorValue={operatorValue}
|
|
829
1104
|
filterValue={filterValue}
|
|
830
1105
|
onChange={onChange}
|
|
@@ -835,9 +1110,11 @@ export function PowerSearchValueEditor({
|
|
|
835
1110
|
return (
|
|
836
1111
|
<DateAbsoluteEditor
|
|
837
1112
|
isDisabled={isDisabled}
|
|
1113
|
+
presentation={presentation}
|
|
838
1114
|
operatorValue={operatorValue}
|
|
839
1115
|
filterValue={filterValue}
|
|
840
1116
|
onChange={onChange}
|
|
1117
|
+
timezoneID={timezoneID}
|
|
841
1118
|
/>
|
|
842
1119
|
);
|
|
843
1120
|
|
|
@@ -855,9 +1132,11 @@ export function PowerSearchValueEditor({
|
|
|
855
1132
|
return (
|
|
856
1133
|
<DateRangeEditor
|
|
857
1134
|
isDisabled={isDisabled}
|
|
1135
|
+
presentation={presentation}
|
|
858
1136
|
operatorValue={operatorValue}
|
|
859
1137
|
filterValue={filterValue}
|
|
860
1138
|
onChange={onChange}
|
|
1139
|
+
timezoneID={timezoneID}
|
|
861
1140
|
/>
|
|
862
1141
|
);
|
|
863
1142
|
|
|
@@ -885,6 +1164,8 @@ export function PowerSearchValueEditor({
|
|
|
885
1164
|
return (
|
|
886
1165
|
<EntityListEditor
|
|
887
1166
|
isDisabled={isDisabled}
|
|
1167
|
+
presentation={presentation}
|
|
1168
|
+
fieldLabel={fieldLabel}
|
|
888
1169
|
operatorValue={operatorValue}
|
|
889
1170
|
filterValue={filterValue}
|
|
890
1171
|
onChange={onChange}
|