@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
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import { getOptionValue, isOptionDisabled, isSelected, notifySection } from "./utils.js";
|
|
2
|
+
import { setupListbox } from "./setupListbox.js";
|
|
3
|
+
//#region ../lumx-core/src/js/components/Combobox/setupCombobox.ts
|
|
4
|
+
/**
|
|
5
|
+
* Set up combobox behavior (WAI-ARIA combobox pattern) on a trigger + listbox pair.
|
|
6
|
+
*
|
|
7
|
+
* The trigger and listbox are registered separately via the returned handle,
|
|
8
|
+
* allowing framework components to register them on mount. The behavior is
|
|
9
|
+
* fully attached once both are registered.
|
|
10
|
+
*
|
|
11
|
+
* @see https://www.w3.org/WAI/ARIA/apg/patterns/combobox/
|
|
12
|
+
*
|
|
13
|
+
* @param callbacks Callbacks invoked on combobox events (e.g. option selection).
|
|
14
|
+
* @param options Options for configuring the shared combobox behavior.
|
|
15
|
+
* @param onTriggerAttach Optional callback invoked when the trigger is registered and the signal is ready.
|
|
16
|
+
* Used by mode-specific wrappers (setupComboboxInput/Button) to automatically
|
|
17
|
+
* attach the appropriate controller.
|
|
18
|
+
* @returns A ComboboxHandle for interacting with the combobox.
|
|
19
|
+
*/
|
|
20
|
+
function setupCombobox(callbacks, options, onTriggerAttach) {
|
|
21
|
+
const { wrapNavigation = false } = options ?? {};
|
|
22
|
+
let trigger = null;
|
|
23
|
+
let listbox = null;
|
|
24
|
+
let focusNav = null;
|
|
25
|
+
let isOpenState = false;
|
|
26
|
+
/** Current filter value (empty string = no filtering). */
|
|
27
|
+
let filterValue = "";
|
|
28
|
+
/** Registered options: maps DOM element → { callback, last notified state }. */
|
|
29
|
+
const optionRegistrations = /* @__PURE__ */ new Map();
|
|
30
|
+
/** Registered sections: maps DOM element → { callback, last notified state }. */
|
|
31
|
+
const sectionRegistrations = /* @__PURE__ */ new Map();
|
|
32
|
+
/** AbortController for all structural event listeners. */
|
|
33
|
+
let abortController = null;
|
|
34
|
+
/** Last notified visible option count, to avoid redundant `optionsChange` notifications. */
|
|
35
|
+
let lastOptionsLength = 0;
|
|
36
|
+
/** Last notified input value, to re-fire `optionsChange` when the user keeps typing while empty. */
|
|
37
|
+
let lastInputValue = "";
|
|
38
|
+
/** Event subscribers managed by the handle. */
|
|
39
|
+
const subscribers = {
|
|
40
|
+
open: /* @__PURE__ */ new Set(),
|
|
41
|
+
activeDescendantChange: /* @__PURE__ */ new Set(),
|
|
42
|
+
optionsChange: /* @__PURE__ */ new Set(),
|
|
43
|
+
loadingChange: /* @__PURE__ */ new Set(),
|
|
44
|
+
loadingAnnouncement: /* @__PURE__ */ new Set()
|
|
45
|
+
};
|
|
46
|
+
/** Notify all subscribers for a given event. */
|
|
47
|
+
function notify(event, value) {
|
|
48
|
+
subscribers[event].forEach((cb) => cb(value));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Notify all registered sections and fire `optionsChange` if the visible option count changed
|
|
52
|
+
* or if the input value changed while the list is empty (so `emptyMessage` callbacks get
|
|
53
|
+
* the updated query string).
|
|
54
|
+
* Called whenever the set of visible options may have changed (option register/unregister, filter change).
|
|
55
|
+
*/
|
|
56
|
+
function notifyVisibilityChange() {
|
|
57
|
+
for (const [sectionElement] of sectionRegistrations) notifySection(sectionElement, sectionRegistrations, optionRegistrations);
|
|
58
|
+
let visibleCount = 0;
|
|
59
|
+
for (const reg of optionRegistrations.values()) if (!reg.lastFiltered) visibleCount += 1;
|
|
60
|
+
const inputValue = trigger?.value ?? "";
|
|
61
|
+
if (visibleCount !== lastOptionsLength || visibleCount === 0 && inputValue !== lastInputValue) {
|
|
62
|
+
lastOptionsLength = visibleCount;
|
|
63
|
+
lastInputValue = inputValue;
|
|
64
|
+
notify("optionsChange", {
|
|
65
|
+
optionsLength: visibleCount,
|
|
66
|
+
inputValue
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Delay before announcing loading in the live region (ms). */
|
|
71
|
+
const LOADING_ANNOUNCEMENT_DELAY = 500;
|
|
72
|
+
/** Number of currently mounted skeleton placeholders. */
|
|
73
|
+
let skeletonCount = 0;
|
|
74
|
+
/** Timer for debounced loading announcement. */
|
|
75
|
+
let loadingTimer;
|
|
76
|
+
/** Whether a loading announcement has been sent since the last open. */
|
|
77
|
+
let announcementSent = false;
|
|
78
|
+
/** Start or restart the debounced loading announcement timer if conditions are met. */
|
|
79
|
+
function startLoadingAnnouncementTimer() {
|
|
80
|
+
clearTimeout(loadingTimer);
|
|
81
|
+
if (skeletonCount > 0 && isOpenState) loadingTimer = setTimeout(() => {
|
|
82
|
+
if (skeletonCount > 0 && isOpenState) {
|
|
83
|
+
announcementSent = true;
|
|
84
|
+
notify("loadingAnnouncement", true);
|
|
85
|
+
}
|
|
86
|
+
}, LOADING_ANNOUNCEMENT_DELAY);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Called when the skeleton count transitions between 0 and >0 (or vice versa).
|
|
90
|
+
* Fires `loadingChange` immediately and manages the debounced `loadingAnnouncement`.
|
|
91
|
+
*/
|
|
92
|
+
function onSkeletonCountChange() {
|
|
93
|
+
const isLoading = skeletonCount > 0;
|
|
94
|
+
notify("loadingChange", isLoading);
|
|
95
|
+
if (isLoading) startLoadingAnnouncementTimer();
|
|
96
|
+
else {
|
|
97
|
+
clearTimeout(loadingTimer);
|
|
98
|
+
if (announcementSent) {
|
|
99
|
+
announcementSent = false;
|
|
100
|
+
notify("loadingAnnouncement", false);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
let handle;
|
|
105
|
+
/** Detach everything (abort all listeners, clear state). */
|
|
106
|
+
function detach() {
|
|
107
|
+
abortController?.abort();
|
|
108
|
+
abortController = null;
|
|
109
|
+
focusNav = null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Attach the shared keydown listener to the trigger.
|
|
113
|
+
*
|
|
114
|
+
* Handles: Enter, ArrowDown, ArrowUp, Escape (2-tier), PageUp, PageDown.
|
|
115
|
+
* Mode-specific keys (Space, Home, End, ArrowLeft/Right, printable chars, etc.)
|
|
116
|
+
* are delegated to the `onKeydown` hook provided by the mode controller.
|
|
117
|
+
*/
|
|
118
|
+
function attachTriggerKeydown(triggerEl, signal, onKeydown) {
|
|
119
|
+
function handleKeydown(event) {
|
|
120
|
+
if (onKeydown?.(event)) {
|
|
121
|
+
event.stopPropagation();
|
|
122
|
+
event.preventDefault();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
let flag = false;
|
|
126
|
+
const { altKey } = event;
|
|
127
|
+
const nav = handle.focusNav;
|
|
128
|
+
switch (event.key) {
|
|
129
|
+
case "Enter":
|
|
130
|
+
if (handle.isOpen && nav?.selectors.activeItem) {
|
|
131
|
+
const { activeItem } = nav.selectors;
|
|
132
|
+
if (!isOptionDisabled(activeItem)) activeItem.click();
|
|
133
|
+
flag = true;
|
|
134
|
+
} else if (handle.isOpen && !handle.isMultiSelect) handle.setIsOpen(false);
|
|
135
|
+
break;
|
|
136
|
+
case "ArrowDown":
|
|
137
|
+
if (!handle.isOpen) {
|
|
138
|
+
handle.setIsOpen(true);
|
|
139
|
+
if (!altKey) nav?.goTo((s) => s.getMatching(isSelected) ?? s.getFirst());
|
|
140
|
+
} else if (nav?.selectors.hasNavigableItems && !altKey) if (nav.selectors.activeItem) nav.goDown();
|
|
141
|
+
else nav.goTo((s) => s.getMatching(isSelected) ?? s.getFirst());
|
|
142
|
+
flag = true;
|
|
143
|
+
break;
|
|
144
|
+
case "ArrowUp":
|
|
145
|
+
if (!handle.isOpen && !altKey) {
|
|
146
|
+
handle.setIsOpen(true);
|
|
147
|
+
nav?.goTo((s) => s.getMatching(isSelected) ?? s.getLast());
|
|
148
|
+
} else if (handle.isOpen && nav?.selectors.hasNavigableItems) {
|
|
149
|
+
if (nav.selectors.activeItem) nav.goUp();
|
|
150
|
+
else if (!altKey) nav.goTo((s) => s.getMatching(isSelected) ?? s.getLast());
|
|
151
|
+
}
|
|
152
|
+
flag = true;
|
|
153
|
+
break;
|
|
154
|
+
case "Escape":
|
|
155
|
+
if (handle.isOpen) handle.setIsOpen(false);
|
|
156
|
+
else handle.select(null);
|
|
157
|
+
flag = true;
|
|
158
|
+
break;
|
|
159
|
+
case "PageUp":
|
|
160
|
+
if (handle.isOpen && nav?.selectors.activeItem) nav.goToOffset(-10);
|
|
161
|
+
flag = true;
|
|
162
|
+
break;
|
|
163
|
+
case "PageDown":
|
|
164
|
+
if (handle.isOpen && nav?.selectors.activeItem) nav.goToOffset(10);
|
|
165
|
+
flag = true;
|
|
166
|
+
break;
|
|
167
|
+
default: break;
|
|
168
|
+
}
|
|
169
|
+
if (flag) {
|
|
170
|
+
event.stopPropagation();
|
|
171
|
+
event.preventDefault();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
triggerEl.addEventListener("keydown", (e) => handleKeydown(e), { signal });
|
|
175
|
+
}
|
|
176
|
+
/** Try to fully attach when both trigger and listbox are available. */
|
|
177
|
+
function tryAttach() {
|
|
178
|
+
if (!trigger) return;
|
|
179
|
+
const isNewController = !abortController;
|
|
180
|
+
if (!abortController) abortController = new AbortController();
|
|
181
|
+
if (!trigger.getAttribute("aria-activedescendant")) trigger.setAttribute("aria-activedescendant", "");
|
|
182
|
+
trigger.setAttribute("aria-expanded", String(isOpenState));
|
|
183
|
+
if (isNewController) {
|
|
184
|
+
const onKeydown = onTriggerAttach?.(handle, abortController.signal) || void 0;
|
|
185
|
+
attachTriggerKeydown(trigger, abortController.signal, onKeydown);
|
|
186
|
+
trigger.addEventListener("focusout", () => {
|
|
187
|
+
handle.setIsOpen(false);
|
|
188
|
+
}, { signal: abortController.signal });
|
|
189
|
+
}
|
|
190
|
+
if (listbox && !focusNav) focusNav = setupListbox(handle, abortController.signal, notify, { wrapNavigation });
|
|
191
|
+
}
|
|
192
|
+
handle = {
|
|
193
|
+
get trigger() {
|
|
194
|
+
return trigger;
|
|
195
|
+
},
|
|
196
|
+
get listbox() {
|
|
197
|
+
return listbox;
|
|
198
|
+
},
|
|
199
|
+
get focusNav() {
|
|
200
|
+
return focusNav;
|
|
201
|
+
},
|
|
202
|
+
get isOpen() {
|
|
203
|
+
return isOpenState;
|
|
204
|
+
},
|
|
205
|
+
get isMultiSelect() {
|
|
206
|
+
return listbox?.getAttribute("aria-multiselectable") === "true";
|
|
207
|
+
},
|
|
208
|
+
get isLoading() {
|
|
209
|
+
return skeletonCount > 0;
|
|
210
|
+
},
|
|
211
|
+
setIsOpen(isOpen) {
|
|
212
|
+
if (isOpenState === isOpen) return;
|
|
213
|
+
isOpenState = isOpen;
|
|
214
|
+
if (!isOpen) {
|
|
215
|
+
focusNav?.clear();
|
|
216
|
+
clearTimeout(loadingTimer);
|
|
217
|
+
if (announcementSent) {
|
|
218
|
+
announcementSent = false;
|
|
219
|
+
notify("loadingAnnouncement", false);
|
|
220
|
+
}
|
|
221
|
+
} else if (skeletonCount > 0) startLoadingAnnouncementTimer();
|
|
222
|
+
trigger?.setAttribute("aria-expanded", String(isOpen));
|
|
223
|
+
notify("open", isOpen);
|
|
224
|
+
},
|
|
225
|
+
select(option) {
|
|
226
|
+
callbacks.onSelect?.({ value: option ? getOptionValue(option) : "" });
|
|
227
|
+
if (option && !handle.isMultiSelect) {
|
|
228
|
+
handle.focusNav?.clear();
|
|
229
|
+
requestAnimationFrame(() => {
|
|
230
|
+
handle.setIsOpen(false);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
flushPendingNavigation() {
|
|
235
|
+
focusNav?.flushPendingNavigation();
|
|
236
|
+
},
|
|
237
|
+
registerOption(element, callback) {
|
|
238
|
+
const filterLower = filterValue.toLowerCase();
|
|
239
|
+
const text = getOptionValue(element).toLowerCase();
|
|
240
|
+
const isFiltered = filterLower.length > 0 && !text.includes(filterLower);
|
|
241
|
+
optionRegistrations.set(element, {
|
|
242
|
+
callback,
|
|
243
|
+
lastFiltered: isFiltered
|
|
244
|
+
});
|
|
245
|
+
callback(isFiltered);
|
|
246
|
+
notifyVisibilityChange();
|
|
247
|
+
return () => {
|
|
248
|
+
optionRegistrations.delete(element);
|
|
249
|
+
notifyVisibilityChange();
|
|
250
|
+
};
|
|
251
|
+
},
|
|
252
|
+
setFilter(newFilter) {
|
|
253
|
+
filterValue = newFilter;
|
|
254
|
+
const filterLower = newFilter.toLowerCase();
|
|
255
|
+
for (const [element, reg] of optionRegistrations) {
|
|
256
|
+
const text = getOptionValue(element).toLowerCase();
|
|
257
|
+
const isFiltered = filterLower.length > 0 && !text.includes(filterLower);
|
|
258
|
+
if (isFiltered !== reg.lastFiltered) {
|
|
259
|
+
reg.lastFiltered = isFiltered;
|
|
260
|
+
reg.callback(isFiltered);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
notifyVisibilityChange();
|
|
264
|
+
},
|
|
265
|
+
refilterOption(element) {
|
|
266
|
+
const reg = optionRegistrations.get(element);
|
|
267
|
+
if (!reg) return;
|
|
268
|
+
const filterLower = filterValue.toLowerCase();
|
|
269
|
+
const text = getOptionValue(element).toLowerCase();
|
|
270
|
+
const isFiltered = filterLower.length > 0 && !text.includes(filterLower);
|
|
271
|
+
if (isFiltered !== reg.lastFiltered) {
|
|
272
|
+
reg.lastFiltered = isFiltered;
|
|
273
|
+
reg.callback(isFiltered);
|
|
274
|
+
notifyVisibilityChange();
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
registerSection(element, callback) {
|
|
278
|
+
sectionRegistrations.set(element, {
|
|
279
|
+
callback,
|
|
280
|
+
last: {
|
|
281
|
+
hidden: false,
|
|
282
|
+
"aria-hidden": false
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
notifySection(element, sectionRegistrations, optionRegistrations, true);
|
|
286
|
+
return () => {
|
|
287
|
+
sectionRegistrations.delete(element);
|
|
288
|
+
};
|
|
289
|
+
},
|
|
290
|
+
registerSkeleton() {
|
|
291
|
+
const wasLoading = skeletonCount > 0;
|
|
292
|
+
skeletonCount += 1;
|
|
293
|
+
if (!wasLoading) onSkeletonCountChange();
|
|
294
|
+
return () => {
|
|
295
|
+
skeletonCount -= 1;
|
|
296
|
+
if (skeletonCount === 0) onSkeletonCountChange();
|
|
297
|
+
};
|
|
298
|
+
},
|
|
299
|
+
registerTrigger(newTrigger) {
|
|
300
|
+
if (trigger && trigger !== newTrigger) detach();
|
|
301
|
+
trigger = newTrigger;
|
|
302
|
+
tryAttach();
|
|
303
|
+
return () => {
|
|
304
|
+
if (trigger === newTrigger) {
|
|
305
|
+
detach();
|
|
306
|
+
trigger = null;
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
},
|
|
310
|
+
registerListbox(newListbox) {
|
|
311
|
+
if (listbox === newListbox) return () => {};
|
|
312
|
+
const hadListbox = !!listbox;
|
|
313
|
+
listbox = newListbox;
|
|
314
|
+
if (trigger && abortController) if (!hadListbox) focusNav = setupListbox(handle, abortController.signal, notify, { wrapNavigation });
|
|
315
|
+
else {
|
|
316
|
+
detach();
|
|
317
|
+
tryAttach();
|
|
318
|
+
}
|
|
319
|
+
return () => {
|
|
320
|
+
if (listbox === newListbox) {
|
|
321
|
+
listbox = null;
|
|
322
|
+
focusNav = null;
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
},
|
|
326
|
+
subscribe(event, callback) {
|
|
327
|
+
subscribers[event].add(callback);
|
|
328
|
+
return () => {
|
|
329
|
+
subscribers[event].delete(callback);
|
|
330
|
+
};
|
|
331
|
+
},
|
|
332
|
+
destroy() {
|
|
333
|
+
detach();
|
|
334
|
+
trigger = null;
|
|
335
|
+
listbox = null;
|
|
336
|
+
filterValue = "";
|
|
337
|
+
lastOptionsLength = 0;
|
|
338
|
+
lastInputValue = "";
|
|
339
|
+
optionRegistrations.clear();
|
|
340
|
+
sectionRegistrations.clear();
|
|
341
|
+
skeletonCount = 0;
|
|
342
|
+
clearTimeout(loadingTimer);
|
|
343
|
+
announcementSent = false;
|
|
344
|
+
for (const set of Object.values(subscribers)) set.clear();
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
return handle;
|
|
348
|
+
}
|
|
349
|
+
//#endregion
|
|
350
|
+
export { setupCombobox };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { createSelectorTreeWalker } from "../../utils/browser/createSelectorTreeWalker.js";
|
|
2
|
+
import { getOptionLabel } from "./utils.js";
|
|
3
|
+
import { setupCombobox } from "./setupCombobox.js";
|
|
4
|
+
import { createTypeahead } from "../../utils/typeahead/index.js";
|
|
5
|
+
import { isPrintableKey } from "../../utils/browser/isPrintableKey.js";
|
|
6
|
+
//#region ../lumx-core/src/js/components/Combobox/setupComboboxButton.ts
|
|
7
|
+
/**
|
|
8
|
+
* Set up a combobox with a button trigger (select-only pattern).
|
|
9
|
+
*
|
|
10
|
+
* Creates a full combobox handle with the button-mode controller automatically
|
|
11
|
+
* wired in and the trigger registered. The consumer only needs to call
|
|
12
|
+
* `handle.registerListbox(listbox)`.
|
|
13
|
+
*
|
|
14
|
+
* Handles: Space (select/open), Home/End (listbox navigation),
|
|
15
|
+
* printable characters (typeahead), and click (toggle).
|
|
16
|
+
*
|
|
17
|
+
* @param button The button element to use as the combobox trigger.
|
|
18
|
+
* @param callbacks Callbacks for select and open/close events.
|
|
19
|
+
* @returns A ComboboxHandle for interacting with the combobox.
|
|
20
|
+
*/
|
|
21
|
+
function setupComboboxButton(button, callbacks) {
|
|
22
|
+
const handle = setupCombobox(callbacks, void 0, (combobox, signal) => {
|
|
23
|
+
const typeahead = createTypeahead(() => {
|
|
24
|
+
if (!combobox.listbox) return null;
|
|
25
|
+
const selector = combobox.focusNav?.type === "grid" ? "[role=\"gridcell\"]" : "[role=\"option\"]";
|
|
26
|
+
return createSelectorTreeWalker(combobox.listbox, selector);
|
|
27
|
+
}, getOptionLabel, signal);
|
|
28
|
+
button.addEventListener("click", () => combobox.setIsOpen(!combobox.isOpen), { signal });
|
|
29
|
+
return (event) => {
|
|
30
|
+
const nav = combobox.focusNav;
|
|
31
|
+
switch (event.key) {
|
|
32
|
+
case "Tab":
|
|
33
|
+
if (combobox.isOpen && nav?.selectors.activeItem) combobox.select(nav.selectors.activeItem);
|
|
34
|
+
return false;
|
|
35
|
+
case " ":
|
|
36
|
+
if (combobox.isOpen && nav?.selectors.activeItem) nav.selectors.activeItem.click();
|
|
37
|
+
else combobox.setIsOpen(true);
|
|
38
|
+
return true;
|
|
39
|
+
case "ArrowUp":
|
|
40
|
+
if (event.altKey && combobox.isOpen && nav?.selectors.activeItem) {
|
|
41
|
+
combobox.select(nav.selectors.activeItem);
|
|
42
|
+
combobox.setIsOpen(false);
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
case "Home":
|
|
47
|
+
combobox.setIsOpen(true);
|
|
48
|
+
nav?.goTo((n) => n.getFirst());
|
|
49
|
+
return true;
|
|
50
|
+
case "End":
|
|
51
|
+
combobox.setIsOpen(true);
|
|
52
|
+
nav?.goTo((n) => n.getLast());
|
|
53
|
+
return true;
|
|
54
|
+
case "ArrowLeft":
|
|
55
|
+
if (nav?.type === "grid" && combobox.isOpen && nav.selectors.activeItem) {
|
|
56
|
+
nav.goLeft();
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
case "ArrowRight":
|
|
61
|
+
if (nav?.type === "grid" && combobox.isOpen && nav.selectors.activeItem) {
|
|
62
|
+
nav.goRight();
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
case "Escape":
|
|
67
|
+
if (combobox.isOpen) combobox.setIsOpen(false);
|
|
68
|
+
return true;
|
|
69
|
+
default:
|
|
70
|
+
if (isPrintableKey(event)) {
|
|
71
|
+
combobox.setIsOpen(true);
|
|
72
|
+
typeahead.handle(event.key, nav?.selectors.activeItem ?? null);
|
|
73
|
+
nav?.goTo((n) => typeahead.rematch(n.activeItem));
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
handle.registerTrigger(button);
|
|
81
|
+
return handle;
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
export { setupComboboxButton };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { setupCombobox } from "./setupCombobox.js";
|
|
2
|
+
//#region ../lumx-core/src/js/components/Combobox/setupComboboxInput.ts
|
|
3
|
+
/**
|
|
4
|
+
* Set up a combobox with an input trigger (autocomplete/filter pattern).
|
|
5
|
+
*
|
|
6
|
+
* Creates a full combobox handle with the input-mode controller automatically
|
|
7
|
+
* wired in and the trigger registered. The consumer only needs to call
|
|
8
|
+
* `handle.registerListbox(listbox)`.
|
|
9
|
+
*
|
|
10
|
+
* Handles: Home/End (text cursor), ArrowLeft/Right (clear active descendant),
|
|
11
|
+
* filtering (on input and on open), and focus behavior.
|
|
12
|
+
*
|
|
13
|
+
* @param input The input element to use as the combobox trigger.
|
|
14
|
+
* @param options Options and callbacks for configuring the input-mode controller.
|
|
15
|
+
* @returns A ComboboxHandle for interacting with the combobox.
|
|
16
|
+
*/
|
|
17
|
+
function setupComboboxInput(input, options) {
|
|
18
|
+
let handle;
|
|
19
|
+
const { filter = "auto", onSelect: optionOnSelect, onInput: onInputCallback } = options;
|
|
20
|
+
const openOnFocus = options.openOnFocus ?? filter === "off";
|
|
21
|
+
const autoFilter = filter === "auto";
|
|
22
|
+
/** Check if the input is disabled (native `disabled` attribute or `aria-disabled="true"`). */
|
|
23
|
+
const isDisabled = () => input.disabled || input.getAttribute("aria-disabled") === "true";
|
|
24
|
+
/**
|
|
25
|
+
* True when the current input value came from user typing (real InputEvent).
|
|
26
|
+
* False when the value was set programmatically (select, clear, etc.).
|
|
27
|
+
* Used to decide whether to re-apply the filter when the combobox opens.
|
|
28
|
+
*/
|
|
29
|
+
let userHasTyped = false;
|
|
30
|
+
/**
|
|
31
|
+
* Wraps the consumer's onSelect to perform input-mode side effects after selection:
|
|
32
|
+
* resets the filter and typing state.
|
|
33
|
+
*/
|
|
34
|
+
const onSelect = (option) => {
|
|
35
|
+
optionOnSelect?.(option);
|
|
36
|
+
userHasTyped = false;
|
|
37
|
+
if (autoFilter) handle.setFilter("");
|
|
38
|
+
};
|
|
39
|
+
handle = setupCombobox({ onSelect }, { wrapNavigation: true }, (combobox, signal) => {
|
|
40
|
+
signal.addEventListener("abort", () => {
|
|
41
|
+
userHasTyped = false;
|
|
42
|
+
});
|
|
43
|
+
input.addEventListener("input", (event) => {
|
|
44
|
+
if (!(event instanceof InputEvent)) return;
|
|
45
|
+
if (isDisabled()) return;
|
|
46
|
+
combobox.focusNav?.clear();
|
|
47
|
+
userHasTyped = true;
|
|
48
|
+
onInputCallback?.(input.value);
|
|
49
|
+
combobox.setIsOpen(true);
|
|
50
|
+
if (autoFilter) combobox.setFilter(input.value);
|
|
51
|
+
}, { signal });
|
|
52
|
+
input.addEventListener("focus", () => {
|
|
53
|
+
if (isDisabled()) return;
|
|
54
|
+
combobox.focusNav?.clear();
|
|
55
|
+
if (openOnFocus) combobox.setIsOpen(true);
|
|
56
|
+
}, { signal });
|
|
57
|
+
input.addEventListener("click", () => {
|
|
58
|
+
if (isDisabled()) return;
|
|
59
|
+
combobox.setIsOpen(true);
|
|
60
|
+
}, { signal });
|
|
61
|
+
const unsubscribeOpen = combobox.subscribe("open", (isOpen) => {
|
|
62
|
+
if (isOpen && autoFilter && userHasTyped) combobox.setFilter(input.value);
|
|
63
|
+
});
|
|
64
|
+
signal.addEventListener("abort", unsubscribeOpen);
|
|
65
|
+
return (event) => {
|
|
66
|
+
const nav = combobox.focusNav;
|
|
67
|
+
switch (event.key) {
|
|
68
|
+
case "Home":
|
|
69
|
+
input.setSelectionRange(0, 0);
|
|
70
|
+
nav?.clear();
|
|
71
|
+
return true;
|
|
72
|
+
case "End": {
|
|
73
|
+
const len = input.value.length;
|
|
74
|
+
input.setSelectionRange(len, len);
|
|
75
|
+
nav?.clear();
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
case "ArrowLeft":
|
|
79
|
+
case "ArrowRight":
|
|
80
|
+
if (nav?.type === "grid" && nav.selectors.activeItem) {
|
|
81
|
+
if (event.key === "ArrowLeft") nav.goLeft();
|
|
82
|
+
else nav.goRight();
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
nav?.clear();
|
|
86
|
+
return false;
|
|
87
|
+
default: return false;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
handle.registerTrigger(input);
|
|
92
|
+
return handle;
|
|
93
|
+
}
|
|
94
|
+
//#endregion
|
|
95
|
+
export { setupComboboxInput };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { createListFocusNavigation } from "../../utils/focusNavigation/createListFocusNavigation.js";
|
|
2
|
+
import { createGridFocusNavigation } from "../../utils/focusNavigation/createGridFocusNavigation.js";
|
|
3
|
+
import { isActionCell, isOptionDisabled } from "./utils.js";
|
|
4
|
+
//#region ../lumx-core/src/js/components/Combobox/setupListbox.ts
|
|
5
|
+
/**
|
|
6
|
+
* Set up focus navigation and delegated event listeners on a listbox element.
|
|
7
|
+
*
|
|
8
|
+
* This merges two concerns:
|
|
9
|
+
* 1. Creating the appropriate {@link FocusNavigationController} (grid or list mode)
|
|
10
|
+
* with callbacks that manage `aria-activedescendant` and visual focus indicators.
|
|
11
|
+
* 2. Attaching delegated `click` and `mousedown` listeners to the listbox for
|
|
12
|
+
* option selection and blur prevention.
|
|
13
|
+
*
|
|
14
|
+
* The caller is responsible for guarding against duplicate calls (i.e., checking
|
|
15
|
+
* that a focus navigation controller does not already exist before calling)
|
|
16
|
+
* and ensuring `handle.trigger` and `handle.listbox` are non-null.
|
|
17
|
+
*
|
|
18
|
+
* @param handle The combobox handle (provides trigger, listbox, select, etc.).
|
|
19
|
+
* @param signal Abort signal used to clean up all attached listeners.
|
|
20
|
+
* @param notify Notify subscribers of combobox events.
|
|
21
|
+
* @returns The created focus navigation controller.
|
|
22
|
+
*/
|
|
23
|
+
function setupListbox(handle, signal, notify, options) {
|
|
24
|
+
const trigger = handle.trigger;
|
|
25
|
+
const listbox = handle.listbox;
|
|
26
|
+
const isGrid = listbox.getAttribute("role") === "grid";
|
|
27
|
+
const itemSelector = "[role=\"option\"]";
|
|
28
|
+
const focusCallbacks = {
|
|
29
|
+
onActivate: (item) => {
|
|
30
|
+
item.setAttribute("data-focus-visible-added", "true");
|
|
31
|
+
trigger.setAttribute("aria-activedescendant", item.id);
|
|
32
|
+
notify("activeDescendantChange", item.id);
|
|
33
|
+
requestAnimationFrame(() => {
|
|
34
|
+
if (item === (!isGrid && listbox.querySelector(`:scope > :has(${itemSelector}):not(:has(~ * ${itemSelector})) ${itemSelector}`))) listbox.lastElementChild?.scrollIntoView({ block: "nearest" });
|
|
35
|
+
else (item.closest("[role=listbox] > *") || item).scrollIntoView({ block: "nearest" });
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
onDeactivate: (item) => {
|
|
39
|
+
item.removeAttribute("data-focus-visible-added");
|
|
40
|
+
},
|
|
41
|
+
onClear: () => {
|
|
42
|
+
trigger.setAttribute("aria-activedescendant", "");
|
|
43
|
+
notify("activeDescendantChange", null);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
let focusNav;
|
|
47
|
+
if (isGrid) {
|
|
48
|
+
focusNav = createGridFocusNavigation({
|
|
49
|
+
type: "grid",
|
|
50
|
+
container: listbox,
|
|
51
|
+
rowSelector: "[role=\"row\"]",
|
|
52
|
+
cellSelector: "[role=\"gridcell\"]",
|
|
53
|
+
wrap: true
|
|
54
|
+
}, focusCallbacks, signal);
|
|
55
|
+
trigger.setAttribute("aria-haspopup", "grid");
|
|
56
|
+
} else focusNav = createListFocusNavigation({
|
|
57
|
+
type: "list",
|
|
58
|
+
container: listbox,
|
|
59
|
+
itemSelector,
|
|
60
|
+
wrap: options?.wrapNavigation,
|
|
61
|
+
getActiveItem: () => {
|
|
62
|
+
const id = trigger.getAttribute("aria-activedescendant");
|
|
63
|
+
return id && listbox.querySelector(`#${CSS.escape(id)}`) || null;
|
|
64
|
+
}
|
|
65
|
+
}, focusCallbacks, signal);
|
|
66
|
+
const cellSelector = isGrid ? "[role=\"gridcell\"]" : "[role=\"option\"]";
|
|
67
|
+
listbox.addEventListener("click", (event) => {
|
|
68
|
+
const cell = event.target.closest(cellSelector);
|
|
69
|
+
if (!cell) return;
|
|
70
|
+
if (isOptionDisabled(cell)) {
|
|
71
|
+
event.stopPropagation();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (isGrid && isActionCell(cell)) return;
|
|
75
|
+
handle.select(cell);
|
|
76
|
+
trigger.focus();
|
|
77
|
+
}, { signal });
|
|
78
|
+
listbox.addEventListener("mousedown", (event) => {
|
|
79
|
+
if (event.target.closest(cellSelector)) event.preventDefault();
|
|
80
|
+
}, { signal });
|
|
81
|
+
return focusNav;
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
export { setupListbox };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region ../lumx-core/src/js/components/Combobox/subscribeComboboxState.ts
|
|
2
|
+
/**
|
|
3
|
+
* Delay before inserting content into the aria-live region after the popover opens (ms).
|
|
4
|
+
*
|
|
5
|
+
* The popover uses `closeMode="hide"` (`display:none` when closed), so the live region
|
|
6
|
+
* container is not in the accessibility tree until the popover becomes visible.
|
|
7
|
+
* Screen readers only detect content *changes* in live regions that are already visible.
|
|
8
|
+
* This delay ensures the popover's `display:none` is removed and the accessibility tree
|
|
9
|
+
* is updated before content is inserted, so screen readers reliably announce it.
|
|
10
|
+
*/
|
|
11
|
+
var OPEN_ANNOUNCEMENT_DELAY = 100;
|
|
12
|
+
/**
|
|
13
|
+
* Subscribe to the combobox handle events needed by `ComboboxState`.
|
|
14
|
+
*
|
|
15
|
+
* Manages three subscriptions:
|
|
16
|
+
* - `loadingChange` → `setIsLoading` (+ synchronous initial read of `handle.isLoading`)
|
|
17
|
+
* - `loadingAnnouncement` → `setShouldAnnounce`
|
|
18
|
+
* - `open` → `setIsOpen` (deferred by {@link OPEN_ANNOUNCEMENT_DELAY}ms on open, immediate on close)
|
|
19
|
+
*
|
|
20
|
+
* @param handle The combobox handle to subscribe to.
|
|
21
|
+
* @param setters Framework-specific state setters.
|
|
22
|
+
* @returns A cleanup function that unsubscribes all events and clears timers.
|
|
23
|
+
*/
|
|
24
|
+
function subscribeComboboxState(handle, setters) {
|
|
25
|
+
const { setIsLoading, setShouldAnnounce, setIsOpen } = setters;
|
|
26
|
+
setIsLoading(handle.isLoading);
|
|
27
|
+
const unsubLoadingChange = handle.subscribe("loadingChange", setIsLoading);
|
|
28
|
+
const unsubLoadingAnnouncement = handle.subscribe("loadingAnnouncement", setShouldAnnounce);
|
|
29
|
+
let openTimer;
|
|
30
|
+
const unsubOpen = handle.subscribe("open", (open) => {
|
|
31
|
+
clearTimeout(openTimer);
|
|
32
|
+
if (open) openTimer = setTimeout(() => setIsOpen(true), OPEN_ANNOUNCEMENT_DELAY);
|
|
33
|
+
else setIsOpen(false);
|
|
34
|
+
});
|
|
35
|
+
return () => {
|
|
36
|
+
unsubLoadingChange();
|
|
37
|
+
unsubLoadingAnnouncement();
|
|
38
|
+
unsubOpen();
|
|
39
|
+
clearTimeout(openTimer);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { subscribeComboboxState };
|