@cube-dev/ui-kit 0.66.0 → 0.67.0
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/CHANGELOG.md +16 -0
- package/es/_internal/hooks/index.js +1 -1
- package/es/_internal/hooks/use-chained-callback.js +1 -1
- package/es/_internal/hooks/use-debounced-value.js +1 -1
- package/es/_internal/hooks/use-deprecation-warning.js +1 -1
- package/es/_internal/hooks/use-effect-once.js +1 -1
- package/es/_internal/hooks/use-event.js +1 -1
- package/es/_internal/hooks/use-is-first-render.js +1 -1
- package/es/_internal/hooks/use-sync-ref.js +1 -1
- package/es/_internal/hooks/use-timer/index.js +1 -1
- package/es/_internal/hooks/use-timer/timer.js +1 -1
- package/es/_internal/hooks/use-timer/use-timer.js +1 -1
- package/es/_internal/hooks/use-update-effect.js +1 -1
- package/es/_internal/hooks/use-warn.js +1 -1
- package/es/_internal/index.js +1 -1
- package/es/components/Block.js +1 -1
- package/es/components/GlobalStyles.js +1 -1
- package/es/components/GridProvider.js +1 -1
- package/es/components/HiddenInput.js +1 -1
- package/es/components/OpenTrasition.js +1 -1
- package/es/components/Root.js +3 -2
- package/es/components/actions/Action/Action.js +1 -1
- package/es/components/actions/Button/Button.js +1 -1
- package/es/components/actions/Button/index.js +1 -1
- package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/es/components/actions/CommandMenu/CommandMenu.js +60 -53
- package/es/components/actions/CommandMenu/index.js +1 -1
- package/es/components/actions/CommandMenu/styled.js +1 -2
- package/es/components/actions/Menu/Menu.js +1 -1
- package/es/components/actions/Menu/MenuItem.js +1 -1
- package/es/components/actions/Menu/MenuSection.js +1 -1
- package/es/components/actions/Menu/MenuTrigger.js +48 -21
- package/es/components/actions/Menu/context.js +1 -1
- package/es/components/actions/Menu/index.js +1 -1
- package/es/components/actions/Menu/styled.js +1 -1
- package/es/components/actions/index.js +3 -1
- package/es/components/actions/use-action.js +1 -1
- package/es/components/actions/use-anchored-menu.js +98 -0
- package/es/components/actions/use-context-menu.js +206 -0
- package/es/components/content/ActiveZone/ActiveZone.js +1 -1
- package/es/components/content/Alert/Alert.js +1 -1
- package/es/components/content/Alert/index.js +1 -1
- package/es/components/content/Alert/types.js +1 -1
- package/es/components/content/Alert/use-alert.js +1 -1
- package/es/components/content/Avatar/Avatar.js +1 -1
- package/es/components/content/Badge/Badge.js +1 -1
- package/es/components/content/Card/Card.js +1 -1
- package/es/components/content/Content.js +1 -1
- package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/es/components/content/CopyPasteBlock/index.js +1 -1
- package/es/components/content/CopySnippet/CopySnippet.js +1 -1
- package/es/components/content/CopySnippet/index.js +1 -1
- package/es/components/content/Divider.js +1 -1
- package/es/components/content/Footer.js +1 -1
- package/es/components/content/Header.js +1 -1
- package/es/components/content/HotKeys/HotKeys.js +1 -1
- package/es/components/content/HotKeys/index.js +1 -1
- package/es/components/content/Paragraph.js +1 -1
- package/es/components/content/Placeholder/Placeholder.js +1 -1
- package/es/components/content/PrismCode/PrismCode.js +1 -1
- package/es/components/content/PrismCode/prismSetup.js +1 -1
- package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/es/components/content/Result/Result.js +1 -1
- package/es/components/content/Skeleton/Skeleton.js +1 -1
- package/es/components/content/Tag/Tag.js +1 -1
- package/es/components/content/Text.js +1 -1
- package/es/components/content/Title.js +1 -1
- package/es/components/fields/Checkbox/Checkbox.js +1 -1
- package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/es/components/fields/Checkbox/context.js +1 -1
- package/es/components/fields/Checkbox/index.js +1 -1
- package/es/components/fields/ComboBox/ComboBox.js +25 -3
- package/es/components/fields/ComboBox/index.js +1 -1
- package/es/components/fields/DatePicker/DateInput.js +1 -1
- package/es/components/fields/DatePicker/DateInputBase.js +1 -1
- package/es/components/fields/DatePicker/DatePicker.js +1 -1
- package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/es/components/fields/DatePicker/TimeInput.js +1 -1
- package/es/components/fields/DatePicker/index.js +1 -1
- package/es/components/fields/DatePicker/intl.js +1 -1
- package/es/components/fields/DatePicker/parseDate.js +1 -1
- package/es/components/fields/DatePicker/props.js +1 -1
- package/es/components/fields/DatePicker/types.js +1 -1
- package/es/components/fields/DatePicker/utils.js +1 -1
- package/es/components/fields/FileInput/FileInput.js +1 -1
- package/es/components/fields/Input/Input.js +1 -1
- package/es/components/fields/Input/index.js +1 -1
- package/es/components/fields/ListBox/ListBox.js +1 -1
- package/es/components/fields/ListBox/index.js +1 -1
- package/es/components/fields/NumberInput/NumberInput.js +1 -1
- package/es/components/fields/NumberInput/StepButton.js +1 -1
- package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/es/components/fields/RadioGroup/Radio.js +1 -1
- package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/es/components/fields/RadioGroup/context.js +1 -1
- package/es/components/fields/RadioGroup/index.js +1 -1
- package/es/components/fields/SearchInput/SearchInput.js +1 -1
- package/es/components/fields/SearchInput/index.js +1 -1
- package/es/components/fields/Select/Select.js +38 -5
- package/es/components/fields/Select/index.js +1 -1
- package/es/components/fields/Slider/Gradation.js +1 -1
- package/es/components/fields/Slider/Header.js +1 -1
- package/es/components/fields/Slider/RangeSlider.js +1 -1
- package/es/components/fields/Slider/Slider.js +1 -1
- package/es/components/fields/Slider/SliderBase.js +1 -1
- package/es/components/fields/Slider/SliderInput.js +1 -1
- package/es/components/fields/Slider/SliderThumb.js +1 -1
- package/es/components/fields/Slider/SliderTrack.js +1 -1
- package/es/components/fields/Slider/elements.js +1 -1
- package/es/components/fields/Slider/index.js +1 -1
- package/es/components/fields/Slider/types.js +1 -1
- package/es/components/fields/Switch/Switch.js +1 -1
- package/es/components/fields/Switch/index.js +1 -1
- package/es/components/fields/TextArea/TextArea.js +1 -1
- package/es/components/fields/TextArea/index.js +1 -1
- package/es/components/fields/TextInput/TextInput.js +1 -1
- package/es/components/fields/TextInput/TextInputBase.js +1 -1
- package/es/components/fields/TextInput/index.js +1 -1
- package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/es/components/fields/TextInputMapper/index.js +1 -1
- package/es/components/fields/index.js +1 -1
- package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/es/components/form/FieldWrapper/index.js +1 -1
- package/es/components/form/FieldWrapper/types.js +1 -1
- package/es/components/form/Form/Field.js +1 -1
- package/es/components/form/Form/Form.js +1 -1
- package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/es/components/form/Form/ResetButton/index.js +1 -1
- package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/es/components/form/Form/SubmitButton/index.js +1 -1
- package/es/components/form/Form/SubmitError.js +1 -1
- package/es/components/form/Form/index.js +1 -1
- package/es/components/form/Form/types.js +1 -1
- package/es/components/form/Form/use-field/index.js +1 -1
- package/es/components/form/Form/use-field/types.js +1 -1
- package/es/components/form/Form/use-field/use-field-props.js +1 -1
- package/es/components/form/Form/use-field/use-field.js +1 -1
- package/es/components/form/Form/use-form.js +1 -1
- package/es/components/form/Form/validation.js +1 -1
- package/es/components/form/Label.js +1 -1
- package/es/components/form/index.js +1 -1
- package/es/components/form/wrapper.js +1 -1
- package/es/components/layout/Flex.js +1 -1
- package/es/components/layout/Flow.js +1 -1
- package/es/components/layout/Grid.js +1 -1
- package/es/components/layout/Panel.js +1 -1
- package/es/components/layout/Prefix.js +1 -1
- package/es/components/layout/ResizablePanel.js +1 -1
- package/es/components/layout/Space.js +1 -1
- package/es/components/layout/Suffix.js +1 -1
- package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
- package/es/components/navigation/Link/Link.js +1 -1
- package/es/components/organisms/FileTabs/FileTabs.js +1 -1
- package/es/components/organisms/Modal/Modal.js +1 -1
- package/es/components/organisms/StatsCard/StatsCard.js +1 -1
- package/es/components/other/Base64Upload/Base64Upload.js +1 -1
- package/es/components/other/Calendar/Calendar.js +1 -1
- package/es/components/other/Calendar/CalendarCell.js +1 -1
- package/es/components/other/Calendar/CalendarGrid.js +1 -1
- package/es/components/other/Calendar/RangeCalendar.js +1 -1
- package/es/components/other/CloudLogo/CloudLogo.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/es/components/overlays/AlertDialog/index.js +1 -1
- package/es/components/overlays/AlertDialog/types.js +1 -1
- package/es/components/overlays/Dialog/Dialog.js +1 -1
- package/es/components/overlays/Dialog/DialogContainer.js +1 -1
- package/es/components/overlays/Dialog/DialogForm.js +1 -1
- package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/es/components/overlays/Dialog/context.js +1 -1
- package/es/components/overlays/Dialog/index.js +2 -2
- package/es/components/overlays/Dialog/{dialog-container.js → use-dialog-container.js} +3 -3
- package/es/components/overlays/Modal/Modal.js +1 -1
- package/es/components/overlays/Modal/OpenTransition.js +1 -1
- package/es/components/overlays/Modal/Overlay.js +1 -1
- package/es/components/overlays/Modal/Popover.js +1 -1
- package/es/components/overlays/Modal/Tray.js +1 -1
- package/es/components/overlays/Modal/Underlay.js +1 -1
- package/es/components/overlays/Modal/index.js +1 -1
- package/es/components/overlays/Modal/types.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
- package/es/components/overlays/NewNotifications/Notification.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
- package/es/components/overlays/NewNotifications/index.js +1 -1
- package/es/components/overlays/NewNotifications/types.js +1 -1
- package/es/components/overlays/Notification/Notification.js +1 -1
- package/es/components/overlays/OverlayWrapper.js +1 -1
- package/es/components/overlays/Toasts/Toast.js +1 -1
- package/es/components/overlays/Toasts/index.js +1 -1
- package/es/components/overlays/Toasts/types.js +1 -1
- package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
- package/es/components/overlays/Tooltip/Tooltip.js +1 -1
- package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/es/components/overlays/Tooltip/context.js +1 -1
- package/es/components/overlays/Tooltip/index.js +1 -1
- package/es/components/portal/Portal.js +1 -1
- package/es/components/portal/PortalProvider.js +1 -1
- package/es/components/portal/index.js +1 -1
- package/es/components/portal/storybook/templates/CustomRoot.js +1 -1
- package/es/components/portal/storybook/templates/PortalOrder.js +1 -1
- package/es/components/portal/storybook/templates/basic.js +1 -1
- package/es/components/portal/storybook/templates/index.js +1 -1
- package/es/components/portal/types.js +1 -1
- package/es/components/portal/usePortal.js +1 -1
- package/es/components/shared/InvalidIcon.js +1 -1
- package/es/components/shared/ValidIcon.js +1 -1
- package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/es/components/status/LoadingAnimation/index.js +1 -1
- package/es/components/status/Spin/Cube.js +1 -1
- package/es/components/status/Spin/InternalSpinner.js +1 -1
- package/es/components/status/Spin/Spin.js +1 -1
- package/es/components/status/Spin/SpinsContainer.js +1 -1
- package/es/components/status/Spin/index.js +1 -1
- package/es/components/status/Spin/types.js +1 -1
- package/es/components/status/index.js +1 -1
- package/es/data/themes.js +1 -1
- package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/es/icons/AdjustmentsIcon.js +1 -1
- package/es/icons/AiIcon.js +1 -1
- package/es/icons/AreaChartIcon.js +1 -1
- package/es/icons/BackwardIcon.js +1 -1
- package/es/icons/BarChartIcon.js +1 -1
- package/es/icons/BellFilledIcon.js +1 -1
- package/es/icons/BellIcon.js +1 -1
- package/es/icons/BooleanIcon.js +1 -1
- package/es/icons/CalendarEditIcon.js +1 -1
- package/es/icons/CalendarIcon.js +1 -1
- package/es/icons/CaretDownIcon.js +1 -1
- package/es/icons/CaretUpIcon.js +1 -1
- package/es/icons/ChartAreaStackedIcon.js +1 -1
- package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarGroupedIcon.js +1 -1
- package/es/icons/ChartBarHorizontalIcon.js +1 -1
- package/es/icons/ChartBarLineIcon.js +1 -1
- package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBoxPlot2Icon.js +1 -1
- package/es/icons/ChartBoxPlotIcon.js +1 -1
- package/es/icons/ChartBubbleIcon.js +1 -1
- package/es/icons/ChartDonut2Icon.js +1 -1
- package/es/icons/ChartFunnelIcon.js +1 -1
- package/es/icons/ChartPie2Icon.js +1 -1
- package/es/icons/ChartScatterIcon.js +1 -1
- package/es/icons/CheckCircleFilledIcon.js +1 -1
- package/es/icons/CheckCircleIcon.js +1 -1
- package/es/icons/CheckIcon.js +1 -1
- package/es/icons/CircleFilledIcon.js +1 -1
- package/es/icons/ClearIcon.js +1 -1
- package/es/icons/CloseCircleFilledIcon.js +1 -1
- package/es/icons/CloseCircleIcon.js +1 -1
- package/es/icons/CloseIcon.js +1 -1
- package/es/icons/CodeIcon.js +1 -1
- package/es/icons/CopyIcon.js +1 -1
- package/es/icons/CountIcon.js +1 -1
- package/es/icons/CubeIcon.js +1 -1
- package/es/icons/DangerIcon.js +1 -1
- package/es/icons/DashboardIcon.js +1 -1
- package/es/icons/DatabaseIcon.js +1 -1
- package/es/icons/DirectionIcon.js +1 -1
- package/es/icons/DonutIcon.js +1 -1
- package/es/icons/DownIcon.js +1 -1
- package/es/icons/EditIcon.js +1 -1
- package/es/icons/ExclamationCircleFilledIcon.js +1 -1
- package/es/icons/ExclamationCircleIcon.js +1 -1
- package/es/icons/ExclamationIcon.js +1 -1
- package/es/icons/EyeIcon.js +1 -1
- package/es/icons/EyeInvisibleIcon.js +1 -1
- package/es/icons/FilterIcon.js +1 -1
- package/es/icons/FolderFilledIcon.js +1 -1
- package/es/icons/FolderIcon.js +1 -1
- package/es/icons/FolderOpenFilledIcon.js +1 -1
- package/es/icons/FolderOpenIcon.js +1 -1
- package/es/icons/ForwardIcon.js +1 -1
- package/es/icons/HierarchyIcon.js +1 -1
- package/es/icons/Icon.js +1 -1
- package/es/icons/InfoCircleIcon.js +1 -1
- package/es/icons/InfoIcon.js +1 -1
- package/es/icons/KeyIcon.js +1 -1
- package/es/icons/LeftIcon.js +1 -1
- package/es/icons/LineChartIcon.js +1 -1
- package/es/icons/LoadingIcon.js +1 -1
- package/es/icons/LockFilledIcon.js +1 -1
- package/es/icons/LockIcon.js +1 -1
- package/es/icons/MoreIcon.js +1 -1
- package/es/icons/NotAllowedIcon.js +1 -1
- package/es/icons/NumberIcon.js +1 -1
- package/es/icons/PauseCircleFilledIcon.js +1 -1
- package/es/icons/PauseCircleIcon.js +1 -1
- package/es/icons/PauseIcon.js +1 -1
- package/es/icons/PieChartIcon.js +1 -1
- package/es/icons/PlayCircleIcon.js +1 -1
- package/es/icons/PlayIcon.js +1 -1
- package/es/icons/PlusIcon.js +1 -1
- package/es/icons/ReloadIcon.js +1 -1
- package/es/icons/ReportIcon.js +1 -1
- package/es/icons/ReturnIcon.js +1 -1
- package/es/icons/RightIcon.js +1 -1
- package/es/icons/SchemeIcon.js +1 -1
- package/es/icons/SearchIcon.js +1 -1
- package/es/icons/SettingsIcon.js +1 -1
- package/es/icons/ShieldFilledIcon.js +1 -1
- package/es/icons/ShieldIcon.js +1 -1
- package/es/icons/SlashIcon.js +1 -1
- package/es/icons/SparklesIcon.js +1 -1
- package/es/icons/SqlIcon.js +1 -1
- package/es/icons/StatsIcon.js +1 -1
- package/es/icons/StopIcon.js +1 -1
- package/es/icons/StringIcon.js +1 -1
- package/es/icons/SwitchIcon.js +1 -1
- package/es/icons/TableIcon.js +1 -1
- package/es/icons/ThumbsDownIcon.js +1 -1
- package/es/icons/ThumbsUpIcon.js +1 -1
- package/es/icons/ThunderboltCrossedIcon.js +1 -1
- package/es/icons/ThunderboltFilledIcon.js +1 -1
- package/es/icons/ThunderboltIcon.js +1 -1
- package/es/icons/TimeIcon.js +1 -1
- package/es/icons/UnlockIcon.js +1 -1
- package/es/icons/UpIcon.js +1 -1
- package/es/icons/UserGroupIcon.js +1 -1
- package/es/icons/UserIcon.js +1 -1
- package/es/icons/UserLockIcon.js +1 -1
- package/es/icons/ViewIcon.js +1 -1
- package/es/icons/WarningFilledIcon.js +1 -1
- package/es/icons/WarningIcon.js +1 -1
- package/es/icons/add-new-icon.js +1 -1
- package/es/icons/index.js +1 -1
- package/es/icons/wrap-icon.js +1 -1
- package/es/index.js +1 -1
- package/es/provider.js +4 -1
- package/es/providers/TrackingProvider.js +1 -1
- package/es/services/notification.js +1 -1
- package/es/shared/form.js +1 -1
- package/es/shared/index.js +1 -1
- package/es/stories/Form.legacy-stories.js +1 -1
- package/es/stories/FormFieldArgs.js +1 -1
- package/es/stories/Layout.stories.js +1 -1
- package/es/stories/Tasty.stories.js +1 -1
- package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
- package/es/stories/components/DialogFormApp.js +1 -1
- package/es/stories/components/StyledButton.js +1 -1
- package/es/stories/lists/baseProps.js +1 -1
- package/es/tasty/index.js +1 -1
- package/es/tasty/providers/BreakpointsProvider.js +1 -1
- package/es/tasty/styles/align.js +1 -1
- package/es/tasty/styles/border.js +1 -1
- package/es/tasty/styles/boxShadow.combinator.js +1 -1
- package/es/tasty/styles/color.js +1 -1
- package/es/tasty/styles/createStyle.js +1 -1
- package/es/tasty/styles/dimension.js +1 -1
- package/es/tasty/styles/display.js +1 -1
- package/es/tasty/styles/fade.js +1 -1
- package/es/tasty/styles/fill.js +1 -1
- package/es/tasty/styles/flow.js +1 -1
- package/es/tasty/styles/font.js +1 -1
- package/es/tasty/styles/fontStyle.js +1 -1
- package/es/tasty/styles/gap.js +1 -1
- package/es/tasty/styles/groupRadius.js +1 -1
- package/es/tasty/styles/height.js +1 -1
- package/es/tasty/styles/index.js +1 -1
- package/es/tasty/styles/inset.js +1 -1
- package/es/tasty/styles/justify.js +1 -1
- package/es/tasty/styles/list.js +1 -1
- package/es/tasty/styles/margin.js +1 -1
- package/es/tasty/styles/marginBlock.js +1 -1
- package/es/tasty/styles/marginInline.js +1 -1
- package/es/tasty/styles/outline.js +1 -1
- package/es/tasty/styles/padding.js +1 -1
- package/es/tasty/styles/paddingBlock.js +1 -1
- package/es/tasty/styles/paddingInline.js +1 -1
- package/es/tasty/styles/place.js +1 -1
- package/es/tasty/styles/predefined.js +1 -1
- package/es/tasty/styles/preset.js +1 -1
- package/es/tasty/styles/radius.js +1 -1
- package/es/tasty/styles/reset.js +1 -1
- package/es/tasty/styles/scrollbar.js +1 -1
- package/es/tasty/styles/shadow.js +1 -1
- package/es/tasty/styles/styledScrollbar.js +1 -1
- package/es/tasty/styles/transition.js +1 -1
- package/es/tasty/styles/types.js +1 -1
- package/es/tasty/styles/width.js +1 -1
- package/es/tasty/tasty.js +1 -1
- package/es/tasty/types.js +1 -1
- package/es/tasty/utils/cache-wrapper.js +1 -1
- package/es/tasty/utils/case-converter.js +1 -1
- package/es/tasty/utils/colors.js +1 -1
- package/es/tasty/utils/dotize.js +1 -1
- package/es/tasty/utils/filterBaseProps.js +1 -1
- package/es/tasty/utils/getDisplayName.js +1 -1
- package/es/tasty/utils/getModCombinations.js +1 -1
- package/es/tasty/utils/mergeStyles.js +1 -1
- package/es/tasty/utils/modAttrs.js +1 -1
- package/es/tasty/utils/renderStyles.js +1 -1
- package/es/tasty/utils/responsive.js +1 -1
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +1 -1
- package/es/tasty/utils/warnings.js +1 -1
- package/es/tokens.js +1 -1
- package/es/type-checks.js +1 -1
- package/es/utils/ResizeSensor.js +1 -1
- package/es/utils/modules.js +1 -1
- package/es/utils/promise.js +1 -1
- package/es/utils/random.js +7 -1
- package/es/utils/range.js +1 -1
- package/es/utils/react/Slots.js +1 -1
- package/es/utils/react/chain.js +1 -1
- package/es/utils/react/index.js +2 -1
- package/es/utils/react/interactions.js +1 -1
- package/es/utils/react/isTextOnly.js +1 -1
- package/es/utils/react/mapProps.js +1 -1
- package/es/utils/react/mergeProps.js +1 -1
- package/es/utils/react/nullableValue.js +1 -1
- package/es/utils/react/sharedStore.js +51 -0
- package/es/utils/react/useCombinedRefs.js +1 -1
- package/es/utils/react/useEventBus.js +124 -0
- package/es/utils/react/useId.js +1 -1
- package/es/utils/react/useIsDarwin.js +1 -1
- package/es/utils/react/useKeySymbols.js +1 -1
- package/es/utils/react/useLayoutEffect.js +1 -1
- package/es/utils/react/useQaProps.js +1 -1
- package/es/utils/react/useViewportSize.js +1 -1
- package/es/utils/react/wrapNodeIfPlain.js +1 -1
- package/es/utils/transitions.js +1 -1
- package/es/utils/tree.js +1 -1
- package/es/utils/warnings.js +1 -1
- package/es/version.js +2 -2
- package/package.json +1 -1
- package/types/components/actions/Menu/MenuTrigger.d.ts +2 -3
- package/types/components/actions/index.d.ts +2 -0
- package/types/components/actions/use-anchored-menu.d.ts +34 -0
- package/types/components/actions/use-context-menu.d.ts +42 -0
- package/types/components/content/Card/Card.d.ts +2 -2
- package/types/components/content/CopyPasteBlock/CopyPasteBlock.d.ts +1 -1
- package/types/components/fields/Select/Select.d.ts +2 -1
- package/types/components/overlays/Dialog/index.d.ts +1 -1
- package/types/utils/random.d.ts +4 -0
- package/types/utils/react/index.d.ts +2 -0
- package/types/utils/react/sharedStore.d.ts +11 -0
- package/types/utils/react/useEventBus.d.ts +74 -0
- /package/types/components/overlays/Dialog/{dialog-container.d.ts → use-dialog-container.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
# @cube-dev/ui-kit
|
2
2
|
|
3
|
+
## 0.67.0
|
4
|
+
|
5
|
+
### Minor Changes
|
6
|
+
|
7
|
+
- [#725](https://github.com/cube-js/cube-ui-kit/pull/725) [`4b789d2b`](https://github.com/cube-js/cube-ui-kit/commit/4b789d2bddc3bee1c91194c2d76b1c5946cc9cbc) Thanks [@tenphi](https://github.com/tenphi)! - Add useEventBus hook to emit global events and subscribe to them.
|
8
|
+
|
9
|
+
- [#725](https://github.com/cube-js/cube-ui-kit/pull/725) [`4b789d2b`](https://github.com/cube-js/cube-ui-kit/commit/4b789d2bddc3bee1c91194c2d76b1c5946cc9cbc) Thanks [@tenphi](https://github.com/tenphi)! - Add useContextMenu hook to invoke a context menu in the exact place of the click.
|
10
|
+
|
11
|
+
- [#725](https://github.com/cube-js/cube-ui-kit/pull/725) [`4b789d2b`](https://github.com/cube-js/cube-ui-kit/commit/4b789d2bddc3bee1c91194c2d76b1c5946cc9cbc) Thanks [@tenphi](https://github.com/tenphi)! - Add useAnchoredMenu hook to programmatically invoke a menu anchored to the specific element.
|
12
|
+
|
13
|
+
## 0.66.1
|
14
|
+
|
15
|
+
### Patch Changes
|
16
|
+
|
17
|
+
- [#722](https://github.com/cube-js/cube-ui-kit/pull/722) [`7eaf393`](https://github.com/cube-js/cube-ui-kit/commit/7eaf393cedb574237afee6579ab21b7abf57f83e) Thanks [@tenphi](https://github.com/tenphi)! - Fix a bug when CommandMenu is unable to be navigated via keys when the search input is filled with any value.
|
18
|
+
|
3
19
|
## 0.66.0
|
4
20
|
|
5
21
|
### Minor Changes
|
package/es/_internal/index.js
CHANGED
package/es/components/Block.js
CHANGED
package/es/components/Root.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @license MIT
|
3
3
|
* author: Cube Dev Team
|
4
|
-
* @cube-dev/ui-kit v0.
|
4
|
+
* @cube-dev/ui-kit v0.67.0
|
5
5
|
* Released under the MIT license.
|
6
6
|
*/
|
7
7
|
|
@@ -14,6 +14,7 @@ import { TrackingProvider } from '../providers/TrackingProvider';
|
|
14
14
|
import { BASE_STYLES, BLOCK_STYLES, extractStyles, filterBaseProps, tasty, } from '../tasty';
|
15
15
|
import { TOKENS } from '../tokens';
|
16
16
|
import { useViewportSize } from '../utils/react';
|
17
|
+
import { EventBusProvider } from '../utils/react/useEventBus';
|
17
18
|
import { GlobalStyles } from './GlobalStyles';
|
18
19
|
import { AlertDialogApiProvider } from './overlays/AlertDialog';
|
19
20
|
import { NotificationsProvider } from './overlays/NewNotifications/NotificationsContext/NotificationsProvider';
|
@@ -83,7 +84,7 @@ export function Root(allProps) {
|
|
83
84
|
? height + 'px'
|
84
85
|
: '100dvh',
|
85
86
|
...style,
|
86
|
-
}, children: [_jsx(GlobalStyles, { bodyStyles: bodyStyles, applyLegacyTokens: applyLegacyTokens, publicUrl: publicUrl, fonts: fonts, font: font, monospaceFont: monospaceFont, fontDisplay: fontDisplay }), _jsx(ModalProvider, { children: _jsx(PortalProvider, { value: ref, children: _jsx(NotificationsProvider, { rootRef: ref, children: _jsx(AlertDialogApiProvider, { children: children }) }) }) })] }) }) }) }));
|
87
|
+
}, children: [_jsx(GlobalStyles, { bodyStyles: bodyStyles, applyLegacyTokens: applyLegacyTokens, publicUrl: publicUrl, fonts: fonts, font: font, monospaceFont: monospaceFont, fontDisplay: fontDisplay }), _jsx(ModalProvider, { children: _jsx(PortalProvider, { value: ref, children: _jsx(EventBusProvider, { children: _jsx(NotificationsProvider, { rootRef: ref, children: _jsx(AlertDialogApiProvider, { children: children }) }) }) }) })] }) }) }) }));
|
87
88
|
}
|
88
89
|
|
89
90
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @license MIT
|
3
3
|
* author: Cube Dev Team
|
4
|
-
* @cube-dev/ui-kit v0.
|
4
|
+
* @cube-dev/ui-kit v0.67.0
|
5
5
|
* Released under the MIT license.
|
6
6
|
*/
|
7
7
|
|
@@ -148,6 +148,7 @@ function CommandMenuBase(props, ref) {
|
|
148
148
|
const hasSections = collectionItems.some((item) => item.type === 'section');
|
149
149
|
// Track focused key for aria-activedescendant
|
150
150
|
const [focusedKey, setFocusedKey] = React.useState(null);
|
151
|
+
const focusedKeyRef = useRef(null);
|
151
152
|
// Apply filtering to collection items for rendering and empty state checks
|
152
153
|
const filteredCollectionItems = useMemo(() => {
|
153
154
|
const term = searchValue.trim();
|
@@ -272,28 +273,31 @@ function CommandMenuBase(props, ref) {
|
|
272
273
|
return () => clearTimeout(timeoutId);
|
273
274
|
}
|
274
275
|
}, [autoFocus, contextProps.autoFocus]);
|
276
|
+
// Track the previous search value to only run auto-focus when search actually changes
|
277
|
+
const prevSearchValueRef = useRef('');
|
275
278
|
// Auto-focus first item when search value changes (but not on initial render)
|
276
279
|
React.useEffect(() => {
|
277
|
-
|
278
|
-
|
280
|
+
const currentSearchValue = searchValue.trim();
|
281
|
+
const prevSearchValue = prevSearchValueRef.current;
|
282
|
+
// Only auto-focus when search value actually changes
|
283
|
+
if (currentSearchValue !== prevSearchValue && currentSearchValue !== '') {
|
279
284
|
const firstSelectableKey = findFirstSelectableItem();
|
280
285
|
if (firstSelectableKey && hasFilteredItems) {
|
281
286
|
// Focus the first item in the selection manager
|
282
287
|
treeState.selectionManager.setFocusedKey(firstSelectableKey);
|
283
288
|
setFocusedKey(firstSelectableKey);
|
289
|
+
focusedKeyRef.current = firstSelectableKey;
|
284
290
|
}
|
285
291
|
else {
|
286
292
|
// Clear focus if no items are available
|
287
293
|
treeState.selectionManager.setFocusedKey(null);
|
288
294
|
setFocusedKey(null);
|
295
|
+
focusedKeyRef.current = null;
|
289
296
|
}
|
290
297
|
}
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
hasFilteredItems,
|
295
|
-
treeState.selectionManager,
|
296
|
-
]);
|
298
|
+
// Update the previous search value
|
299
|
+
prevSearchValueRef.current = currentSearchValue;
|
300
|
+
}, [searchValue, findFirstSelectableItem, hasFilteredItems]);
|
297
301
|
// Extract styles
|
298
302
|
const extractedStyles = useMemo(() => extractStyles(props, CONTAINER_STYLES), [props]);
|
299
303
|
// Determine if we should show empty state based on actual filtered collection
|
@@ -327,74 +331,77 @@ function CommandMenuBase(props, ref) {
|
|
327
331
|
if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
|
328
332
|
e.preventDefault();
|
329
333
|
const isArrowDown = e.key === 'ArrowDown';
|
330
|
-
const { selectionManager
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
//
|
338
|
-
const
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
let keys = [...collection.getKeys()];
|
346
|
-
if (direction === 'backward') {
|
347
|
-
keys = keys.reverse();
|
348
|
-
}
|
349
|
-
let startIndex = keys.indexOf(startKey);
|
350
|
-
if (startIndex === -1) {
|
351
|
-
return null;
|
334
|
+
const { selectionManager } = treeState;
|
335
|
+
// Use the ref to get the current focused key synchronously
|
336
|
+
const currentKey = focusedKeyRef.current || selectionManager.focusedKey;
|
337
|
+
// Helper function to get all visible item keys by applying filter to tree state collection
|
338
|
+
const getVisibleItemKeys = () => {
|
339
|
+
const keys = [];
|
340
|
+
const term = searchValue.trim();
|
341
|
+
// Use the tree state's collection and apply filter manually
|
342
|
+
for (const item of treeState.collection) {
|
343
|
+
if (item.type === 'item') {
|
344
|
+
const text = item.textValue ?? String(item.rendered ?? '');
|
345
|
+
if (enhancedFilter(text, term, item.props)) {
|
346
|
+
keys.push(item.key);
|
347
|
+
}
|
348
|
+
}
|
352
349
|
}
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
350
|
+
return keys;
|
351
|
+
};
|
352
|
+
// Helper function to find next selectable key in a direction
|
353
|
+
const findNextSelectableKey = (currentIndex, direction, visibleKeys) => {
|
354
|
+
const increment = direction === 'forward' ? 1 : -1;
|
355
|
+
for (let i = currentIndex + increment; i >= 0 && i < visibleKeys.length; i += increment) {
|
356
|
+
const key = visibleKeys[i];
|
357
|
+
if (!selectionManager.isDisabled(key)) {
|
359
358
|
return key;
|
360
359
|
}
|
361
360
|
}
|
362
361
|
return null;
|
363
362
|
};
|
364
363
|
// Helper function to find first or last selectable key
|
365
|
-
const findFirstLastSelectableKey = (direction) => {
|
366
|
-
const
|
367
|
-
|
364
|
+
const findFirstLastSelectableKey = (direction, visibleKeys) => {
|
365
|
+
const keysToCheck = direction === 'forward'
|
366
|
+
? visibleKeys
|
367
|
+
: [...visibleKeys].reverse();
|
368
368
|
for (const key of keysToCheck) {
|
369
|
-
|
370
|
-
if (node &&
|
371
|
-
node.type === 'item' &&
|
372
|
-
!selectionManager.isDisabled(key)) {
|
369
|
+
if (!selectionManager.isDisabled(key)) {
|
373
370
|
return key;
|
374
371
|
}
|
375
372
|
}
|
376
373
|
return null;
|
377
374
|
};
|
375
|
+
const visibleKeys = getVisibleItemKeys();
|
376
|
+
if (visibleKeys.length === 0) {
|
377
|
+
return; // No visible items to navigate
|
378
|
+
}
|
378
379
|
let nextKey;
|
379
380
|
const direction = isArrowDown ? 'forward' : 'backward';
|
380
381
|
if (currentKey == null) {
|
381
382
|
// No current focus, start from the first/last item
|
382
|
-
nextKey = findFirstLastSelectableKey(direction);
|
383
|
+
nextKey = findFirstLastSelectableKey(direction, visibleKeys);
|
383
384
|
}
|
384
385
|
else {
|
385
|
-
// Find
|
386
|
-
const
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
386
|
+
// Find current position in visible keys
|
387
|
+
const currentIndex = visibleKeys.indexOf(currentKey);
|
388
|
+
if (currentIndex === -1) {
|
389
|
+
// Current key not in visible items, start from beginning/end
|
390
|
+
nextKey = findFirstLastSelectableKey(direction, visibleKeys);
|
391
|
+
}
|
392
|
+
else {
|
393
|
+
// Find next selectable item from current position
|
394
|
+
nextKey = findNextSelectableKey(currentIndex, direction, visibleKeys);
|
395
|
+
// If no next key found, wrap to first/last selectable item
|
396
|
+
if (nextKey == null) {
|
397
|
+
nextKey = findFirstLastSelectableKey(direction, visibleKeys);
|
398
|
+
}
|
393
399
|
}
|
394
400
|
}
|
395
401
|
if (nextKey != null) {
|
396
402
|
selectionManager.setFocusedKey(nextKey);
|
397
403
|
setFocusedKey(nextKey);
|
404
|
+
focusedKeyRef.current = nextKey; // Update ref immediately
|
398
405
|
}
|
399
406
|
}
|
400
407
|
else if (e.key === 'Enter' ||
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @license MIT
|
3
3
|
* author: Cube Dev Team
|
4
|
-
* @cube-dev/ui-kit v0.
|
4
|
+
* @cube-dev/ui-kit v0.67.0
|
5
5
|
* Released under the MIT license.
|
6
6
|
*/
|
7
7
|
|
@@ -28,7 +28,6 @@ export const StyledCommandMenu = tasty({
|
|
28
28
|
'popover | tray': '0px 5px 15px #dark.05',
|
29
29
|
},
|
30
30
|
overflow: 'hidden',
|
31
|
-
width: '20x 50x',
|
32
31
|
height: {
|
33
32
|
'': 'initial',
|
34
33
|
popover: 'initial max-content (50vh - 4x)',
|
@@ -1,48 +1,58 @@
|
|
1
1
|
/**
|
2
2
|
* @license MIT
|
3
3
|
* author: Cube Dev Team
|
4
|
-
* @cube-dev/ui-kit v0.
|
4
|
+
* @cube-dev/ui-kit v0.67.0
|
5
5
|
* Released under the MIT license.
|
6
6
|
*/
|
7
7
|
|
8
8
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
9
9
|
import { PressResponder } from '@react-aria/interactions';
|
10
10
|
import { useDOMRef, useIsMobileDevice } from '@react-spectrum/utils';
|
11
|
-
import { forwardRef, Fragment, useRef } from 'react';
|
11
|
+
import { forwardRef, Fragment, useEffect, useMemo, useRef, } from 'react';
|
12
12
|
import { DismissButton, useMenuTrigger, useOverlayPosition, } from 'react-aria';
|
13
13
|
import { useMenuTriggerState } from 'react-stately';
|
14
|
+
import { generateRandomId } from '../../../utils/random';
|
14
15
|
import { SlotProvider } from '../../../utils/react';
|
16
|
+
import { useEventBus } from '../../../utils/react/useEventBus';
|
15
17
|
import { Popover, Tray } from '../../overlays/Modal';
|
16
18
|
import { MenuContext } from './context';
|
17
19
|
function MenuTrigger(props, ref) {
|
18
20
|
const menuPopoverRef = useRef(null);
|
19
21
|
const triggerRef = useRef();
|
20
22
|
const domRef = useDOMRef(ref);
|
21
|
-
const menuTriggerRef = domRef || triggerRef;
|
23
|
+
const menuTriggerRef = props.targetRef || domRef || triggerRef;
|
22
24
|
const menuRef = useRef(null);
|
23
|
-
const { children,
|
25
|
+
const { children, shouldFlip = true, closeOnSelect, trigger = 'press', isDisabled, isDummy, } = props;
|
26
|
+
// Generate a unique ID for this menu instance
|
27
|
+
const menuId = useMemo(() => generateRandomId(), []);
|
28
|
+
// Get event bus for menu synchronization
|
29
|
+
const { emit, on } = useEventBus();
|
24
30
|
if (!Array.isArray(children) || children.length > 2) {
|
25
31
|
throw new Error('MenuTrigger must have exactly 2 children');
|
26
32
|
}
|
27
33
|
let [menuTrigger, menu] = children;
|
28
34
|
const state = useMenuTriggerState(props);
|
35
|
+
// Listen for other menus opening and close this one if needed
|
36
|
+
useEffect(() => {
|
37
|
+
const unsubscribe = on('menu:open', (data) => {
|
38
|
+
// If another menu is opening and this menu is open, close this one
|
39
|
+
if (data.menuId !== menuId && state.isOpen && !isDummy) {
|
40
|
+
state.close();
|
41
|
+
}
|
42
|
+
});
|
43
|
+
return unsubscribe;
|
44
|
+
}, [on, menuId, state]);
|
45
|
+
// Emit event when this menu opens
|
46
|
+
useEffect(() => {
|
47
|
+
if (state.isOpen && !isDummy) {
|
48
|
+
emit('menu:open', { menuId });
|
49
|
+
}
|
50
|
+
}, [state.isOpen, emit, menuId, isDummy]);
|
29
51
|
if (typeof menuTrigger === 'function') {
|
30
52
|
menuTrigger = menuTrigger(state);
|
31
53
|
}
|
32
54
|
const { menuTriggerProps, menuProps } = useMenuTrigger({ isDisabled }, state, menuTriggerRef);
|
33
|
-
let initialPlacement;
|
34
|
-
switch (direction) {
|
35
|
-
case 'left':
|
36
|
-
case 'right':
|
37
|
-
case 'start':
|
38
|
-
case 'end':
|
39
|
-
initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}`;
|
40
|
-
break;
|
41
|
-
case 'bottom':
|
42
|
-
case 'top':
|
43
|
-
default:
|
44
|
-
initialPlacement = `${direction} ${align}`;
|
45
|
-
}
|
55
|
+
let initialPlacement = props.placement ?? 'bottom start';
|
46
56
|
const isMobile = useIsMobileDevice();
|
47
57
|
const { overlayProps: positionProps, placement } = useOverlayPosition({
|
48
58
|
targetRef: menuTriggerRef,
|
@@ -53,8 +63,8 @@ function MenuTrigger(props, ref) {
|
|
53
63
|
isOpen: state.isOpen && !isMobile,
|
54
64
|
onClose: state.close,
|
55
65
|
containerPadding: props.containerPadding,
|
56
|
-
offset: props.offset
|
57
|
-
crossOffset: props.crossOffset,
|
66
|
+
offset: props.offset ?? 8,
|
67
|
+
crossOffset: props.crossOffset ?? 0,
|
58
68
|
});
|
59
69
|
const menuContext = {
|
60
70
|
...menuProps,
|
@@ -80,9 +90,26 @@ function MenuTrigger(props, ref) {
|
|
80
90
|
overlay = (_jsx(Tray, { isOpen: state.isOpen, onClose: state.close, children: contents }));
|
81
91
|
}
|
82
92
|
else {
|
83
|
-
overlay = (_jsx(Popover, { ref: menuPopoverRef, hideArrow: true, isNonModal: true, isOpen: state.isOpen, style: positionProps.style, placement: placement,
|
93
|
+
overlay = (_jsx(Popover, { ref: menuPopoverRef, hideArrow: true, isNonModal: true, isOpen: state.isOpen, style: positionProps.style, placement: placement, shouldCloseOnInteractOutside: (el) => {
|
94
|
+
const menuTriggerEl = el.closest('[data-menu-trigger]');
|
95
|
+
// If no menu trigger was clicked, allow closing
|
96
|
+
if (!menuTriggerEl)
|
97
|
+
return true;
|
98
|
+
// For dummy triggers (like useAnchoredMenu), check if the clicked element
|
99
|
+
// is the target element or its descendant
|
100
|
+
if (isDummy &&
|
101
|
+
(menuTriggerEl === menuTriggerRef.current ||
|
102
|
+
menuTriggerRef.current?.contains(el))) {
|
103
|
+
return true;
|
104
|
+
}
|
105
|
+
// If the same trigger that opened this menu was clicked, allow closing
|
106
|
+
if (menuTriggerEl === menuTriggerRef.current)
|
107
|
+
return true;
|
108
|
+
// Otherwise, don't close (let event mechanism handle it)
|
109
|
+
return false;
|
110
|
+
}, onClose: state.close, children: contents }));
|
84
111
|
}
|
85
|
-
return (_jsxs(Fragment, { children: [_jsx(SlotProvider, { slots: { actionButton: { holdAffordance: trigger === 'longPress' } }, children: _jsx(PressResponder, { ...menuTriggerProps, ref: menuTriggerRef, isPressed: state.isOpen, children: menuTrigger }) }), _jsx(MenuContext.Provider, { value: menuContext, children: overlay })] }));
|
112
|
+
return (_jsxs(Fragment, { children: [_jsx(SlotProvider, { slots: { actionButton: { holdAffordance: trigger === 'longPress' } }, children: !isDummy ? (_jsx(PressResponder, { ...menuTriggerProps, ref: menuTriggerRef, "data-menu-trigger": true, isPressed: state.isOpen, children: menuTrigger })) : null }), _jsx(MenuContext.Provider, { value: menuContext, children: overlay })] }));
|
86
113
|
}
|
87
114
|
/**
|
88
115
|
* The MenuTrigger serves as a wrapper around a Menu and its associated trigger,
|