@lumx/react 4.17.1-alpha.2 → 4.17.1-alpha.3
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/_internal/_virtual/_rolldown/runtime.js +34 -0
- package/_internal/components/alert-dialog/AlertDialog.d.ts +30 -0
- package/_internal/components/alert-dialog/AlertDialog.js +49 -0
- package/_internal/components/alert-dialog/index.d.ts +1 -0
- package/_internal/components/autocomplete/Autocomplete.d.ts +181 -0
- package/_internal/components/autocomplete/Autocomplete.js +92 -0
- package/_internal/components/autocomplete/AutocompleteMultiple.d.ts +28 -0
- package/_internal/components/autocomplete/AutocompleteMultiple.js +95 -0
- package/_internal/components/autocomplete/index.d.ts +2 -0
- package/_internal/components/avatar/Avatar.d.ts +39 -0
- package/_internal/components/avatar/Avatar.js +46 -0
- package/_internal/components/avatar/index.d.ts +2 -0
- package/_internal/components/badge/Badge.d.ts +24 -0
- package/_internal/components/badge/Badge.js +21 -0
- package/_internal/components/badge/BadgeWrapper.d.ts +16 -0
- package/_internal/components/badge/BadgeWrapper.js +13 -0
- package/_internal/components/badge/index.d.ts +2 -0
- package/_internal/components/button/Button.d.ts +22 -0
- package/_internal/components/button/Button.js +49 -0
- package/_internal/components/button/ButtonGroup.d.ts +17 -0
- package/_internal/components/button/ButtonGroup.js +21 -0
- package/_internal/components/button/ButtonRoot.d.ts +1 -0
- package/_internal/components/button/IconButton.d.ts +30 -0
- package/_internal/components/button/IconButton.js +40 -0
- package/_internal/components/button/index.d.ts +5 -0
- package/_internal/components/checkbox/Checkbox.d.ts +24 -0
- package/_internal/components/checkbox/Checkbox.js +58 -0
- package/_internal/components/checkbox/index.d.ts +1 -0
- package/_internal/components/chip/Chip.d.ts +34 -0
- package/_internal/components/chip/Chip.js +43 -0
- package/_internal/components/chip/ChipGroup.d.ts +20 -0
- package/_internal/components/chip/ChipGroup.js +25 -0
- package/_internal/components/chip/SelectionChipGroup.d.ts +43 -0
- package/_internal/components/chip/SelectionChipGroup.js +78 -0
- package/_internal/components/chip/index.d.ts +3 -0
- package/_internal/components/combobox/ComboboxButton.d.ts +17 -0
- package/_internal/components/combobox/ComboboxButton.js +59 -0
- package/_internal/components/combobox/ComboboxInput.d.ts +19 -0
- package/_internal/components/combobox/ComboboxInput.js +79 -0
- package/_internal/components/combobox/ComboboxList.d.ts +8 -0
- package/_internal/components/combobox/ComboboxList.js +64 -0
- package/_internal/components/combobox/ComboboxOption.d.ts +36 -0
- package/_internal/components/combobox/ComboboxOption.js +76 -0
- package/_internal/components/combobox/ComboboxOptionAction.d.ts +18 -0
- package/_internal/components/combobox/ComboboxOptionAction.js +38 -0
- package/_internal/components/combobox/ComboboxOptionMoreInfo.d.ts +19 -0
- package/_internal/components/combobox/ComboboxOptionMoreInfo.js +49 -0
- package/_internal/components/combobox/ComboboxOptionSkeleton.d.ts +19 -0
- package/_internal/components/combobox/ComboboxOptionSkeleton.js +38 -0
- package/_internal/components/combobox/ComboboxPopover.d.ts +18 -0
- package/_internal/components/combobox/ComboboxPopover.js +32 -0
- package/_internal/components/combobox/ComboboxProvider.d.ts +27 -0
- package/_internal/components/combobox/ComboboxProvider.js +41 -0
- package/_internal/components/combobox/ComboboxSection.d.ts +15 -0
- package/_internal/components/combobox/ComboboxSection.js +47 -0
- package/_internal/components/combobox/ComboboxState.d.ts +14 -0
- package/_internal/components/combobox/ComboboxState.js +70 -0
- package/_internal/components/combobox/context/ComboboxContext.js +15 -0
- package/_internal/components/combobox/context/ComboboxListContext.js +12 -0
- package/_internal/components/combobox/context/ComboboxOptionContext.js +16 -0
- package/_internal/components/combobox/context/useComboboxEvent.d.ts +10 -0
- package/_internal/components/combobox/context/useComboboxEvent.js +17 -0
- package/_internal/components/combobox/context/useComboboxOpen.js +13 -0
- package/_internal/components/combobox/index.d.ts +73 -0
- package/_internal/components/combobox/index.js +47 -0
- package/_internal/components/combobox/wrapRenderOption.js +38 -0
- package/_internal/components/comment-block/CommentBlock.d.ts +68 -0
- package/_internal/components/comment-block/CommentBlock.js +109 -0
- package/_internal/components/comment-block/index.d.ts +1 -0
- package/_internal/components/date-picker/DatePicker.d.ts +14 -0
- package/_internal/components/date-picker/DatePicker.js +45 -0
- package/_internal/components/date-picker/DatePickerControlled.d.ts +26 -0
- package/_internal/components/date-picker/DatePickerControlled.js +177 -0
- package/_internal/components/date-picker/DatePickerField.d.ts +38 -0
- package/_internal/components/date-picker/DatePickerField.js +83 -0
- package/_internal/components/date-picker/constants.js +11 -0
- package/_internal/components/date-picker/index.d.ts +4 -0
- package/_internal/components/date-picker/types.d.ts +30 -0
- package/_internal/components/dialog/Dialog.d.ts +47 -0
- package/_internal/components/dialog/Dialog.js +110 -0
- package/_internal/components/dialog/index.d.ts +2 -0
- package/_internal/components/divider/Divider.d.ts +20 -0
- package/_internal/components/divider/Divider.js +30 -0
- package/_internal/components/divider/index.d.ts +1 -0
- package/_internal/components/drag-handle/DragHandle.d.ts +20 -0
- package/_internal/components/drag-handle/DragHandle.js +29 -0
- package/_internal/components/drag-handle/index.d.ts +1 -0
- package/_internal/components/dropdown/Dropdown.d.ts +89 -0
- package/_internal/components/dropdown/Dropdown.js +89 -0
- package/_internal/components/dropdown/index.d.ts +1 -0
- package/_internal/components/expansion-panel/ExpansionPanel.d.ts +31 -0
- package/_internal/components/expansion-panel/ExpansionPanel.js +80 -0
- package/_internal/components/expansion-panel/index.d.ts +1 -0
- package/_internal/components/flag/Flag.d.ts +20 -0
- package/_internal/components/flag/Flag.js +28 -0
- package/_internal/components/flag/index.d.ts +1 -0
- package/_internal/components/flex-box/FlexBox.d.ts +25 -0
- package/_internal/components/flex-box/FlexBox.js +24 -0
- package/_internal/components/flex-box/index.d.ts +2 -0
- package/_internal/components/generic-block/GenericBlock.d.ts +51 -0
- package/_internal/components/generic-block/GenericBlock.js +90 -0
- package/_internal/components/generic-block/index.d.ts +2 -0
- package/_internal/components/grid/Grid.d.ts +33 -0
- package/_internal/components/grid/Grid.js +48 -0
- package/_internal/components/grid/GridItem.d.ts +29 -0
- package/_internal/components/grid/GridItem.js +37 -0
- package/_internal/components/grid/index.d.ts +2 -0
- package/_internal/components/grid-column/GridColumn.d.ts +24 -0
- package/_internal/components/grid-column/GridColumn.js +27 -0
- package/_internal/components/grid-column/index.d.ts +2 -0
- package/_internal/components/heading/Heading.d.ts +14 -0
- package/_internal/components/heading/Heading.js +25 -0
- package/_internal/components/heading/HeadingLevelProvider.d.ts +15 -0
- package/_internal/components/heading/HeadingLevelProvider.js +22 -0
- package/_internal/components/heading/context.js +6 -0
- package/_internal/components/heading/index.d.ts +3 -0
- package/_internal/components/heading/useHeadingLevel.d.ts +7 -0
- package/_internal/components/heading/useHeadingLevel.js +12 -0
- package/_internal/components/icon/Icon.d.ts +17 -0
- package/_internal/components/icon/Icon.js +24 -0
- package/_internal/components/icon/index.d.ts +2 -0
- package/_internal/components/image-block/ImageBlock.d.ts +29 -0
- package/_internal/components/image-block/ImageBlock.js +30 -0
- package/_internal/components/image-block/ImageCaption.d.ts +13 -0
- package/_internal/components/image-block/ImageCaption.js +18 -0
- package/_internal/components/image-block/index.d.ts +2 -0
- package/_internal/components/image-lightbox/ImageLightbox.d.ts +17 -0
- package/_internal/components/image-lightbox/ImageLightbox.js +66 -0
- package/_internal/components/image-lightbox/constants.js +11 -0
- package/_internal/components/image-lightbox/index.d.ts +2 -0
- package/_internal/components/image-lightbox/internal/ImageSlide.js +81 -0
- package/_internal/components/image-lightbox/internal/ImageSlideshow.js +112 -0
- package/_internal/components/image-lightbox/internal/useAnimateScroll.js +40 -0
- package/_internal/components/image-lightbox/internal/usePointerZoom.js +98 -0
- package/_internal/components/image-lightbox/types.d.ts +33 -0
- package/_internal/components/image-lightbox/useImageLightbox.d.ts +29 -0
- package/_internal/components/image-lightbox/useImageLightbox.js +102 -0
- package/_internal/components/inline-list/InlineList.d.ts +25 -0
- package/_internal/components/inline-list/InlineList.js +24 -0
- package/_internal/components/inline-list/index.d.ts +1 -0
- package/_internal/components/input-helper/InputHelper.d.ts +17 -0
- package/_internal/components/input-helper/InputHelper.js +25 -0
- package/_internal/components/input-helper/index.d.ts +1 -0
- package/_internal/components/input-label/InputLabel.d.ts +17 -0
- package/_internal/components/input-label/InputLabel.js +25 -0
- package/_internal/components/input-label/index.d.ts +1 -0
- package/_internal/components/lightbox/Lightbox.d.ts +33 -0
- package/_internal/components/lightbox/Lightbox.js +69 -0
- package/_internal/components/lightbox/index.d.ts +1 -0
- package/_internal/components/link/Link.d.ts +35 -0
- package/_internal/components/link/Link.js +45 -0
- package/_internal/components/link/index.d.ts +1 -0
- package/_internal/components/link-preview/LinkPreview.d.ts +25 -0
- package/_internal/components/link-preview/LinkPreview.js +31 -0
- package/_internal/components/link-preview/index.d.ts +1 -0
- package/_internal/components/list/List.d.ts +27 -0
- package/_internal/components/list/List.js +28 -0
- package/_internal/components/list/ListDivider.d.ts +21 -0
- package/_internal/components/list/ListDivider.js +22 -0
- package/_internal/components/list/ListItem.d.ts +47 -0
- package/_internal/components/list/ListItem.js +39 -0
- package/_internal/components/list/ListItemAction.js +30 -0
- package/_internal/components/list/ListSection.d.ts +24 -0
- package/_internal/components/list/ListSection.js +26 -0
- package/_internal/components/list/ListSubheader.d.ts +23 -0
- package/_internal/components/list/ListSubheader.js +33 -0
- package/_internal/components/list/index.d.ts +6 -0
- package/_internal/components/menu-button/MenuButton.d.ts +34 -0
- package/_internal/components/menu-button/MenuButton.js +48 -0
- package/_internal/components/menu-button/MenuItem.d.ts +46 -0
- package/_internal/components/menu-button/MenuItem.js +62 -0
- package/_internal/components/menu-button/MenuList.js +39 -0
- package/_internal/components/menu-button/MenuPopover.d.ts +13 -0
- package/_internal/components/menu-button/MenuPopover.js +31 -0
- package/_internal/components/menu-button/MenuProvider.js +45 -0
- package/_internal/components/menu-button/MenuTrigger.js +40 -0
- package/_internal/components/menu-button/context/MenuContext.js +11 -0
- package/_internal/components/menu-button/context/useMenuEvent.js +21 -0
- package/_internal/components/menu-button/context/useMenuOpen.js +15 -0
- package/_internal/components/menu-button/index.d.ts +3 -0
- package/_internal/components/message/Message.d.ts +17 -0
- package/_internal/components/message/Message.js +20 -0
- package/_internal/components/message/index.d.ts +1 -0
- package/_internal/components/mosaic/Mosaic.d.ts +25 -0
- package/_internal/components/mosaic/Mosaic.js +29 -0
- package/_internal/components/mosaic/index.d.ts +1 -0
- package/_internal/components/navigation/Navigation.d.ts +18 -0
- package/_internal/components/navigation/Navigation.js +51 -0
- package/_internal/components/navigation/NavigationItem.d.ts +23 -0
- package/_internal/components/navigation/NavigationItem.js +52 -0
- package/_internal/components/navigation/NavigationSection.d.ts +15 -0
- package/_internal/components/navigation/NavigationSection.js +100 -0
- package/_internal/components/navigation/constants.js +11 -0
- package/_internal/components/navigation/context.js +6 -0
- package/_internal/components/navigation/index.d.ts +1 -0
- package/_internal/components/notification/Notification.d.ts +36 -0
- package/_internal/components/notification/Notification.js +97 -0
- package/_internal/components/notification/constants.js +28 -0
- package/_internal/components/notification/index.d.ts +1 -0
- package/_internal/components/popover/Popover.d.ts +43 -0
- package/_internal/components/popover/Popover.js +86 -0
- package/_internal/components/popover/index.d.ts +3 -0
- package/_internal/components/popover/usePopoverStyle.js +82 -0
- package/_internal/components/popover-dialog/PopoverDialog.d.ts +22 -0
- package/_internal/components/popover-dialog/PopoverDialog.js +42 -0
- package/_internal/components/popover-dialog/index.d.ts +1 -0
- package/_internal/components/post-block/PostBlock.d.ts +44 -0
- package/_internal/components/post-block/PostBlock.js +92 -0
- package/_internal/components/post-block/index.d.ts +1 -0
- package/_internal/components/progress/Progress.d.ts +30 -0
- package/_internal/components/progress/Progress.js +54 -0
- package/_internal/components/progress/ProgressCircular.d.ts +20 -0
- package/_internal/components/progress/ProgressCircular.js +31 -0
- package/_internal/components/progress/ProgressLinear.d.ts +20 -0
- package/_internal/components/progress/ProgressLinear.js +26 -0
- package/_internal/components/progress/index.d.ts +4 -0
- package/_internal/components/progress-tracker/ProgressTracker.d.ts +26 -0
- package/_internal/components/progress-tracker/ProgressTracker.js +75 -0
- package/_internal/components/progress-tracker/ProgressTrackerProvider.d.ts +29 -0
- package/_internal/components/progress-tracker/ProgressTrackerProvider.js +45 -0
- package/_internal/components/progress-tracker/ProgressTrackerStep.d.ts +37 -0
- package/_internal/components/progress-tracker/ProgressTrackerStep.js +107 -0
- package/_internal/components/progress-tracker/ProgressTrackerStepPanel.d.ts +27 -0
- package/_internal/components/progress-tracker/ProgressTrackerStepPanel.js +47 -0
- package/_internal/components/progress-tracker/index.d.ts +4 -0
- package/_internal/components/radio-button/RadioButton.d.ts +23 -0
- package/_internal/components/radio-button/RadioButton.js +50 -0
- package/_internal/components/radio-button/RadioGroup.d.ts +20 -0
- package/_internal/components/radio-button/RadioGroup.js +23 -0
- package/_internal/components/radio-button/index.d.ts +2 -0
- package/_internal/components/select/Select.d.ts +20 -0
- package/_internal/components/select/Select.js +130 -0
- package/_internal/components/select/SelectMultiple.d.ts +24 -0
- package/_internal/components/select/SelectMultiple.js +128 -0
- package/_internal/components/select/WithSelectContext.js +96 -0
- package/_internal/components/select/constants.d.ts +59 -0
- package/_internal/components/select/constants.js +10 -0
- package/_internal/components/select/index.d.ts +3 -0
- package/_internal/components/select-button/SelectButton.d.ts +93 -0
- package/_internal/components/select-button/SelectButton.js +73 -0
- package/_internal/components/select-button/index.d.ts +18 -0
- package/_internal/components/select-button/index.js +11 -0
- package/_internal/components/select-text-field/SelectTextField.d.ts +80 -0
- package/_internal/components/select-text-field/SelectTextField.js +167 -0
- package/_internal/components/select-text-field/index.d.ts +33 -0
- package/_internal/components/select-text-field/index.js +24 -0
- package/_internal/components/side-navigation/SideNavigation.d.ts +22 -0
- package/_internal/components/side-navigation/SideNavigation.js +39 -0
- package/_internal/components/side-navigation/SideNavigationItem.d.ts +44 -0
- package/_internal/components/side-navigation/SideNavigationItem.js +111 -0
- package/_internal/components/side-navigation/index.d.ts +2 -0
- package/_internal/components/skeleton/SkeletonCircle.d.ts +19 -0
- package/_internal/components/skeleton/SkeletonCircle.js +30 -0
- package/_internal/components/skeleton/SkeletonRectangle.d.ts +19 -0
- package/_internal/components/skeleton/SkeletonRectangle.js +33 -0
- package/_internal/components/skeleton/SkeletonTypography.d.ts +19 -0
- package/_internal/components/skeleton/SkeletonTypography.js +31 -0
- package/_internal/components/skeleton/index.d.ts +4 -0
- package/_internal/components/slider/Slider.d.ts +44 -0
- package/_internal/components/slider/Slider.js +232 -0
- package/_internal/components/slider/index.d.ts +2 -0
- package/_internal/components/slideshow/Slides.d.ts +49 -0
- package/_internal/components/slideshow/Slides.js +86 -0
- package/_internal/components/slideshow/Slideshow.d.ts +35 -0
- package/_internal/components/slideshow/Slideshow.js +104 -0
- package/_internal/components/slideshow/SlideshowControls.d.ts +65 -0
- package/_internal/components/slideshow/SlideshowControls.js +139 -0
- package/_internal/components/slideshow/SlideshowItem.d.ts +23 -0
- package/_internal/components/slideshow/SlideshowItem.js +32 -0
- package/_internal/components/slideshow/SlideshowItemGroup.js +44 -0
- package/_internal/components/slideshow/constants.d.ts +13 -0
- package/_internal/components/slideshow/constants.js +16 -0
- package/_internal/components/slideshow/index.d.ts +4 -0
- package/_internal/components/slideshow/usePaginationVisibleRange.js +41 -0
- package/_internal/components/slideshow/useSlideFocusManagement.js +64 -0
- package/_internal/components/slideshow/useSlideScroll.js +57 -0
- package/_internal/components/slideshow/useSwipeNavigate.js +21 -0
- package/_internal/components/switch/Switch.d.ts +24 -0
- package/_internal/components/switch/Switch.js +54 -0
- package/_internal/components/switch/index.d.ts +1 -0
- package/_internal/components/table/Table.d.ts +20 -0
- package/_internal/components/table/Table.js +28 -0
- package/_internal/components/table/TableBody.d.ts +20 -0
- package/_internal/components/table/TableBody.js +22 -0
- package/_internal/components/table/TableCell.d.ts +23 -0
- package/_internal/components/table/TableCell.js +23 -0
- package/_internal/components/table/TableHeader.d.ts +20 -0
- package/_internal/components/table/TableHeader.js +23 -0
- package/_internal/components/table/TableRow.d.ts +23 -0
- package/_internal/components/table/TableRow.js +28 -0
- package/_internal/components/table/index.d.ts +6 -0
- package/_internal/components/tabs/Tab.d.ts +39 -0
- package/_internal/components/tabs/Tab.js +39 -0
- package/_internal/components/tabs/TabList.d.ts +22 -0
- package/_internal/components/tabs/TabList.js +37 -0
- package/_internal/components/tabs/TabPanel.d.ts +25 -0
- package/_internal/components/tabs/TabPanel.js +30 -0
- package/_internal/components/tabs/TabProvider.d.ts +27 -0
- package/_internal/components/tabs/TabProvider.js +51 -0
- package/_internal/components/tabs/index.d.ts +5 -0
- package/_internal/components/tabs/state.js +55 -0
- package/_internal/components/text/Text.d.ts +17 -0
- package/_internal/components/text/Text.js +33 -0
- package/_internal/components/text/index.d.ts +1 -0
- package/_internal/components/text-field/RawInputText.d.ts +20 -0
- package/_internal/components/text-field/RawInputText.js +23 -0
- package/_internal/components/text-field/RawInputTextarea.d.ts +21 -0
- package/_internal/components/text-field/RawInputTextarea.js +34 -0
- package/_internal/components/text-field/TextField.d.ts +46 -0
- package/_internal/components/text-field/TextField.js +122 -0
- package/_internal/components/text-field/index.d.ts +3 -0
- package/_internal/components/text-field/useFitRowsToContent.js +27 -0
- package/_internal/components/thumbnail/Thumbnail.d.ts +31 -0
- package/_internal/components/thumbnail/Thumbnail.js +45 -0
- package/_internal/components/thumbnail/index.d.ts +3 -0
- package/_internal/components/thumbnail/types.d.ts +49 -0
- package/_internal/components/thumbnail/types.js +23 -0
- package/_internal/components/thumbnail/useFocusPointStyle.d.ts +15 -0
- package/_internal/components/thumbnail/useFocusPointStyle.js +53 -0
- package/_internal/components/thumbnail/useImageLoad.js +23 -0
- package/_internal/components/time-picker-field/TimePickerField.d.ts +38 -0
- package/_internal/components/time-picker-field/TimePickerField.js +103 -0
- package/_internal/components/time-picker-field/index.d.ts +2 -0
- package/_internal/components/toolbar/Toolbar.d.ts +28 -0
- package/_internal/components/toolbar/Toolbar.js +21 -0
- package/_internal/components/toolbar/index.d.ts +1 -0
- package/_internal/components/tooltip/Tooltip.d.ts +23 -0
- package/_internal/components/tooltip/Tooltip.js +69 -0
- package/_internal/components/tooltip/context.js +15 -0
- package/_internal/components/tooltip/index.d.ts +2 -0
- package/_internal/components/tooltip/useInjectTooltipRef.js +43 -0
- package/_internal/components/tooltip/useTooltipOpen.js +36 -0
- package/_internal/components/uploader/Uploader.d.ts +29 -0
- package/_internal/components/uploader/Uploader.js +71 -0
- package/_internal/components/uploader/index.d.ts +2 -0
- package/_internal/components/user-block/UserBlock.d.ts +33 -0
- package/_internal/components/user-block/UserBlock.js +88 -0
- package/_internal/components/user-block/index.d.ts +2 -0
- package/_internal/constants.js +2 -0
- package/_internal/hooks/useBooleanState.js +13 -0
- package/_internal/hooks/useCallbackOnEscape.js +30 -0
- package/_internal/hooks/useChipGroupNavigation.d.ts +12 -0
- package/_internal/hooks/useChipGroupNavigation.js +49 -0
- package/_internal/hooks/useClickAway.d.ts +16 -0
- package/_internal/hooks/useClickAway.js +20 -0
- package/_internal/hooks/useDisableBodyScroll.js +25 -0
- package/_internal/hooks/useEventCallback.js +21 -0
- package/_internal/hooks/useFocus.js +19 -0
- package/_internal/hooks/useFocusTrap.js +28 -0
- package/_internal/hooks/useFocusWithin.js +27 -0
- package/_internal/hooks/useId.js +16 -0
- package/_internal/hooks/useImageSize.js +19 -0
- package/_internal/hooks/useInfiniteScroll.js +36 -0
- package/_internal/hooks/useIntersectionObserver.js +24 -0
- package/_internal/hooks/useInterval.js +26 -0
- package/_internal/hooks/useIsomorphicLayoutEffect.js +9 -0
- package/_internal/hooks/useKeyboardListNavigation.d.ts +17 -0
- package/_internal/hooks/useKeyboardListNavigation.js +136 -0
- package/_internal/hooks/useListenFocus.js +23 -0
- package/_internal/hooks/useOverflowTooltipLabel.js +27 -0
- package/_internal/hooks/usePreviousValue.js +15 -0
- package/_internal/hooks/useRestoreFocusOnClose.js +47 -0
- package/_internal/hooks/useRovingTabIndexContainer.js +31 -0
- package/_internal/hooks/useSizeOnWindowResize.js +26 -0
- package/_internal/hooks/useSlideshowControls.d.ts +63 -0
- package/_internal/hooks/useSlideshowControls.js +105 -0
- package/_internal/hooks/useStopPropagation.js +18 -0
- package/_internal/hooks/useTransitionVisibility.js +41 -0
- package/_internal/node_modules/@floating-ui/core/dist/floating-ui.core.js +536 -0
- package/_internal/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +528 -0
- package/_internal/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +209 -0
- package/_internal/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +144 -0
- package/_internal/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +135 -0
- package/_internal/node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js +114 -0
- package/_internal/node_modules/classnames/index.js +45 -0
- package/_internal/packages/lumx-core/src/js/components/AlertDialog/index.d.ts +15 -0
- package/_internal/packages/lumx-core/src/js/components/AlertDialog/index.js +116 -0
- package/_internal/packages/lumx-core/src/js/components/Avatar/index.d.ts +27 -0
- package/_internal/packages/lumx-core/src/js/components/Avatar/index.js +49 -0
- package/_internal/packages/lumx-core/src/js/components/Badge/BadgeWrapper.d.ts +14 -0
- package/_internal/packages/lumx-core/src/js/components/Badge/BadgeWrapper.js +21 -0
- package/_internal/packages/lumx-core/src/js/components/Badge/index.d.ts +18 -0
- package/_internal/packages/lumx-core/src/js/components/Badge/index.js +38 -0
- package/_internal/packages/lumx-core/src/js/components/Button/Button.d.ts +41 -0
- package/_internal/packages/lumx-core/src/js/components/Button/Button.js +46 -0
- package/_internal/packages/lumx-core/src/js/components/Button/ButtonGroup.d.ts +17 -0
- package/_internal/packages/lumx-core/src/js/components/Button/ButtonGroup.js +34 -0
- package/_internal/packages/lumx-core/src/js/components/Button/ButtonRoot.d.ts +46 -0
- package/_internal/packages/lumx-core/src/js/components/Button/ButtonRoot.js +75 -0
- package/_internal/packages/lumx-core/src/js/components/Button/IconButton.d.ts +24 -0
- package/_internal/packages/lumx-core/src/js/components/Button/IconButton.js +46 -0
- package/_internal/packages/lumx-core/src/js/components/Checkbox/index.d.ts +35 -0
- package/_internal/packages/lumx-core/src/js/components/Checkbox/index.js +83 -0
- package/_internal/packages/lumx-core/src/js/components/Chip/ChipGroup.d.ts +21 -0
- package/_internal/packages/lumx-core/src/js/components/Chip/ChipGroup.js +32 -0
- package/_internal/packages/lumx-core/src/js/components/Chip/SelectionChipGroup.d.ts +29 -0
- package/_internal/packages/lumx-core/src/js/components/Chip/SelectionChipGroup.js +66 -0
- package/_internal/packages/lumx-core/src/js/components/Chip/index.d.ts +63 -0
- package/_internal/packages/lumx-core/src/js/components/Chip/index.js +78 -0
- package/_internal/packages/lumx-core/src/js/components/Chip/setupSelectionChipGroupEvents.js +97 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxButton.d.ts +34 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxButton.js +51 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxInput.d.ts +34 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxInput.js +56 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxList.d.ts +36 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxList.js +34 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxOption.d.ts +53 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxOption.js +73 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxOptionAction.js +33 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxOptionMoreInfo.d.ts +29 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxOptionMoreInfo.js +53 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxOptionSkeleton.d.ts +32 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxOptionSkeleton.js +44 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxPopover.js +47 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxSection.d.ts +36 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxSection.js +36 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxState.d.ts +64 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/ComboboxState.js +86 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/constants.js +4 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/setupCombobox.js +350 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/setupComboboxButton.js +84 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/setupComboboxInput.js +95 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/setupListbox.js +84 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/subscribeComboboxState.js +43 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/types.d.ts +59 -0
- package/_internal/packages/lumx-core/src/js/components/Combobox/utils.js +63 -0
- package/_internal/packages/lumx-core/src/js/components/Dialog/index.d.ts +20 -0
- package/_internal/packages/lumx-core/src/js/components/Dialog/index.js +93 -0
- package/_internal/packages/lumx-core/src/js/components/Divider/index.d.ts +13 -0
- package/_internal/packages/lumx-core/src/js/components/Divider/index.js +29 -0
- package/_internal/packages/lumx-core/src/js/components/DragHandle/index.d.ts +13 -0
- package/_internal/packages/lumx-core/src/js/components/DragHandle/index.js +37 -0
- package/_internal/packages/lumx-core/src/js/components/ExpansionPanel/index.d.ts +51 -0
- package/_internal/packages/lumx-core/src/js/components/ExpansionPanel/index.js +92 -0
- package/_internal/packages/lumx-core/src/js/components/Flag/index.d.ts +24 -0
- package/_internal/packages/lumx-core/src/js/components/Flag/index.js +41 -0
- package/_internal/packages/lumx-core/src/js/components/FlexBox/index.d.ts +34 -0
- package/_internal/packages/lumx-core/src/js/components/FlexBox/index.js +39 -0
- package/_internal/packages/lumx-core/src/js/components/FlexBox/types.d.ts +9 -0
- package/_internal/packages/lumx-core/src/js/components/GenericBlock/constants.d.ts +22 -0
- package/_internal/packages/lumx-core/src/js/components/GenericBlock/constants.js +15 -0
- package/_internal/packages/lumx-core/src/js/components/GenericBlock/index.d.ts +66 -0
- package/_internal/packages/lumx-core/src/js/components/GenericBlock/index.js +63 -0
- package/_internal/packages/lumx-core/src/js/components/GridColumn/GridColumn.d.ts +27 -0
- package/_internal/packages/lumx-core/src/js/components/GridColumn/GridColumn.js +44 -0
- package/_internal/packages/lumx-core/src/js/components/GridColumn/index.d.ts +1 -0
- package/_internal/packages/lumx-core/src/js/components/Heading/constants.js +19 -0
- package/_internal/packages/lumx-core/src/js/components/Heading/index.d.ts +14 -0
- package/_internal/packages/lumx-core/src/js/components/Heading/index.js +34 -0
- package/_internal/packages/lumx-core/src/js/components/Heading/utils.js +14 -0
- package/_internal/packages/lumx-core/src/js/components/Icon/constants.d.ts +4 -0
- package/_internal/packages/lumx-core/src/js/components/Icon/index.d.ts +34 -0
- package/_internal/packages/lumx-core/src/js/components/Icon/index.js +66 -0
- package/_internal/packages/lumx-core/src/js/components/ImageBlock/ImageCaption.d.ts +19 -0
- package/_internal/packages/lumx-core/src/js/components/ImageBlock/ImageCaption.js +61 -0
- package/_internal/packages/lumx-core/src/js/components/ImageBlock/index.d.ts +52 -0
- package/_internal/packages/lumx-core/src/js/components/ImageBlock/index.js +80 -0
- package/_internal/packages/lumx-core/src/js/components/InlineList/index.d.ts +34 -0
- package/_internal/packages/lumx-core/src/js/components/InlineList/index.js +48 -0
- package/_internal/packages/lumx-core/src/js/components/InputHelper/constants.js +9 -0
- package/_internal/packages/lumx-core/src/js/components/InputHelper/index.d.ts +21 -0
- package/_internal/packages/lumx-core/src/js/components/InputHelper/index.js +34 -0
- package/_internal/packages/lumx-core/src/js/components/InputLabel/index.d.ts +24 -0
- package/_internal/packages/lumx-core/src/js/components/InputLabel/index.js +31 -0
- package/_internal/packages/lumx-core/src/js/components/Lightbox/index.d.ts +14 -0
- package/_internal/packages/lumx-core/src/js/components/Lightbox/index.js +70 -0
- package/_internal/packages/lumx-core/src/js/components/Link/index.d.ts +34 -0
- package/_internal/packages/lumx-core/src/js/components/Link/index.js +40 -0
- package/_internal/packages/lumx-core/src/js/components/LinkPreview/index.d.ts +36 -0
- package/_internal/packages/lumx-core/src/js/components/LinkPreview/index.js +94 -0
- package/_internal/packages/lumx-core/src/js/components/List/ListDivider.d.ts +12 -0
- package/_internal/packages/lumx-core/src/js/components/List/ListDivider.js +36 -0
- package/_internal/packages/lumx-core/src/js/components/List/ListItem.d.ts +41 -0
- package/_internal/packages/lumx-core/src/js/components/List/ListItem.js +66 -0
- package/_internal/packages/lumx-core/src/js/components/List/ListItemAction.d.ts +10 -0
- package/_internal/packages/lumx-core/src/js/components/List/ListItemAction.js +36 -0
- package/_internal/packages/lumx-core/src/js/components/List/ListSection.d.ts +27 -0
- package/_internal/packages/lumx-core/src/js/components/List/ListSection.js +51 -0
- package/_internal/packages/lumx-core/src/js/components/List/index.d.ts +20 -0
- package/_internal/packages/lumx-core/src/js/components/List/index.js +37 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/MenuButton.d.ts +28 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/MenuButton.js +29 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/MenuItem.d.ts +30 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/MenuItem.js +34 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/MenuList.js +20 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/MenuPopover.d.ts +12 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/MenuPopover.js +32 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/MenuTrigger.js +20 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/setupMenu.js +256 -0
- package/_internal/packages/lumx-core/src/js/components/Menu/utils.js +16 -0
- package/_internal/packages/lumx-core/src/js/components/Message/index.d.ts +31 -0
- package/_internal/packages/lumx-core/src/js/components/Message/index.js +85 -0
- package/_internal/packages/lumx-core/src/js/components/Mosaic/index.d.ts +18 -0
- package/_internal/packages/lumx-core/src/js/components/Mosaic/index.js +70 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/constants.d.ts +39 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/constants.js +37 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/index.d.ts +65 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/index.js +74 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/types.d.ts +39 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/utils/buildPopoverMiddleware.js +53 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/utils/computeArrowStyles.js +13 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/utils/getFloatingPlacement.js +10 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/utils/parseAutoPlacement.js +21 -0
- package/_internal/packages/lumx-core/src/js/components/Popover/utils/parseFitWidth.js +12 -0
- package/_internal/packages/lumx-core/src/js/components/PopoverDialog/index.d.ts +13 -0
- package/_internal/packages/lumx-core/src/js/components/PopoverDialog/index.js +15 -0
- package/_internal/packages/lumx-core/src/js/components/ProgressCircular/index.d.ts +32 -0
- package/_internal/packages/lumx-core/src/js/components/ProgressCircular/index.js +57 -0
- package/_internal/packages/lumx-core/src/js/components/ProgressLinear/index.d.ts +13 -0
- package/_internal/packages/lumx-core/src/js/components/ProgressLinear/index.js +34 -0
- package/_internal/packages/lumx-core/src/js/components/RadioButton/index.d.ts +35 -0
- package/_internal/packages/lumx-core/src/js/components/RadioButton/index.js +71 -0
- package/_internal/packages/lumx-core/src/js/components/RadioGroup/index.d.ts +15 -0
- package/_internal/packages/lumx-core/src/js/components/RadioGroup/index.js +35 -0
- package/_internal/packages/lumx-core/src/js/components/RawClickable/index.d.ts +17 -0
- package/_internal/packages/lumx-core/src/js/components/RawClickable/index.js +34 -0
- package/_internal/packages/lumx-core/src/js/components/SelectButton/index.d.ts +58 -0
- package/_internal/packages/lumx-core/src/js/components/SelectButton/index.js +85 -0
- package/_internal/packages/lumx-core/src/js/components/SelectTextField/index.js +78 -0
- package/_internal/packages/lumx-core/src/js/components/Skeleton/SkeletonCircle.d.ts +18 -0
- package/_internal/packages/lumx-core/src/js/components/Skeleton/SkeletonCircle.js +33 -0
- package/_internal/packages/lumx-core/src/js/components/Skeleton/SkeletonRectangle.d.ts +34 -0
- package/_internal/packages/lumx-core/src/js/components/Skeleton/SkeletonRectangle.js +49 -0
- package/_internal/packages/lumx-core/src/js/components/Skeleton/SkeletonTypography.d.ts +24 -0
- package/_internal/packages/lumx-core/src/js/components/Skeleton/SkeletonTypography.js +38 -0
- package/_internal/packages/lumx-core/src/js/components/Skeleton/index.d.ts +3 -0
- package/_internal/packages/lumx-core/src/js/components/Switch/index.d.ts +37 -0
- package/_internal/packages/lumx-core/src/js/components/Switch/index.js +78 -0
- package/_internal/packages/lumx-core/src/js/components/Table/TableBody.d.ts +15 -0
- package/_internal/packages/lumx-core/src/js/components/Table/TableBody.js +29 -0
- package/_internal/packages/lumx-core/src/js/components/Table/TableCell.d.ts +42 -0
- package/_internal/packages/lumx-core/src/js/components/Table/TableCell.js +101 -0
- package/_internal/packages/lumx-core/src/js/components/Table/TableHeader.d.ts +15 -0
- package/_internal/packages/lumx-core/src/js/components/Table/TableHeader.js +33 -0
- package/_internal/packages/lumx-core/src/js/components/Table/TableRow.d.ts +22 -0
- package/_internal/packages/lumx-core/src/js/components/Table/TableRow.js +42 -0
- package/_internal/packages/lumx-core/src/js/components/Table/constants.d.ts +1 -0
- package/_internal/packages/lumx-core/src/js/components/Table/constants.js +11 -0
- package/_internal/packages/lumx-core/src/js/components/Table/index.d.ts +20 -0
- package/_internal/packages/lumx-core/src/js/components/Table/index.js +31 -0
- package/_internal/packages/lumx-core/src/js/components/Tabs/Tab.d.ts +54 -0
- package/_internal/packages/lumx-core/src/js/components/Tabs/Tab.js +69 -0
- package/_internal/packages/lumx-core/src/js/components/Tabs/TabList.d.ts +27 -0
- package/_internal/packages/lumx-core/src/js/components/Tabs/TabList.js +52 -0
- package/_internal/packages/lumx-core/src/js/components/Tabs/TabPanel.d.ts +26 -0
- package/_internal/packages/lumx-core/src/js/components/Tabs/TabPanel.js +41 -0
- package/_internal/packages/lumx-core/src/js/components/Tabs/constants.js +7 -0
- package/_internal/packages/lumx-core/src/js/components/Tabs/state.js +53 -0
- package/_internal/packages/lumx-core/src/js/components/Text/index.d.ts +55 -0
- package/_internal/packages/lumx-core/src/js/components/Text/index.js +50 -0
- package/_internal/packages/lumx-core/src/js/components/TextField/RawInputText.d.ts +21 -0
- package/_internal/packages/lumx-core/src/js/components/TextField/RawInputText.js +40 -0
- package/_internal/packages/lumx-core/src/js/components/TextField/RawInputTextarea.d.ts +19 -0
- package/_internal/packages/lumx-core/src/js/components/TextField/RawInputTextarea.js +40 -0
- package/_internal/packages/lumx-core/src/js/components/TextField/TextField.d.ts +70 -0
- package/_internal/packages/lumx-core/src/js/components/TextField/TextField.js +143 -0
- package/_internal/packages/lumx-core/src/js/components/TextField/constants.js +15 -0
- package/_internal/packages/lumx-core/src/js/components/Thumbnail/index.d.ts +60 -0
- package/_internal/packages/lumx-core/src/js/components/Thumbnail/index.js +114 -0
- package/_internal/packages/lumx-core/src/js/components/Thumbnail/types.d.ts +39 -0
- package/_internal/packages/lumx-core/src/js/components/Thumbnail/utils.d.ts +1 -0
- package/_internal/packages/lumx-core/src/js/components/Thumbnail/utils.js +76 -0
- package/_internal/packages/lumx-core/src/js/components/TimePickerField/index.d.ts +70 -0
- package/_internal/packages/lumx-core/src/js/components/TimePickerField/index.js +53 -0
- package/_internal/packages/lumx-core/src/js/components/Toolbar/index.d.ts +19 -0
- package/_internal/packages/lumx-core/src/js/components/Toolbar/index.js +51 -0
- package/_internal/packages/lumx-core/src/js/components/Tooltip/constants.d.ts +4 -0
- package/_internal/packages/lumx-core/src/js/components/Tooltip/constants.js +8 -0
- package/_internal/packages/lumx-core/src/js/components/Tooltip/index.d.ts +25 -0
- package/_internal/packages/lumx-core/src/js/components/Tooltip/index.js +55 -0
- package/_internal/packages/lumx-core/src/js/components/Tooltip/tooltipOpenManager.js +93 -0
- package/_internal/packages/lumx-core/src/js/components/Uploader/index.d.ts +59 -0
- package/_internal/packages/lumx-core/src/js/components/Uploader/index.js +79 -0
- package/_internal/packages/lumx-core/src/js/components/UserBlock/index.d.ts +124 -0
- package/_internal/packages/lumx-core/src/js/components/UserBlock/index.js +101 -0
- package/_internal/packages/lumx-core/src/js/constants/browser/index.js +7 -0
- package/_internal/packages/lumx-core/src/js/constants/components/index.js +19 -0
- package/_internal/packages/lumx-core/src/js/constants/enums/index.d.ts +184 -0
- package/_internal/packages/lumx-core/src/js/constants/enums/index.js +140 -0
- package/_internal/packages/lumx-core/src/js/constants/index.d.ts +1 -0
- package/_internal/packages/lumx-core/src/js/types/AriaAttributes.d.ts +32 -0
- package/_internal/packages/lumx-core/src/js/types/Booleanish.d.ts +4 -0
- package/_internal/packages/lumx-core/src/js/types/CommonRef.d.ts +4 -0
- package/_internal/packages/lumx-core/src/js/types/GenericProps.d.ts +14 -0
- package/_internal/packages/lumx-core/src/js/types/HasAriaDisabled.d.ts +9 -0
- package/_internal/packages/lumx-core/src/js/types/HasAriaLabelOrLabelledBy.d.ts +19 -0
- package/_internal/packages/lumx-core/src/js/types/HasChecked.d.ts +9 -0
- package/_internal/packages/lumx-core/src/js/types/HasClassName.d.ts +9 -0
- package/_internal/packages/lumx-core/src/js/types/HasCloseMode.d.ts +10 -0
- package/_internal/packages/lumx-core/src/js/types/HasDisabled.d.ts +9 -0
- package/_internal/packages/lumx-core/src/js/types/HasPolymorphicAs.d.ts +12 -0
- package/_internal/packages/lumx-core/src/js/types/HasRequiredLinkHref.d.ts +6 -0
- package/_internal/packages/lumx-core/src/js/types/HasTheme.d.ts +10 -0
- package/_internal/packages/lumx-core/src/js/types/HeadingElement.d.ts +5 -0
- package/_internal/packages/lumx-core/src/js/types/JSXElement.d.ts +13 -0
- package/_internal/packages/lumx-core/src/js/types/KebabCase.d.ts +5 -0
- package/_internal/packages/lumx-core/src/js/types/LumxClassName.d.ts +7 -0
- package/_internal/packages/lumx-core/src/js/types/Selector.d.ts +11 -0
- package/_internal/packages/lumx-core/src/js/types/TextElement.d.ts +7 -0
- package/_internal/packages/lumx-core/src/js/types/ValueOf.d.ts +5 -0
- package/_internal/packages/lumx-core/src/js/types/index.d.ts +18 -0
- package/_internal/packages/lumx-core/src/js/utils/ClickAway/index.js +37 -0
- package/_internal/packages/lumx-core/src/js/utils/InfiniteScroll/index.d.ts +9 -0
- package/_internal/packages/lumx-core/src/js/utils/InfiniteScroll/index.js +21 -0
- package/_internal/packages/lumx-core/src/js/utils/InfiniteScroll/setupInfiniteScrollObserver.js +18 -0
- package/_internal/packages/lumx-core/src/js/utils/Portal/index.d.ts +28 -0
- package/_internal/packages/lumx-core/src/js/utils/_internal/color/resolveColorWithVariants.js +9 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/createSelectorTreeWalker.js +20 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/css/combineSize.js +14 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/css/resolveCssSize.js +8 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/css/types.d.ts +7 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/isFocusVisible.js +11 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/isHoverNotSupported.js +5 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/isPrintableKey.js +12 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/lastDescendant.js +9 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/querySelectorInclusive.js +18 -0
- package/_internal/packages/lumx-core/src/js/utils/browser/trackContainerFocus.js +28 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/action-area/index.js +22 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/bem/block.js +18 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/bem/element.js +7 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/bem/index.js +22 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/bem/modifier.js +19 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/color/index.js +38 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/index.js +12 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/spacing/index.js +31 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/typography/index.js +10 -0
- package/_internal/packages/lumx-core/src/js/utils/classNames/visually-hidden/index.js +9 -0
- package/_internal/packages/lumx-core/src/js/utils/disabledState/index.js +13 -0
- package/_internal/packages/lumx-core/src/js/utils/events/keyboard.js +15 -0
- package/_internal/packages/lumx-core/src/js/utils/focus/constants.js +13 -0
- package/_internal/packages/lumx-core/src/js/utils/focus/getFirstAndLastFocusable.js +20 -0
- package/_internal/packages/lumx-core/src/js/utils/focus/getFocusableElements.js +8 -0
- package/_internal/packages/lumx-core/src/js/utils/focus/setupFocusTrap.js +83 -0
- package/_internal/packages/lumx-core/src/js/utils/focusNavigation/createActiveItemState.js +38 -0
- package/_internal/packages/lumx-core/src/js/utils/focusNavigation/createGridFocusNavigation.js +182 -0
- package/_internal/packages/lumx-core/src/js/utils/focusNavigation/createListFocusNavigation.js +151 -0
- package/_internal/packages/lumx-core/src/js/utils/focusNavigation/createPendingNavigation.js +23 -0
- package/_internal/packages/lumx-core/src/js/utils/focusNavigation/setupRovingTabIndex.js +167 -0
- package/_internal/packages/lumx-core/src/js/utils/function/listenerTower.js +25 -0
- package/_internal/packages/lumx-core/src/js/utils/iterable/first.js +8 -0
- package/_internal/packages/lumx-core/src/js/utils/locale/getCurrentLocale.js +10 -0
- package/_internal/packages/lumx-core/src/js/utils/select/findOptionById.js +19 -0
- package/_internal/packages/lumx-core/src/js/utils/select/getOptionDisplayName.js +19 -0
- package/_internal/packages/lumx-core/src/js/utils/select/renderSelectOptions.js +51 -0
- package/_internal/packages/lumx-core/src/js/utils/select/toggleSelection.js +39 -0
- package/_internal/packages/lumx-core/src/js/utils/select/types.d.ts +203 -0
- package/_internal/packages/lumx-core/src/js/utils/selectors/getWithSelector.js +9 -0
- package/_internal/packages/lumx-core/src/js/utils/selectors/groupBySelector.js +21 -0
- package/_internal/packages/lumx-core/src/js/utils/time/buildTimeList.d.ts +20 -0
- package/_internal/packages/lumx-core/src/js/utils/time/buildTimeList.js +36 -0
- package/_internal/packages/lumx-core/src/js/utils/time/formatTime.js +14 -0
- package/_internal/packages/lumx-core/src/js/utils/time/getDateAtTime.js +12 -0
- package/_internal/packages/lumx-core/src/js/utils/time/isDateOnTime.js +10 -0
- package/_internal/packages/lumx-core/src/js/utils/time/parseTimeInput.js +46 -0
- package/_internal/packages/lumx-core/src/js/utils/time/snapTimeToBounds.js +21 -0
- package/_internal/packages/lumx-core/src/js/utils/time/timeOfDayMinutes.js +9 -0
- package/_internal/packages/lumx-core/src/js/utils/typeahead/index.js +77 -0
- package/_internal/utils/A11YLiveMessage/index.d.ts +50 -0
- package/_internal/utils/A11YLiveMessage/index.js +28 -0
- package/_internal/utils/ClickAwayProvider/ClickAwayProvider.d.ts +23 -0
- package/_internal/utils/ClickAwayProvider/ClickAwayProvider.js +46 -0
- package/_internal/utils/ClickAwayProvider/index.d.ts +1 -0
- package/_internal/utils/InfiniteScroll/InfiniteScroll.d.ts +10 -0
- package/_internal/utils/InfiniteScroll/InfiniteScroll.js +18 -0
- package/_internal/utils/InfiniteScroll/index.d.ts +2 -0
- package/_internal/utils/Portal/Portal.d.ts +15 -0
- package/_internal/utils/Portal/Portal.js +23 -0
- package/_internal/utils/Portal/PortalProvider.d.ts +14 -0
- package/_internal/utils/Portal/PortalProvider.js +9 -0
- package/_internal/utils/Portal/index.d.ts +3 -0
- package/_internal/utils/browser/DOM/findImage.js +5 -0
- package/_internal/utils/browser/DOM/startViewTransition.js +47 -0
- package/_internal/utils/browser/isReducedMotion.js +8 -0
- package/_internal/utils/browser/isScrollSnapSupported.js +8 -0
- package/_internal/utils/browser/onScrollEnd.js +25 -0
- package/_internal/utils/date/addMonthResetDay.js +12 -0
- package/_internal/utils/date/formatDayNumber.js +8 -0
- package/_internal/utils/date/getFirstDayOfWeek.js +42 -0
- package/_internal/utils/date/getMonthCalendar.js +43 -0
- package/_internal/utils/date/getWeekDays.js +25 -0
- package/_internal/utils/date/getYearDisplayName.js +12 -0
- package/_internal/utils/date/isDateValid.js +7 -0
- package/_internal/utils/date/isSameDay.js +8 -0
- package/_internal/utils/disabled/DisabledStateContext.d.ts +21 -0
- package/_internal/utils/disabled/DisabledStateContext.js +22 -0
- package/_internal/utils/disabled/index.d.ts +1 -0
- package/_internal/utils/disabled/useDisableStateProps.d.ts +1 -0
- package/_internal/utils/disabled/useDisableStateProps.js +29 -0
- package/_internal/utils/locale/parseLocale.js +26 -0
- package/_internal/utils/moving-focus/components/MovingFocusProvider/context.d.ts +14 -0
- package/_internal/utils/moving-focus/components/MovingFocusProvider/context.js +10 -0
- package/_internal/utils/moving-focus/components/MovingFocusProvider/index.d.ts +21 -0
- package/_internal/utils/moving-focus/components/MovingFocusProvider/index.js +58 -0
- package/_internal/utils/moving-focus/constants.d.ts +19 -0
- package/_internal/utils/moving-focus/constants.js +25 -0
- package/_internal/utils/moving-focus/ducks/keyboard-navigation.js +453 -0
- package/_internal/utils/moving-focus/ducks/slice.js +50 -0
- package/_internal/utils/moving-focus/ducks/tab-stop.js +109 -0
- package/_internal/utils/moving-focus/hooks/useRovingTabIndex/index.d.ts +1 -0
- package/_internal/utils/moving-focus/hooks/useRovingTabIndex/useRovingTabIndex.d.ts +19 -0
- package/_internal/utils/moving-focus/hooks/useRovingTabIndex/useRovingTabIndex.js +81 -0
- package/_internal/utils/moving-focus/hooks/useVirtualFocus/index.d.ts +2 -0
- package/_internal/utils/moving-focus/hooks/useVirtualFocus/useVirtualFocus.d.ts +15 -0
- package/_internal/utils/moving-focus/hooks/useVirtualFocus/useVirtualFocus.js +83 -0
- package/_internal/utils/moving-focus/hooks/useVirtualFocus/useVirtualFocusParent.d.ts +10 -0
- package/_internal/utils/moving-focus/hooks/useVirtualFocus/useVirtualFocusParent.js +47 -0
- package/_internal/utils/moving-focus/index.d.ts +5 -0
- package/_internal/utils/moving-focus/types.d.ts +177 -0
- package/_internal/utils/moving-focus/utils/buildLoopAroundObject.js +22 -0
- package/_internal/utils/moving-focus/utils/createGridMap.js +17 -0
- package/_internal/utils/moving-focus/utils/getCell.js +94 -0
- package/_internal/utils/moving-focus/utils/getCellCoordinates.js +16 -0
- package/_internal/utils/moving-focus/utils/getPointerTypeFromEvent.js +11 -0
- package/_internal/utils/moving-focus/utils/shouldLoopListHorizontally.js +7 -0
- package/_internal/utils/moving-focus/utils/shouldLoopListVertically.js +7 -0
- package/_internal/utils/moving-focus/utils/tabStopIsEnabled.js +5 -0
- package/_internal/utils/number/clamp.d.ts +12 -0
- package/_internal/utils/number/clamp.js +16 -0
- package/_internal/utils/object/isEqual.js +14 -0
- package/_internal/utils/partitionMulti.js +24 -0
- package/_internal/utils/react/OnBeforeUnmount.js +17 -0
- package/_internal/utils/react/forwardRef.js +8 -0
- package/_internal/utils/react/forwardRefPolymorphic.js +6 -0
- package/_internal/utils/react/mergeRefs.js +22 -0
- package/_internal/utils/react/skipRender.js +19 -0
- package/_internal/utils/react/unref.js +8 -0
- package/_internal/utils/react/wrapChildrenIconWithSpaces.js +19 -0
- package/_internal/utils/theme/ThemeContext.d.ts +14 -0
- package/_internal/utils/theme/ThemeContext.js +11 -0
- package/_internal/utils/type/Comp.d.ts +15 -0
- package/_internal/utils/type/ComponentRef.d.ts +15 -0
- package/_internal/utils/type/HasPolymorphicAs.d.ts +9 -0
- package/_internal/utils/type/MaybeElementOrRef.d.ts +9 -0
- package/_internal/utils/type/ReactToJSX.d.ts +13 -0
- package/_internal/utils/type/index.d.ts +15 -0
- package/_internal/utils/type/isComponent.d.ts +13 -0
- package/_internal/utils/type/isComponent.js +27 -0
- package/_internal/utils/type/isComponentType.d.ts +9 -0
- package/_internal/utils/type/isComponentType.js +8 -0
- package/index.d.ts +150 -5788
- package/index.js +247 -22493
- package/package.json +8 -21
- package/utils/index.d.ts +14 -413
- package/utils/index.js +12 -1440
- package/_internal/BvaFEHZn.js +0 -262
- package/_internal/BvaFEHZn.js.map +0 -1
- package/index.js.map +0 -1
- package/utils/index.js.map +0 -1
package/_internal/packages/lumx-core/src/js/utils/focusNavigation/createGridFocusNavigation.js
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { createSelectorTreeWalker } from "../browser/createSelectorTreeWalker.js";
|
|
2
|
+
import { createPendingNavigation } from "./createPendingNavigation.js";
|
|
3
|
+
import { createActiveItemState } from "./createActiveItemState.js";
|
|
4
|
+
import { lastDescendant } from "../browser/lastDescendant.js";
|
|
5
|
+
import { first } from "../iterable/first.js";
|
|
6
|
+
//#region ../lumx-core/src/js/utils/focusNavigation/createGridFocusNavigation.ts
|
|
7
|
+
/**
|
|
8
|
+
* Create a focus navigation controller for a 2D grid.
|
|
9
|
+
*
|
|
10
|
+
* Resolves rows and cells by querying the DOM and commits focus by updating the
|
|
11
|
+
* active-item state (which fires {@link FocusNavigationCallbacks}).
|
|
12
|
+
*
|
|
13
|
+
* Supports Up/Down between rows (with column memory) and Left/Right between cells
|
|
14
|
+
* (with wrapping across rows).
|
|
15
|
+
*
|
|
16
|
+
* @param options Grid navigation options (container, rowSelector, cellSelector, wrap).
|
|
17
|
+
* @param callbacks Callbacks for focus state changes.
|
|
18
|
+
* @param signal AbortSignal for cleanup.
|
|
19
|
+
* @returns FocusNavigationController instance.
|
|
20
|
+
*/
|
|
21
|
+
function createGridFocusNavigation(options, callbacks, signal) {
|
|
22
|
+
const { container, rowSelector, cellSelector, wrap = false } = options;
|
|
23
|
+
const state = createActiveItemState(callbacks, signal);
|
|
24
|
+
const isNavigableRow = (row) => row.querySelector(cellSelector) !== null;
|
|
25
|
+
const getFirstCell = (row) => row.querySelector(cellSelector);
|
|
26
|
+
const getRowCells = (row) => Array.from(row.querySelectorAll(cellSelector));
|
|
27
|
+
/** Lazily walk navigable rows from `start` in a `direction`, projecting each row through `dive`. */
|
|
28
|
+
function* findRows(start = "first", direction = "next", dive) {
|
|
29
|
+
const walker = createSelectorTreeWalker(container, rowSelector);
|
|
30
|
+
if (start instanceof HTMLElement) walker.currentNode = start;
|
|
31
|
+
else if (start === "last") walker.currentNode = lastDescendant(container);
|
|
32
|
+
let node;
|
|
33
|
+
do {
|
|
34
|
+
node = direction === "next" ? walker.nextNode() : walker.previousNode();
|
|
35
|
+
if (node && isNavigableRow(node)) {
|
|
36
|
+
const result = dive ? dive(node) : node;
|
|
37
|
+
if (result) yield result;
|
|
38
|
+
}
|
|
39
|
+
} while (node);
|
|
40
|
+
}
|
|
41
|
+
const findFirstVisibleRow = () => first(findRows());
|
|
42
|
+
const findLastVisibleRow = () => first(findRows("last", "prev"));
|
|
43
|
+
function findParentRow(cell) {
|
|
44
|
+
const row = cell.closest(rowSelector);
|
|
45
|
+
return row && container.contains(row) ? row : null;
|
|
46
|
+
}
|
|
47
|
+
/** Deferred navigation intent (replayed once cells are committed to the DOM). */
|
|
48
|
+
const pending = createPendingNavigation(signal);
|
|
49
|
+
/** Remembered column index for Up/Down navigation (column memory). */
|
|
50
|
+
let rememberedCol = 0;
|
|
51
|
+
/** Activate the cell at the given column in a row element. */
|
|
52
|
+
function focusCellInRow(row, col) {
|
|
53
|
+
const cells = getRowCells(row);
|
|
54
|
+
if (cells.length === 0) return false;
|
|
55
|
+
const clampedCol = Math.min(col, cells.length - 1);
|
|
56
|
+
state.setActive(cells[clampedCol]);
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
/** Activate the given cell (validates it is in the grid, updates column memory). */
|
|
60
|
+
function activateCell(item) {
|
|
61
|
+
const row = findParentRow(item);
|
|
62
|
+
if (!row) return false;
|
|
63
|
+
const col = getRowCells(row).indexOf(item);
|
|
64
|
+
if (col === -1) return false;
|
|
65
|
+
rememberedCol = col;
|
|
66
|
+
state.setActive(item);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
/** Got to first cell in first row */
|
|
70
|
+
function goToFirst() {
|
|
71
|
+
const row = findFirstVisibleRow();
|
|
72
|
+
if (!row) return false;
|
|
73
|
+
rememberedCol = 0;
|
|
74
|
+
return focusCellInRow(row, 0);
|
|
75
|
+
}
|
|
76
|
+
/** Got to first cell in last row */
|
|
77
|
+
function goToLast() {
|
|
78
|
+
const row = findLastVisibleRow();
|
|
79
|
+
if (!row) return false;
|
|
80
|
+
rememberedCol = 0;
|
|
81
|
+
return focusCellInRow(row, 0);
|
|
82
|
+
}
|
|
83
|
+
/** Navigate horizontally (left or right) within cells, wrapping across rows. */
|
|
84
|
+
function goHorizontal(step) {
|
|
85
|
+
if (!state.active) return false;
|
|
86
|
+
const currentRow = findParentRow(state.active);
|
|
87
|
+
if (!currentRow) return false;
|
|
88
|
+
const cells = getRowCells(currentRow);
|
|
89
|
+
const col = cells.indexOf(state.active);
|
|
90
|
+
if (col === -1) return false;
|
|
91
|
+
const nextCol = col + step;
|
|
92
|
+
if (nextCol >= 0 && nextCol < cells.length) {
|
|
93
|
+
rememberedCol = nextCol;
|
|
94
|
+
state.setActive(cells[nextCol]);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
if (!wrap) return false;
|
|
98
|
+
const targetRow = first(findRows(currentRow, step > 0 ? "next" : "prev")) ?? (step > 0 ? findFirstVisibleRow() : findLastVisibleRow());
|
|
99
|
+
if (!targetRow) return false;
|
|
100
|
+
const targetCells = getRowCells(targetRow);
|
|
101
|
+
if (targetCells.length === 0) return false;
|
|
102
|
+
const targetCol = step > 0 ? 0 : targetCells.length - 1;
|
|
103
|
+
rememberedCol = targetCol;
|
|
104
|
+
state.setActive(targetCells[targetCol]);
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
/** Navigate vertically (up or down) between rows with column memory. */
|
|
108
|
+
function goVertical(direction) {
|
|
109
|
+
if (!state.active) return direction === "next" ? goToFirst() : goToLast();
|
|
110
|
+
const currentRow = findParentRow(state.active);
|
|
111
|
+
if (!currentRow) return false;
|
|
112
|
+
const adjacentRow = first(findRows(currentRow, direction));
|
|
113
|
+
if (adjacentRow) return focusCellInRow(adjacentRow, rememberedCol);
|
|
114
|
+
if (wrap) {
|
|
115
|
+
const wrapRow = direction === "next" ? findFirstVisibleRow() : findLastVisibleRow();
|
|
116
|
+
if (wrapRow) return focusCellInRow(wrapRow, rememberedCol);
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
const selectors = {
|
|
121
|
+
get activeItem() {
|
|
122
|
+
return state.active;
|
|
123
|
+
},
|
|
124
|
+
get hasNavigableItems() {
|
|
125
|
+
return first(findRows()) !== null;
|
|
126
|
+
},
|
|
127
|
+
getFirst: () => first(findRows("first", "next", getFirstCell)),
|
|
128
|
+
getLast: () => first(findRows("last", "prev", getFirstCell)),
|
|
129
|
+
getMatching: (predicate) => first(findRows("first", "next", (row) => getRowCells(row).find(predicate)))
|
|
130
|
+
};
|
|
131
|
+
return {
|
|
132
|
+
type: "grid",
|
|
133
|
+
selectors,
|
|
134
|
+
goToOffset(offset) {
|
|
135
|
+
if (offset === 0) return state.active !== null;
|
|
136
|
+
const visibleRows = Array.from(findRows());
|
|
137
|
+
if (visibleRows.length === 0) return false;
|
|
138
|
+
if (!state.active) {
|
|
139
|
+
const startIdx = offset > 0 ? 0 : visibleRows.length - 1;
|
|
140
|
+
const remainingOffset = offset > 0 ? offset - 1 : offset + 1;
|
|
141
|
+
return focusCellInRow(visibleRows[Math.max(0, Math.min(startIdx + remainingOffset, visibleRows.length - 1))], rememberedCol);
|
|
142
|
+
}
|
|
143
|
+
const currentRow = findParentRow(state.active);
|
|
144
|
+
if (!currentRow) return false;
|
|
145
|
+
const rowIdx = visibleRows.indexOf(currentRow);
|
|
146
|
+
if (rowIdx === -1) return false;
|
|
147
|
+
const targetIdx = Math.max(0, Math.min(rowIdx + offset, visibleRows.length - 1));
|
|
148
|
+
if (targetIdx === rowIdx) return false;
|
|
149
|
+
return focusCellInRow(visibleRows[targetIdx], rememberedCol);
|
|
150
|
+
},
|
|
151
|
+
clear() {
|
|
152
|
+
state.clear();
|
|
153
|
+
pending.clear();
|
|
154
|
+
},
|
|
155
|
+
goTo(resolve) {
|
|
156
|
+
const target = resolve(selectors);
|
|
157
|
+
if (target && activateCell(target)) {
|
|
158
|
+
pending.clear();
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
pending.defer(() => this.goTo(resolve));
|
|
162
|
+
return false;
|
|
163
|
+
},
|
|
164
|
+
flushPendingNavigation() {
|
|
165
|
+
pending.flush();
|
|
166
|
+
},
|
|
167
|
+
goUp() {
|
|
168
|
+
return goVertical("prev");
|
|
169
|
+
},
|
|
170
|
+
goDown() {
|
|
171
|
+
return goVertical("next");
|
|
172
|
+
},
|
|
173
|
+
goLeft() {
|
|
174
|
+
return goHorizontal(-1);
|
|
175
|
+
},
|
|
176
|
+
goRight() {
|
|
177
|
+
return goHorizontal(1);
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//#endregion
|
|
182
|
+
export { createGridFocusNavigation };
|
package/_internal/packages/lumx-core/src/js/utils/focusNavigation/createListFocusNavigation.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { createSelectorTreeWalker } from "../browser/createSelectorTreeWalker.js";
|
|
2
|
+
import { createPendingNavigation } from "./createPendingNavigation.js";
|
|
3
|
+
//#region ../lumx-core/src/js/utils/focusNavigation/createListFocusNavigation.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create a focus navigation controller for a 1D list.
|
|
6
|
+
*
|
|
7
|
+
* This controller is **stateless** — it does not maintain an internal reference to
|
|
8
|
+
* the active item. Instead it reads the active item from the DOM each time via the
|
|
9
|
+
* `getActiveItem` callback provided in the options. This avoids any desync between
|
|
10
|
+
* the controller's internal state and the actual DOM.
|
|
11
|
+
*
|
|
12
|
+
* @param options List navigation options (container, itemSelector, direction, wrap, getActiveItem).
|
|
13
|
+
* @param callbacks Callbacks for focus state changes.
|
|
14
|
+
* @param signal AbortSignal for cleanup.
|
|
15
|
+
* @returns ListFocusNavigationController instance.
|
|
16
|
+
*/
|
|
17
|
+
function createListFocusNavigation(options, callbacks, signal) {
|
|
18
|
+
const { container, itemSelector, direction = "vertical", wrap = false, itemDisabledSelector, getActiveItem = () => null } = options;
|
|
19
|
+
/** Combined CSS selector matching enabled (non-disabled) items. */
|
|
20
|
+
const enabledItemSelector = itemDisabledSelector ? `${itemSelector}:not(${itemDisabledSelector})` : itemSelector;
|
|
21
|
+
/** Create a TreeWalker over items in the container. */
|
|
22
|
+
function createItemWalker(enabledOnly = true) {
|
|
23
|
+
return createSelectorTreeWalker(container, enabledOnly ? enabledItemSelector : itemSelector);
|
|
24
|
+
}
|
|
25
|
+
/** Find the first enabled item in the container. */
|
|
26
|
+
function findFirstEnabled() {
|
|
27
|
+
return container.querySelector(enabledItemSelector);
|
|
28
|
+
}
|
|
29
|
+
/** Find the last enabled item in the container. */
|
|
30
|
+
function findLastEnabled() {
|
|
31
|
+
const items = container.querySelectorAll(enabledItemSelector);
|
|
32
|
+
return items.length > 0 ? items[items.length - 1] : null;
|
|
33
|
+
}
|
|
34
|
+
const pending = createPendingNavigation(signal);
|
|
35
|
+
/** Find item at offset (lazily walk nodes) */
|
|
36
|
+
function findAtOffset(offset) {
|
|
37
|
+
const forward = offset > 0;
|
|
38
|
+
const stepsNeeded = Math.abs(offset);
|
|
39
|
+
const active = getActiveItem();
|
|
40
|
+
const walker = createItemWalker();
|
|
41
|
+
const step = forward ? () => walker.nextNode() : () => walker.previousNode();
|
|
42
|
+
let target = null;
|
|
43
|
+
let remaining = stepsNeeded;
|
|
44
|
+
if (active) walker.currentNode = active;
|
|
45
|
+
else if (!forward) {
|
|
46
|
+
target = walker.lastChild();
|
|
47
|
+
if (!target) return null;
|
|
48
|
+
remaining -= 1;
|
|
49
|
+
}
|
|
50
|
+
for (let i = 0; i < remaining; i++) {
|
|
51
|
+
const next = step();
|
|
52
|
+
if (next) target = next;
|
|
53
|
+
else if (active && wrap) {
|
|
54
|
+
const wrapped = forward ? findFirstEnabled() : findLastEnabled();
|
|
55
|
+
if (!wrapped || wrapped === active) break;
|
|
56
|
+
target = wrapped;
|
|
57
|
+
walker.currentNode = wrapped;
|
|
58
|
+
} else break;
|
|
59
|
+
}
|
|
60
|
+
return target;
|
|
61
|
+
}
|
|
62
|
+
function findMatching(predicate) {
|
|
63
|
+
const walker = createItemWalker(false);
|
|
64
|
+
let node = walker.nextNode();
|
|
65
|
+
while (node) {
|
|
66
|
+
if (predicate(node)) return node;
|
|
67
|
+
node = walker.nextNode();
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
/** Clear the active item and discard any pending navigation intent. */
|
|
72
|
+
function clear() {
|
|
73
|
+
const current = getActiveItem();
|
|
74
|
+
if (current) callbacks.onDeactivate(current);
|
|
75
|
+
pending.clear();
|
|
76
|
+
callbacks.onClear?.();
|
|
77
|
+
}
|
|
78
|
+
signal.addEventListener("abort", clear);
|
|
79
|
+
const selectors = {
|
|
80
|
+
enabledItemSelector,
|
|
81
|
+
get activeItem() {
|
|
82
|
+
return getActiveItem();
|
|
83
|
+
},
|
|
84
|
+
get hasNavigableItems() {
|
|
85
|
+
return container.querySelector(enabledItemSelector) !== null;
|
|
86
|
+
},
|
|
87
|
+
getFirst: findFirstEnabled,
|
|
88
|
+
getLast: findLastEnabled,
|
|
89
|
+
getMatching: findMatching,
|
|
90
|
+
findNearestEnabled(anchor) {
|
|
91
|
+
if (!container.contains(anchor)) return findFirstEnabled();
|
|
92
|
+
if (anchor instanceof HTMLElement && anchor.matches(enabledItemSelector)) return anchor;
|
|
93
|
+
const walker = createItemWalker();
|
|
94
|
+
walker.currentNode = anchor;
|
|
95
|
+
const next = walker.nextNode();
|
|
96
|
+
if (next instanceof HTMLElement) return next;
|
|
97
|
+
walker.currentNode = anchor;
|
|
98
|
+
return walker.previousNode();
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Navigate via a resolver. The resolver receives the selectors to find the target.
|
|
103
|
+
* If the target is valid, focus is committed (deactivate current, activate target).
|
|
104
|
+
* If the target is not resolvable yet, the intent is deferred for later replay.
|
|
105
|
+
*/
|
|
106
|
+
function goTo(resolve) {
|
|
107
|
+
const target = resolve(selectors);
|
|
108
|
+
if (target && target.matches(itemSelector) && container.contains(target)) {
|
|
109
|
+
const current = getActiveItem();
|
|
110
|
+
if (current !== target) {
|
|
111
|
+
if (current) callbacks.onDeactivate(current);
|
|
112
|
+
callbacks.onActivate(target);
|
|
113
|
+
}
|
|
114
|
+
pending.clear();
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
pending.defer(() => goTo(resolve));
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
/** Go to the item at the given offset from the active item. */
|
|
121
|
+
function goToOffset(offset) {
|
|
122
|
+
if (offset === 0) return getActiveItem() !== null;
|
|
123
|
+
const target = findAtOffset(offset);
|
|
124
|
+
if (!target) return false;
|
|
125
|
+
return goTo(() => target);
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
type: "list",
|
|
129
|
+
selectors,
|
|
130
|
+
goToOffset,
|
|
131
|
+
clear,
|
|
132
|
+
goTo,
|
|
133
|
+
flushPendingNavigation() {
|
|
134
|
+
pending.flush();
|
|
135
|
+
},
|
|
136
|
+
goUp() {
|
|
137
|
+
return direction === "vertical" ? goToOffset(-1) : false;
|
|
138
|
+
},
|
|
139
|
+
goDown() {
|
|
140
|
+
return direction === "vertical" ? goToOffset(1) : false;
|
|
141
|
+
},
|
|
142
|
+
goLeft() {
|
|
143
|
+
return direction === "horizontal" ? goToOffset(-1) : false;
|
|
144
|
+
},
|
|
145
|
+
goRight() {
|
|
146
|
+
return direction === "horizontal" ? goToOffset(1) : false;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//#endregion
|
|
151
|
+
export { createListFocusNavigation };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region ../lumx-core/src/js/utils/focusNavigation/createPendingNavigation.ts
|
|
2
|
+
/** Create a pending navigation store; discards intent on abort. */
|
|
3
|
+
function createPendingNavigation(signal) {
|
|
4
|
+
let pending = null;
|
|
5
|
+
const clear = () => {
|
|
6
|
+
pending = null;
|
|
7
|
+
};
|
|
8
|
+
signal.addEventListener("abort", clear);
|
|
9
|
+
return {
|
|
10
|
+
get hasPending() {
|
|
11
|
+
return pending !== null;
|
|
12
|
+
},
|
|
13
|
+
defer(navigate) {
|
|
14
|
+
pending = navigate;
|
|
15
|
+
},
|
|
16
|
+
flush() {
|
|
17
|
+
if (pending?.()) pending = null;
|
|
18
|
+
},
|
|
19
|
+
clear
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { createPendingNavigation };
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { createListFocusNavigation } from "./createListFocusNavigation.js";
|
|
2
|
+
import { querySelectorInclusive } from "../browser/querySelectorInclusive.js";
|
|
3
|
+
import { trackContainerFocus } from "../browser/trackContainerFocus.js";
|
|
4
|
+
//#region ../lumx-core/src/js/utils/focusNavigation/setupRovingTabIndex.ts
|
|
5
|
+
/**
|
|
6
|
+
* Set up the roving tabindex pattern on a container element.
|
|
7
|
+
*
|
|
8
|
+
* - Keyboard navigation (Arrow keys, Home, End)
|
|
9
|
+
* - tabindex management (`0` on active, `-1` on others)
|
|
10
|
+
* - Mount normalization (single-tabstop invariant)
|
|
11
|
+
* - DOM mutation handling via MutationObserver:
|
|
12
|
+
* removal recovery, insertion normalization, disabled-state changes
|
|
13
|
+
*
|
|
14
|
+
* Torn down when `signal` is aborted.
|
|
15
|
+
*/
|
|
16
|
+
function setupRovingTabIndex(options, signal) {
|
|
17
|
+
const { container, itemSelector, direction = "horizontal", itemDisabledSelector, itemSelectedAttr = "aria-selected", onItemFocused } = options;
|
|
18
|
+
const itemActiveSelector = `${itemSelector}[tabindex="0"]`;
|
|
19
|
+
let itemSelectedSelector = `${itemSelector}[${itemSelectedAttr}=true]`;
|
|
20
|
+
if (itemDisabledSelector) itemSelectedSelector += `:not(${itemDisabledSelector})`;
|
|
21
|
+
const containerFocus = trackContainerFocus(container, signal);
|
|
22
|
+
const nav = createListFocusNavigation({
|
|
23
|
+
type: "list",
|
|
24
|
+
container,
|
|
25
|
+
itemSelector,
|
|
26
|
+
direction,
|
|
27
|
+
wrap: true,
|
|
28
|
+
itemDisabledSelector,
|
|
29
|
+
getActiveItem: () => container.querySelector(itemActiveSelector)
|
|
30
|
+
}, {
|
|
31
|
+
onActivate(item) {
|
|
32
|
+
item.setAttribute("tabindex", "0");
|
|
33
|
+
item.focus();
|
|
34
|
+
onItemFocused?.(item);
|
|
35
|
+
},
|
|
36
|
+
onDeactivate(item) {
|
|
37
|
+
item.setAttribute("tabindex", "-1");
|
|
38
|
+
}
|
|
39
|
+
}, signal);
|
|
40
|
+
/** Set tabindex only when the value actually changes to avoid unnecessary DOM mutations. */
|
|
41
|
+
function setTabIndex(item, value) {
|
|
42
|
+
if (item.getAttribute("tabindex") !== value) item.setAttribute("tabindex", value);
|
|
43
|
+
}
|
|
44
|
+
/** Assign tabindex across `items`, ensuring at most one `tabindex="0"` */
|
|
45
|
+
function normalizeItems(items, hasExistingTabStop) {
|
|
46
|
+
let hasTabStop = hasExistingTabStop;
|
|
47
|
+
for (const item of items) {
|
|
48
|
+
if (!container.contains(item)) continue;
|
|
49
|
+
if (!(itemDisabledSelector ? item.matches(itemDisabledSelector) : false) && !hasTabStop) {
|
|
50
|
+
setTabIndex(item, "0");
|
|
51
|
+
hasTabStop = true;
|
|
52
|
+
} else setTabIndex(item, "-1");
|
|
53
|
+
}
|
|
54
|
+
if (!hasTabStop) {
|
|
55
|
+
const fallback = container.querySelector(nav.selectors.enabledItemSelector);
|
|
56
|
+
if (fallback) setTabIndex(fallback, "0");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** Enforce the single-tabstop invariant across all items. */
|
|
60
|
+
function normalizeAllItems() {
|
|
61
|
+
const items = Array.from(container.querySelectorAll(itemSelector));
|
|
62
|
+
const { activeItem } = nav.selectors;
|
|
63
|
+
let preferredTabStopIndex = activeItem && items.indexOf(activeItem);
|
|
64
|
+
if (!preferredTabStopIndex || preferredTabStopIndex === -1) preferredTabStopIndex = items.findIndex((item) => item.matches(itemSelectedSelector));
|
|
65
|
+
if (preferredTabStopIndex && preferredTabStopIndex > 0) {
|
|
66
|
+
const [preferredItem] = items.splice(preferredTabStopIndex, 1);
|
|
67
|
+
items.unshift(preferredItem);
|
|
68
|
+
}
|
|
69
|
+
normalizeItems(items, false);
|
|
70
|
+
}
|
|
71
|
+
/** Ensure a tab stop exists; find a fallback near `anchor` and optionally move focus to it. */
|
|
72
|
+
function ensureTabStop(shouldFocus, anchor) {
|
|
73
|
+
if (container.querySelector(itemActiveSelector)) return;
|
|
74
|
+
const fallback = (anchor && nav.selectors.findNearestEnabled(anchor)) ?? container.querySelector(nav.selectors.enabledItemSelector);
|
|
75
|
+
if (!fallback) return;
|
|
76
|
+
if (shouldFocus) nav.goTo(() => fallback);
|
|
77
|
+
else setTabIndex(fallback, "0");
|
|
78
|
+
}
|
|
79
|
+
normalizeAllItems();
|
|
80
|
+
const observer = new MutationObserver((mutations) => {
|
|
81
|
+
let removedActiveItem = null;
|
|
82
|
+
let removalAnchor = null;
|
|
83
|
+
let newSelectedItem = null;
|
|
84
|
+
const disabledTargets = [];
|
|
85
|
+
const insertedItems = [];
|
|
86
|
+
for (const mutation of mutations) {
|
|
87
|
+
if (mutation.type === "childList") {
|
|
88
|
+
if (!removedActiveItem) for (const removedNode of mutation.removedNodes) {
|
|
89
|
+
const { value: firstMatch } = querySelectorInclusive(removedNode, itemActiveSelector).next();
|
|
90
|
+
if (firstMatch) {
|
|
91
|
+
removedActiveItem = firstMatch;
|
|
92
|
+
removalAnchor = mutation.nextSibling ?? mutation.previousSibling ?? null;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
for (const addedNode of mutation.addedNodes) for (const item of querySelectorInclusive(addedNode, itemSelector)) insertedItems.push(item);
|
|
97
|
+
}
|
|
98
|
+
const target = mutation.target;
|
|
99
|
+
if (mutation.type === "attributes" && target.matches(itemSelector)) {
|
|
100
|
+
if (mutation.attributeName === itemSelectedAttr && target.getAttribute(itemSelectedAttr) === "true") newSelectedItem = target;
|
|
101
|
+
else if (itemDisabledSelector && target.matches(itemDisabledSelector)) disabledTargets.push(target);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (removedActiveItem) {
|
|
105
|
+
const shouldMoveFocus = containerFocus.hasFocus;
|
|
106
|
+
containerFocus.reset();
|
|
107
|
+
ensureTabStop(shouldMoveFocus, removalAnchor);
|
|
108
|
+
}
|
|
109
|
+
if (insertedItems.length > 0) normalizeItems(insertedItems, container.querySelector(itemActiveSelector) !== null);
|
|
110
|
+
if (disabledTargets.length > 0) {
|
|
111
|
+
const currentActive = nav.selectors.activeItem;
|
|
112
|
+
for (const target of disabledTargets) setTabIndex(target, "-1");
|
|
113
|
+
ensureTabStop(!!(currentActive && disabledTargets.includes(currentActive) && containerFocus.hasFocus));
|
|
114
|
+
}
|
|
115
|
+
if (newSelectedItem) {
|
|
116
|
+
const currentTabStop = container.querySelector(itemActiveSelector);
|
|
117
|
+
if (currentTabStop && currentTabStop !== newSelectedItem) setTabIndex(currentTabStop, "-1");
|
|
118
|
+
setTabIndex(newSelectedItem, "0");
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
observer.observe(container, {
|
|
122
|
+
childList: true,
|
|
123
|
+
subtree: true,
|
|
124
|
+
attributes: true,
|
|
125
|
+
attributeFilter: [
|
|
126
|
+
"aria-disabled",
|
|
127
|
+
"disabled",
|
|
128
|
+
itemSelectedAttr
|
|
129
|
+
]
|
|
130
|
+
});
|
|
131
|
+
signal.addEventListener("abort", () => observer.disconnect());
|
|
132
|
+
container.addEventListener("keydown", (evt) => {
|
|
133
|
+
if (!nav.selectors.activeItem) {
|
|
134
|
+
const target = evt.target;
|
|
135
|
+
if (target.matches(itemSelector) && container.contains(target)) nav.goTo(() => target);
|
|
136
|
+
}
|
|
137
|
+
let handled = false;
|
|
138
|
+
switch (evt.key) {
|
|
139
|
+
case "ArrowRight":
|
|
140
|
+
handled = nav.goRight();
|
|
141
|
+
break;
|
|
142
|
+
case "ArrowLeft":
|
|
143
|
+
handled = nav.goLeft();
|
|
144
|
+
break;
|
|
145
|
+
case "ArrowDown":
|
|
146
|
+
handled = nav.goDown();
|
|
147
|
+
break;
|
|
148
|
+
case "ArrowUp":
|
|
149
|
+
handled = nav.goUp();
|
|
150
|
+
break;
|
|
151
|
+
case "Home":
|
|
152
|
+
handled = nav.goTo((s) => s.getFirst());
|
|
153
|
+
break;
|
|
154
|
+
case "End":
|
|
155
|
+
handled = nav.goTo((s) => s.getLast());
|
|
156
|
+
break;
|
|
157
|
+
default: break;
|
|
158
|
+
}
|
|
159
|
+
if (handled) {
|
|
160
|
+
evt.preventDefault();
|
|
161
|
+
evt.stopPropagation();
|
|
162
|
+
}
|
|
163
|
+
}, { signal });
|
|
164
|
+
return nav;
|
|
165
|
+
}
|
|
166
|
+
//#endregion
|
|
167
|
+
export { setupRovingTabIndex };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import last from "lodash/last.js";
|
|
2
|
+
import pull from "lodash/pull.js";
|
|
3
|
+
//#region ../lumx-core/src/js/utils/function/listenerTower.ts
|
|
4
|
+
/**
|
|
5
|
+
* Keep track of listeners, only the last registered listener gets activated at any point (previously registered
|
|
6
|
+
* listener are disabled).
|
|
7
|
+
* When a listener gets unregistered, the previously registered listener gets enabled again.
|
|
8
|
+
*/
|
|
9
|
+
function makeListenerTowerContext() {
|
|
10
|
+
const LISTENERS = [];
|
|
11
|
+
return {
|
|
12
|
+
register(listener) {
|
|
13
|
+
last(LISTENERS)?.disable();
|
|
14
|
+
LISTENERS.push(listener);
|
|
15
|
+
listener.enable();
|
|
16
|
+
},
|
|
17
|
+
unregister(listener) {
|
|
18
|
+
listener.disable();
|
|
19
|
+
pull(LISTENERS, listener);
|
|
20
|
+
last(LISTENERS)?.enable();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { makeListenerTowerContext };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region ../lumx-core/src/js/utils/iterable/first.ts
|
|
2
|
+
/** Return the first item of an iterable, or `null` if it is empty. */
|
|
3
|
+
function first(iterable) {
|
|
4
|
+
const { value, done } = iterable[Symbol.iterator]().next();
|
|
5
|
+
return done ? null : value;
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
export { first };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region ../lumx-core/src/js/utils/locale/getCurrentLocale.ts
|
|
2
|
+
/**
|
|
3
|
+
* Get current browser locale (BCP-47 string).
|
|
4
|
+
*
|
|
5
|
+
* Reads `navigator.languages[0]` (the user's preferred language) with a
|
|
6
|
+
* fallback to `navigator.language`.
|
|
7
|
+
*/
|
|
8
|
+
var getCurrentLocale = () => navigator.languages?.[0] || navigator.language;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { getCurrentLocale };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getWithSelector } from "../selectors/getWithSelector.js";
|
|
2
|
+
//#region ../lumx-core/src/js/utils/select/findOptionById.ts
|
|
3
|
+
/**
|
|
4
|
+
* Find the option whose id matches the given value.
|
|
5
|
+
*
|
|
6
|
+
* Used by Select* wrappers to resolve a selection event (which carries the option id
|
|
7
|
+
* as `selectedOption.value`) back to the original option object.
|
|
8
|
+
*
|
|
9
|
+
* @param options The list of options.
|
|
10
|
+
* @param getOptionId Selector returning the option id (matches `<Combobox.Option value>`).
|
|
11
|
+
* @param id The id to match against.
|
|
12
|
+
* @return The matching option, or `undefined` if none is found / inputs are nullish.
|
|
13
|
+
*/
|
|
14
|
+
function findOptionById(options, getOptionId, id) {
|
|
15
|
+
if (id == null) return void 0;
|
|
16
|
+
return options?.find((option) => getWithSelector(getOptionId, option) === id);
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { findOptionById };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getWithSelector } from "../selectors/getWithSelector.js";
|
|
2
|
+
//#region ../lumx-core/src/js/utils/select/getOptionDisplayName.ts
|
|
3
|
+
/**
|
|
4
|
+
* Get the display name for a single option value.
|
|
5
|
+
*
|
|
6
|
+
* Resolves the option's display name by trying `getOptionName` first,
|
|
7
|
+
* then falling back to `getOptionId`, returning `''` for nullish values.
|
|
8
|
+
*/
|
|
9
|
+
function getOptionDisplayName(value, getOptionName, getOptionId) {
|
|
10
|
+
if (value === void 0 || value === null) return "";
|
|
11
|
+
if (getOptionName) {
|
|
12
|
+
const name = getWithSelector(getOptionName, value);
|
|
13
|
+
if (name != null) return String(name);
|
|
14
|
+
}
|
|
15
|
+
if (getOptionId) return String(getWithSelector(getOptionId, value));
|
|
16
|
+
return "";
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { getOptionDisplayName };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { getWithSelector } from "../selectors/getWithSelector.js";
|
|
2
|
+
import { groupBySelector } from "../selectors/groupBySelector.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region ../lumx-core/src/js/utils/select/renderSelectOptions.tsx
|
|
5
|
+
/**
|
|
6
|
+
* Render options as ComboboxOption elements.
|
|
7
|
+
* Framework-specific components are passed as a second argument.
|
|
8
|
+
*/
|
|
9
|
+
function renderSelectOptions(props, components) {
|
|
10
|
+
const { options, getOptionId, getOptionName, getOptionDescription, renderOption, selected, getSectionId, renderSectionTitle } = props;
|
|
11
|
+
const { Combobox } = components;
|
|
12
|
+
if (getSectionId && options) {
|
|
13
|
+
const sections = groupBySelector(options, (option) => getWithSelector(getSectionId, option));
|
|
14
|
+
return Array.from(sections.entries()).map(([sectionId, sectionOptions]) => {
|
|
15
|
+
const sectionLabel = renderSectionTitle ? renderSectionTitle(sectionId, sectionOptions) : sectionId;
|
|
16
|
+
return /* @__PURE__ */ jsx(Combobox.Section, {
|
|
17
|
+
label: sectionLabel,
|
|
18
|
+
children: renderSelectOptions({
|
|
19
|
+
options: sectionOptions,
|
|
20
|
+
getOptionId,
|
|
21
|
+
getOptionName,
|
|
22
|
+
getOptionDescription,
|
|
23
|
+
renderOption,
|
|
24
|
+
selected
|
|
25
|
+
}, components)
|
|
26
|
+
}, sectionId);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
const selectedIds = selected ? new Set((Array.isArray(selected) ? selected : [selected]).map((s) => getWithSelector(getOptionId, s))) : void 0;
|
|
30
|
+
return options?.map((item, index) => {
|
|
31
|
+
const id = getWithSelector(getOptionId || getOptionName, item);
|
|
32
|
+
const name = getWithSelector(getOptionName || getOptionId, item) || id;
|
|
33
|
+
const description = getOptionDescription && getWithSelector(getOptionDescription, item);
|
|
34
|
+
const isSelected = selectedIds?.has(id) ?? false;
|
|
35
|
+
if (renderOption) return renderOption(item, {
|
|
36
|
+
index,
|
|
37
|
+
value: id,
|
|
38
|
+
name,
|
|
39
|
+
isSelected,
|
|
40
|
+
description
|
|
41
|
+
});
|
|
42
|
+
return /* @__PURE__ */ jsx(Combobox.Option, {
|
|
43
|
+
value: id,
|
|
44
|
+
description,
|
|
45
|
+
isSelected,
|
|
46
|
+
children: name
|
|
47
|
+
}, id);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { renderSelectOptions };
|