@cube-dev/ui-kit 0.84.0 → 0.85.1
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 +24 -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/Item.js +7 -2
- package/es/components/OpenTrasition.js +1 -1
- package/es/components/Root.js +1 -1
- 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 +1 -1
- package/es/components/actions/CommandMenu/index.js +1 -1
- package/es/components/actions/CommandMenu/styled.js +1 -1
- package/es/components/actions/ItemAction/ItemAction.js +127 -12
- package/es/components/actions/ItemAction/index.js +1 -1
- package/es/components/actions/ItemActionContext.js +25 -0
- package/es/components/actions/ItemButton/ItemButton.js +102 -6
- package/es/components/actions/ItemButton/index.js +1 -1
- package/es/components/actions/Link/Link.js +1 -1
- package/es/components/actions/Menu/Menu.js +1 -1
- package/es/components/actions/Menu/MenuItem.js +3 -3
- package/es/components/actions/Menu/MenuSection.js +1 -1
- package/es/components/actions/Menu/MenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- 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 +2 -1
- package/es/components/actions/use-action.js +1 -1
- package/es/components/actions/use-anchored-menu.js +1 -1
- package/es/components/actions/use-context-menu.js +1 -1
- 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/ItemBadge/ItemBadge.js +119 -0
- package/es/components/{fields/LegacyComboBox → content/ItemBadge}/index.js +2 -2
- package/es/components/content/ItemBase/ItemBase.js +92 -22
- package/es/components/content/ItemBase/index.js +2 -1
- package/es/components/content/List/SectionHeading.js +1 -1
- package/es/components/content/List/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 +33 -30
- 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 +4 -3
- package/es/components/fields/DatePicker/DatePicker.js +2 -3
- package/es/components/fields/DatePicker/DatePickerButton.js +3 -8
- 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 +3 -1
- package/es/components/fields/DatePicker/DateRangePicker.js +2 -3
- package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +9 -5
- 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/FilterListBox/FilterListBox.js +53 -109
- package/es/components/fields/FilterListBox/index.js +1 -1
- package/es/components/fields/FilterPicker/FilterPicker.js +1 -2
- package/es/components/fields/FilterPicker/index.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 +3 -3
- 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 +3 -3
- package/es/components/fields/Picker/Picker.js +2 -3
- package/es/components/fields/Picker/index.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 +37 -35
- 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 -2
- 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 +3 -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/helpers/DisplayTransition/DisplayTransition.js +17 -3
- package/es/components/helpers/index.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/organisms/FileTabs/FileTabs.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 +2 -2
- package/es/components/other/Calendar/CalendarCell.js +7 -10
- 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 +1 -1
- package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
- 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/NotificationsDialogContext.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 -14
- 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 +2 -2
- package/es/components/overlays/Tooltip/TooltipProvider.js +4 -4
- package/es/components/overlays/Tooltip/TooltipTrigger.js +5 -4
- 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/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/item-themes.js +48 -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/ChartHeatmapIcon.js +1 -1
- package/es/icons/ChartKPIIcon.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/CubePauseIcon.js +1 -1
- package/es/icons/CubePlayIcon.js +1 -1
- package/es/icons/CurrencyDollarIcon.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/DecimalDecreaseIcon.js +1 -1
- package/es/icons/DecimalIncreaseIcon.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/Number123Icon.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/PercentageIcon.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/ProgressBarIcon.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 +3 -2
- package/es/provider.js +1 -1
- package/es/providers/TrackingProvider.js +1 -1
- package/es/providers/navigation.types.js +1 -1
- package/es/providers/navigationAdapter.default.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/debug.js +1 -1
- package/es/tasty/index.js +1 -1
- package/es/tasty/injector/index.js +1 -1
- package/es/tasty/injector/injector.js +1 -1
- package/es/tasty/injector/sheet-manager.js +1 -1
- package/es/tasty/injector/types.js +1 -1
- package/es/tasty/parser/classify.js +1 -1
- package/es/tasty/parser/const.js +1 -1
- package/es/tasty/parser/lru.js +1 -1
- package/es/tasty/parser/parser.js +1 -1
- package/es/tasty/parser/tokenizer.js +1 -1
- package/es/tasty/parser/types.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/outline.js +1 -1
- package/es/tasty/styles/padding.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/isDevEnv.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 +8 -1
- package/es/utils/ResizeSensor.js +1 -1
- package/es/utils/index.js +27 -0
- package/es/utils/modules.js +1 -1
- package/es/utils/promise.js +1 -1
- package/es/utils/raf.js +47 -0
- package/es/utils/random.js +1 -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/forwardRefWithGenerics.js +1 -1
- package/es/utils/react/index.js +1 -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 +1 -1
- package/es/utils/react/useCombinedRefs.js +1 -1
- package/es/utils/react/useControlledFocusVisible.js +1 -1
- package/es/utils/react/useEventBus.js +1 -1
- 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/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/Item.d.ts +4 -1
- package/types/components/actions/ItemAction/ItemAction.d.ts +15 -7
- package/types/components/actions/ItemActionContext.d.ts +14 -0
- package/types/components/actions/ItemButton/ItemButton.d.ts +14 -3
- package/types/components/actions/Menu/Menu.d.ts +4 -1
- package/types/components/actions/index.d.ts +1 -0
- package/types/components/content/ItemBadge/ItemBadge.d.ts +16 -0
- package/types/components/content/ItemBadge/index.d.ts +2 -0
- package/types/components/content/ItemBase/ItemBase.d.ts +21 -3
- package/types/components/content/ItemBase/index.d.ts +1 -0
- package/types/components/fields/ComboBox/ComboBox.d.ts +4 -2
- package/types/components/fields/DatePicker/DateInputBase.d.ts +1 -0
- package/types/components/fields/ListBox/ListBox.d.ts +1 -1
- package/types/components/fields/Select/Select.d.ts +4 -1
- package/types/components/fields/index.d.ts +0 -1
- package/types/components/helpers/DisplayTransition/DisplayTransition.d.ts +5 -1
- package/types/data/item-themes.d.ts +1 -0
- package/types/index.d.ts +3 -1
- package/types/tokens.d.ts +7 -0
- package/types/utils/index.d.ts +9 -0
- package/types/utils/raf.d.ts +17 -0
- package/es/components/fields/LegacyComboBox/LegacyComboBox.js +0 -290
- package/es/utils/transitions.js +0 -63
- package/types/components/fields/LegacyComboBox/LegacyComboBox.d.ts +0 -49
- package/types/components/fields/LegacyComboBox/index.d.ts +0 -1
- package/types/utils/transitions.d.ts +0 -8
|
@@ -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.85.1
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -13,8 +13,11 @@ import { CheckIcon } from '../../../icons/CheckIcon';
|
|
|
13
13
|
import { LoadingIcon } from '../../../icons/LoadingIcon';
|
|
14
14
|
import { CONTAINER_STYLES, tasty, } from '../../../tasty';
|
|
15
15
|
import { mergeProps } from '../../../utils/react';
|
|
16
|
+
import { ItemAction } from '../../actions/ItemAction';
|
|
17
|
+
import { ItemActionProvider } from '../../actions/ItemActionContext';
|
|
16
18
|
import { TooltipProvider, } from '../../overlays/Tooltip/TooltipProvider';
|
|
17
19
|
import { HotKeys } from '../HotKeys';
|
|
20
|
+
import { ItemBadge } from '../ItemBadge';
|
|
18
21
|
const DEFAULT_ICON_STYLES = {
|
|
19
22
|
display: 'grid',
|
|
20
23
|
placeItems: 'center',
|
|
@@ -36,6 +39,18 @@ const ADDITION_STYLES = {
|
|
|
36
39
|
placeContent: 'stretch',
|
|
37
40
|
gridRow: 'span 2',
|
|
38
41
|
};
|
|
42
|
+
const ACTIONS_EVENT_HANDLERS = {
|
|
43
|
+
onClick: (e) => e.stopPropagation(),
|
|
44
|
+
onPointerDown: (e) => e.stopPropagation(),
|
|
45
|
+
onPointerUp: (e) => e.stopPropagation(),
|
|
46
|
+
onMouseDown: (e) => e.stopPropagation(),
|
|
47
|
+
onMouseUp: (e) => e.stopPropagation(),
|
|
48
|
+
onKeyDown: (e) => {
|
|
49
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
50
|
+
e.stopPropagation();
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
};
|
|
39
54
|
const ItemBaseElement = tasty({
|
|
40
55
|
styles: {
|
|
41
56
|
display: 'inline-grid',
|
|
@@ -46,8 +61,11 @@ const ItemBaseElement = tasty({
|
|
|
46
61
|
placeContent: 'stretch',
|
|
47
62
|
gridColumns: {
|
|
48
63
|
'': '1sf max-content max-content',
|
|
64
|
+
'with-actions': '1sf max-content max-content max-content',
|
|
49
65
|
'with-icon ^ with-prefix': 'max-content 1sf max-content max-content',
|
|
66
|
+
'with-icon ^ with-prefix & with-actions': 'max-content 1sf max-content max-content max-content',
|
|
50
67
|
'with-icon & with-prefix': 'max-content max-content 1sf max-content max-content',
|
|
68
|
+
'with-icon & with-prefix & with-actions': 'max-content max-content 1sf max-content max-content max-content',
|
|
51
69
|
'(with-icon ^ with-right-icon) & !with-description & !with-prefix & !with-suffix & !with-label': 'max-content',
|
|
52
70
|
},
|
|
53
71
|
gridRows: {
|
|
@@ -58,7 +76,10 @@ const ItemBaseElement = tasty({
|
|
|
58
76
|
position: 'relative',
|
|
59
77
|
padding: 0,
|
|
60
78
|
margin: 0,
|
|
61
|
-
radius:
|
|
79
|
+
radius: {
|
|
80
|
+
'': true,
|
|
81
|
+
card: '1cr',
|
|
82
|
+
},
|
|
62
83
|
height: {
|
|
63
84
|
'': 'min $size',
|
|
64
85
|
'[data-size="inline"]': 'initial',
|
|
@@ -127,12 +148,12 @@ const ItemBaseElement = tasty({
|
|
|
127
148
|
padding: {
|
|
128
149
|
'': '$block-padding $inline-padding',
|
|
129
150
|
'(with-icon | with-prefix)': '$block-padding $inline-padding $block-padding 0',
|
|
130
|
-
'(with-right-icon | with-suffix)': '$block-padding 0 $block-padding $inline-padding',
|
|
131
|
-
'(with-icon | with-prefix) & (with-right-icon | with-suffix)': '$block-padding 0',
|
|
151
|
+
'(with-right-icon | with-suffix | with-actions)': '$block-padding 0 $block-padding $inline-padding',
|
|
152
|
+
'(with-icon | with-prefix) & (with-right-icon | with-suffix | with-actions)': '$block-padding 0',
|
|
132
153
|
'with-description & !with-description-block': '$block-padding $inline-padding 0 $inline-padding',
|
|
133
154
|
'with-description & !with-description-block & (with-icon | with-prefix)': '$block-padding $inline-padding 0 0',
|
|
134
|
-
'with-description & !with-description-block & (with-right-icon | with-suffix)': '$block-padding 0 0 $inline-padding',
|
|
135
|
-
'with-description & !with-description-block & (with-icon | with-prefix) & (with-right-icon | with-suffix)': '$block-padding 0 0 0',
|
|
155
|
+
'with-description & !with-description-block & (with-right-icon | with-suffix | with-actions)': '$block-padding 0 0 $inline-padding',
|
|
156
|
+
'with-description & !with-description-block & (with-icon | with-prefix) & (with-right-icon | with-suffix | with-actions)': '$block-padding 0 0 0',
|
|
136
157
|
},
|
|
137
158
|
gridRow: {
|
|
138
159
|
'': 'span 2',
|
|
@@ -162,11 +183,12 @@ const ItemBaseElement = tasty({
|
|
|
162
183
|
'(with-icon | with-prefix)': '0 $inline-padding $block-padding 0',
|
|
163
184
|
'(with-right-icon | with-suffix)': '0 0 $block-padding $inline-padding',
|
|
164
185
|
'(with-icon | with-prefix) & (with-right-icon | with-suffix)': '0 0 $block-padding 0',
|
|
165
|
-
'with-description-block': '0 ($inline-padding - $inline-compensation + 1bw) $
|
|
166
|
-
'with-description-block & !with-icon': '0 ($inline-padding - $inline-compensation + 1bw) $
|
|
167
|
-
'with-description-block & !with-right-icon': '0 $inline-padding $
|
|
168
|
-
'with-description-block & !with-right-icon & !with-icon': '0 $inline-padding $
|
|
186
|
+
'with-description-block': '0 ($inline-padding - $inline-compensation + 1bw) $bottom-padding ($inline-padding - $inline-compensation + 1bw)',
|
|
187
|
+
'with-description-block & !with-icon': '0 ($inline-padding - $inline-compensation + 1bw) $bottom-padding $inline-padding',
|
|
188
|
+
'with-description-block & !with-right-icon': '0 $inline-padding $bottom-padding ($inline-padding - $inline-compensation + 1bw)',
|
|
189
|
+
'with-description-block & !with-right-icon & !with-icon': '0 $inline-padding $bottom-padding $inline-padding',
|
|
169
190
|
},
|
|
191
|
+
'$bottom-padding': 'max($block-padding, (($size - 4x) / 2) + $block-padding)',
|
|
170
192
|
},
|
|
171
193
|
Prefix: {
|
|
172
194
|
...ADDITION_STYLES,
|
|
@@ -182,6 +204,24 @@ const ItemBaseElement = tasty({
|
|
|
182
204
|
'with-right-icon': 0,
|
|
183
205
|
},
|
|
184
206
|
},
|
|
207
|
+
Actions: {
|
|
208
|
+
display: 'flex',
|
|
209
|
+
gap: '1bw',
|
|
210
|
+
placeItems: 'center',
|
|
211
|
+
placeContent: 'stretch',
|
|
212
|
+
placeSelf: 'stretch',
|
|
213
|
+
padding: '0 $side-padding',
|
|
214
|
+
boxSizing: 'border-box',
|
|
215
|
+
height: 'min ($size - 2bw)',
|
|
216
|
+
gridRow: 'span 2',
|
|
217
|
+
width: {
|
|
218
|
+
'': 'var(--actions-width, 0px)',
|
|
219
|
+
'with-actions-content': 'calc-size(max-content, size)',
|
|
220
|
+
},
|
|
221
|
+
transition: 'width $transition ease-out',
|
|
222
|
+
interpolateSize: 'allow-keywords',
|
|
223
|
+
'$side-padding': 'max(min(.5x, (($size - 3x + 2bw) / 2)), 1bw)',
|
|
224
|
+
},
|
|
185
225
|
},
|
|
186
226
|
variants: {
|
|
187
227
|
// Default theme
|
|
@@ -219,7 +259,8 @@ const ItemBaseElement = tasty({
|
|
|
219
259
|
},
|
|
220
260
|
styleProps: CONTAINER_STYLES,
|
|
221
261
|
});
|
|
222
|
-
export function useAutoTooltip({ tooltip, children, labelProps,
|
|
262
|
+
export function useAutoTooltip({ tooltip, children, labelProps, isDynamicLabel = false, // if actions are set
|
|
263
|
+
}) {
|
|
223
264
|
// Determine if auto tooltip is enabled
|
|
224
265
|
// Auto tooltip only works when children is a string (overflow detection needs text)
|
|
225
266
|
const isAutoTooltipEnabled = useMemo(() => {
|
|
@@ -325,8 +366,9 @@ export function useAutoTooltip({ tooltip, children, labelProps, }) {
|
|
|
325
366
|
}
|
|
326
367
|
// Boolean tooltip - auto tooltip on overflow
|
|
327
368
|
if (tooltip === true) {
|
|
328
|
-
if ((children || labelProps) &&
|
|
329
|
-
|
|
369
|
+
if ((children || labelProps) &&
|
|
370
|
+
(isLabelOverflowed || isDynamicLabel)) {
|
|
371
|
+
return (_jsx(TooltipProvider, { placement: defaultTooltipPlacement, title: children, isDisabled: !isLabelOverflowed && isDynamicLabel, children: (triggerProps, ref) => renderElement(triggerProps, ref) }));
|
|
330
372
|
}
|
|
331
373
|
}
|
|
332
374
|
// Object tooltip - advanced configuration
|
|
@@ -337,8 +379,11 @@ export function useAutoTooltip({ tooltip, children, labelProps, }) {
|
|
|
337
379
|
return (_jsx(TooltipProvider, { placement: defaultTooltipPlacement, ...tooltipProps, children: (triggerProps, ref) => renderElement(triggerProps, ref) }));
|
|
338
380
|
}
|
|
339
381
|
// If title is provided with auto=true, OR no title but auto behavior enabled
|
|
340
|
-
if ((children || labelProps) &&
|
|
341
|
-
|
|
382
|
+
if ((children || labelProps) &&
|
|
383
|
+
(isLabelOverflowed || isDynamicLabel)) {
|
|
384
|
+
return (_jsx(TooltipProvider, { placement: defaultTooltipPlacement, title: tooltipProps.title ?? children, isDisabled: !isLabelOverflowed &&
|
|
385
|
+
isDynamicLabel &&
|
|
386
|
+
tooltipProps.isDisabled !== true, ...tooltipProps, children: (triggerProps, ref) => renderElement(triggerProps, ref) }));
|
|
342
387
|
}
|
|
343
388
|
}
|
|
344
389
|
}
|
|
@@ -354,7 +399,7 @@ export function useAutoTooltip({ tooltip, children, labelProps, }) {
|
|
|
354
399
|
};
|
|
355
400
|
}
|
|
356
401
|
const ItemBase = (props, ref) => {
|
|
357
|
-
let { children, size, type = 'item', theme = 'default', mods, icon, rightIcon, prefix, suffix, description, descriptionPlacement = 'inline', labelProps, descriptionProps, keyboardShortcutProps, styles, htmlType, isSelected, hotkeys, tooltip = true, isDisabled, loadingSlot = 'auto', isLoading = false, defaultTooltipPlacement = 'top', ...rest } = props;
|
|
402
|
+
let { children, size = 'medium', type = 'item', theme = 'default', mods, icon, rightIcon, prefix, suffix, description, descriptionPlacement = 'inline', labelProps, descriptionProps, keyboardShortcutProps, styles, htmlType, isSelected, hotkeys, tooltip = true, isDisabled, style, loadingSlot = 'auto', isLoading = false, isCard = false, actions, defaultTooltipPlacement = 'top', ...rest } = props;
|
|
358
403
|
// Loading state makes the component disabled
|
|
359
404
|
const finalIsDisabled = isDisabled === true || (isLoading && isDisabled !== false);
|
|
360
405
|
// Determine if we should show checkbox instead of icon
|
|
@@ -368,6 +413,11 @@ const ItemBase = (props, ref) => {
|
|
|
368
413
|
return 'rightIcon';
|
|
369
414
|
return 'icon'; // fallback
|
|
370
415
|
}, [loadingSlot, icon, rightIcon]);
|
|
416
|
+
const showDescriptions = useMemo(() => {
|
|
417
|
+
const copyProps = { ...descriptionProps };
|
|
418
|
+
delete copyProps.id;
|
|
419
|
+
return !!(description || Object.keys(copyProps).length > 0);
|
|
420
|
+
}, [description, descriptionProps]);
|
|
371
421
|
// Apply loading state to appropriate slots
|
|
372
422
|
const finalIcon = isLoading && resolvedLoadingSlot === 'icon' ? _jsx(LoadingIcon, {}) : icon;
|
|
373
423
|
const finalRightIcon = isLoading && resolvedLoadingSlot === 'rightIcon' ? (_jsx(LoadingIcon, {})) : (rightIcon);
|
|
@@ -398,12 +448,15 @@ const ItemBase = (props, ref) => {
|
|
|
398
448
|
'with-label': !!(children || labelProps),
|
|
399
449
|
'with-prefix': !!finalPrefix,
|
|
400
450
|
'with-suffix': !!finalSuffix,
|
|
401
|
-
'with-description':
|
|
402
|
-
'with-description-block':
|
|
451
|
+
'with-description': showDescriptions,
|
|
452
|
+
'with-description-block': showDescriptions && descriptionPlacement === 'block',
|
|
453
|
+
'with-actions': !!actions,
|
|
454
|
+
'with-actions-content': !!(actions && actions !== true),
|
|
403
455
|
checkbox: hasCheckbox,
|
|
404
456
|
disabled: finalIsDisabled,
|
|
405
457
|
selected: isSelected === true,
|
|
406
458
|
loading: isLoading,
|
|
459
|
+
card: isCard === true,
|
|
407
460
|
...mods,
|
|
408
461
|
};
|
|
409
462
|
}, [
|
|
@@ -411,14 +464,21 @@ const ItemBase = (props, ref) => {
|
|
|
411
464
|
finalRightIcon,
|
|
412
465
|
finalPrefix,
|
|
413
466
|
finalSuffix,
|
|
414
|
-
|
|
467
|
+
showDescriptions,
|
|
415
468
|
descriptionPlacement,
|
|
416
469
|
hasCheckbox,
|
|
417
470
|
isSelected,
|
|
418
471
|
isLoading,
|
|
472
|
+
isCard,
|
|
473
|
+
actions,
|
|
419
474
|
mods,
|
|
420
475
|
]);
|
|
421
|
-
const { labelProps: finalLabelProps, labelRef, renderWithTooltip, } = useAutoTooltip({
|
|
476
|
+
const { labelProps: finalLabelProps, labelRef, renderWithTooltip, } = useAutoTooltip({
|
|
477
|
+
tooltip,
|
|
478
|
+
children,
|
|
479
|
+
labelProps,
|
|
480
|
+
isDynamicLabel: !!actions,
|
|
481
|
+
});
|
|
422
482
|
// Create a stable render function that doesn't call hooks
|
|
423
483
|
const renderItemElement = useCallback((tooltipTriggerProps, tooltipRef) => {
|
|
424
484
|
// Use callback ref to merge multiple refs without calling hooks
|
|
@@ -435,7 +495,11 @@ const ItemBase = (props, ref) => {
|
|
|
435
495
|
tooltipRef.current = element;
|
|
436
496
|
}
|
|
437
497
|
};
|
|
438
|
-
|
|
498
|
+
// Merge custom size style with provided style
|
|
499
|
+
const finalStyle = typeof size === 'number'
|
|
500
|
+
? { ...style, '--size': `${size}px` }
|
|
501
|
+
: style;
|
|
502
|
+
return (_jsxs(ItemBaseElement, { ref: handleRef, variant: theme && type ? `${theme}.${type}` : undefined, disabled: finalIsDisabled, "data-size": typeof size === 'number' ? undefined : size, "data-type": type, "data-theme": theme, "aria-disabled": finalIsDisabled, "aria-selected": isSelected, mods: mods, styles: styles, type: htmlType, ...mergeProps(rest, tooltipTriggerProps || {}), style: finalStyle, children: [finalIcon && (_jsx("div", { "data-element": "Icon", children: hasCheckbox ? _jsx(CheckIcon, {}) : finalIcon })), finalPrefix && _jsx("div", { "data-element": "Prefix", children: finalPrefix }), children || labelProps ? (_jsx("div", { "data-element": "Label", ...finalLabelProps, ref: labelRef, children: children })) : null, showDescriptions ? (_jsx("div", { "data-element": "Description", ...descriptionProps, children: description })) : null, finalSuffix && _jsx("div", { "data-element": "Suffix", children: finalSuffix }), finalRightIcon && (_jsx("div", { "data-element": "RightIcon", children: finalRightIcon })), actions && (_jsx("div", { "data-element": "Actions", ...ACTIONS_EVENT_HANDLERS, children: actions !== true ? (_jsx(ItemActionProvider, { type: type, theme: theme, children: actions })) : null }))] }));
|
|
439
503
|
}, [
|
|
440
504
|
ref,
|
|
441
505
|
theme,
|
|
@@ -457,10 +521,16 @@ const ItemBase = (props, ref) => {
|
|
|
457
521
|
descriptionProps,
|
|
458
522
|
finalSuffix,
|
|
459
523
|
finalRightIcon,
|
|
524
|
+
actions,
|
|
525
|
+
size,
|
|
526
|
+
style,
|
|
460
527
|
]);
|
|
461
528
|
return renderWithTooltip(renderItemElement, defaultTooltipPlacement);
|
|
462
529
|
};
|
|
463
|
-
const _ItemBase = forwardRef(ItemBase)
|
|
530
|
+
const _ItemBase = Object.assign(forwardRef(ItemBase), {
|
|
531
|
+
Action: ItemAction,
|
|
532
|
+
Badge: ItemBadge,
|
|
533
|
+
});
|
|
464
534
|
export { _ItemBase as ItemBase };
|
|
465
535
|
|
|
466
536
|
|
|
@@ -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.85.1
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -13,6 +13,7 @@ import { useEvent } from '../../../_internal';
|
|
|
13
13
|
import { CloseIcon, DirectionIcon, LoadingIcon } from '../../../icons';
|
|
14
14
|
import { useProviderProps } from '../../../provider';
|
|
15
15
|
import { BASE_STYLES, COLOR_STYLES, extractStyles, OUTER_STYLES, tasty, } from '../../../tasty';
|
|
16
|
+
import { chainRaf } from '../../../utils/raf';
|
|
16
17
|
import { generateRandomId } from '../../../utils/random';
|
|
17
18
|
import { mergeProps, useCombinedRefs, useLayoutEffect, } from '../../../utils/react';
|
|
18
19
|
import { useFocus } from '../../../utils/react/interactions';
|
|
@@ -34,6 +35,13 @@ const InputElement = tasty({
|
|
|
34
35
|
as: 'input',
|
|
35
36
|
styles: DEFAULT_INPUT_STYLES,
|
|
36
37
|
});
|
|
38
|
+
const ComboBoxOverlayWrapper = tasty({
|
|
39
|
+
qa: 'ComboBoxOverlayWrapper',
|
|
40
|
+
styles: {
|
|
41
|
+
position: 'absolute',
|
|
42
|
+
zIndex: 1000,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
37
45
|
const ComboBoxOverlayElement = tasty({
|
|
38
46
|
qa: 'ComboBoxOverlay',
|
|
39
47
|
styles: {
|
|
@@ -41,7 +49,7 @@ const ComboBoxOverlayElement = tasty({
|
|
|
41
49
|
gridRows: '1sf',
|
|
42
50
|
gridColumns: '1sf',
|
|
43
51
|
width: '$min-width max-content 50vw',
|
|
44
|
-
height: 'initial max-content (50vh -
|
|
52
|
+
height: 'initial max-content (50vh - 5x)',
|
|
45
53
|
overflow: 'auto',
|
|
46
54
|
background: '#white',
|
|
47
55
|
radius: '1cr',
|
|
@@ -348,9 +356,9 @@ function useComboBoxKeyboard({ isPopoverOpen, listStateRef, hasResults, allowsCu
|
|
|
348
356
|
});
|
|
349
357
|
return { keyboardProps };
|
|
350
358
|
}
|
|
351
|
-
const ComboBoxInput = forwardRef(function ComboBoxInput({ qa, inputRef, id, value, placeholder, isDisabled, isReadOnly, autoFocus, size, mods, inputStyles, keyboardProps, focusProps, onChange, onFocus, isPopoverOpen, hasResults, comboBoxId, listStateRef, }, ref) {
|
|
359
|
+
const ComboBoxInput = forwardRef(function ComboBoxInput({ qa, inputRef, id, value, placeholder, isDisabled, isReadOnly, autoFocus, autoComplete, size, mods, inputStyles, keyboardProps, focusProps, onChange, onFocus, isPopoverOpen, hasResults, comboBoxId, listStateRef, }, ref) {
|
|
352
360
|
const combinedRef = useCombinedRefs(ref, inputRef);
|
|
353
|
-
return (_jsx(InputElement, { ref: combinedRef, qa: qa, id: id, type: "text", value: value, placeholder: placeholder, isDisabled: isDisabled, readOnly: isReadOnly, autoFocus: autoFocus, "data-autofocus": autoFocus ? '' : undefined, onChange: onChange, onFocus: onFocus, onBlur: focusProps.onBlur, ...keyboardProps, styles: inputStyles, mods: mods, "data-size": size, role: "combobox", "aria-expanded": isPopoverOpen && hasResults, "aria-haspopup": "listbox", "aria-controls": isPopoverOpen && hasResults
|
|
361
|
+
return (_jsx(InputElement, { ref: combinedRef, qa: qa, id: id, type: "text", value: value, placeholder: placeholder, isDisabled: isDisabled, readOnly: isReadOnly, autoFocus: autoFocus, autoComplete: autoComplete, "data-autofocus": autoFocus ? '' : undefined, onChange: onChange, onFocus: onFocus, onBlur: focusProps.onBlur, ...keyboardProps, styles: inputStyles, mods: mods, "data-size": size, role: "combobox", "aria-expanded": isPopoverOpen && hasResults, "aria-haspopup": "listbox", "aria-controls": isPopoverOpen && hasResults
|
|
354
362
|
? `ComboBoxListBox-${comboBoxId}`
|
|
355
363
|
: undefined, "aria-activedescendant": isPopoverOpen &&
|
|
356
364
|
hasResults &&
|
|
@@ -358,7 +366,7 @@ const ComboBoxInput = forwardRef(function ComboBoxInput({ qa, inputRef, id, valu
|
|
|
358
366
|
? `ListBoxItem-${listStateRef.current?.selectionManager.focusedKey}`
|
|
359
367
|
: undefined }));
|
|
360
368
|
});
|
|
361
|
-
function ComboBoxOverlay({ isOpen, triggerRef, popoverRef, listBoxRef, direction, shouldFlip, overlayOffset, comboBoxWidth, comboBoxId, overlayStyles, listBoxStyles, optionStyles, sectionStyles, headingStyles, effectiveSelectedKey, isDisabled, disabledKeys, items, children, listStateRef, onSelectionChange, onClose, label, ariaLabel, compositeFocusProps, filter, }) {
|
|
369
|
+
function ComboBoxOverlay({ isOpen, triggerRef, popoverRef, listBoxRef, direction, shouldFlip, overlayOffset, comboBoxWidth, comboBoxId, overlayStyles, listBoxStyles, optionStyles, sectionStyles, headingStyles, effectiveSelectedKey, isDisabled, disabledKeys, items, children, listStateRef, onSelectionChange, onClose, label, ariaLabel, compositeFocusProps, filter, size = 'medium', }) {
|
|
362
370
|
// Overlay positioning
|
|
363
371
|
const { overlayProps: overlayPositionProps, placement, updatePosition, } = useOverlayPosition({
|
|
364
372
|
targetRef: triggerRef,
|
|
@@ -383,31 +391,26 @@ function ComboBoxOverlay({ isOpen, triggerRef, popoverRef, listBoxRef, direction
|
|
|
383
391
|
return false;
|
|
384
392
|
},
|
|
385
393
|
}, popoverRef);
|
|
386
|
-
// Update position when overlay opens
|
|
394
|
+
// Update position when overlay opens or content changes
|
|
387
395
|
useLayoutEffect(() => {
|
|
388
|
-
if (isOpen) {
|
|
389
|
-
// Use
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}, [isOpen, updatePosition]);
|
|
396
|
+
if (isOpen && updatePosition) {
|
|
397
|
+
// Use triple RAF to ensure layout is complete before positioning
|
|
398
|
+
// This gives enough time for the DisplayTransition and content to render
|
|
399
|
+
return chainRaf(() => {
|
|
400
|
+
updatePosition();
|
|
401
|
+
}, 3);
|
|
402
|
+
}
|
|
403
|
+
}, [isOpen]);
|
|
397
404
|
// Extract primary placement direction for consistent styling
|
|
398
405
|
const placementDirection = placement?.split(' ')[0] || direction;
|
|
399
|
-
const overlayContent = (_jsx(DisplayTransition, { isShown: isOpen, children: ({ phase, isShown, ref: transitionRef }) => (_jsx(
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
...overlayPositionProps.style,
|
|
408
|
-
}, children: _jsx(ListBox, { ref: listBoxRef, focusOnHover: true, disableSelectionToggle: true, id: `ComboBoxListBox-${comboBoxId}`, "aria-label": ariaLabel || (typeof label === 'string' ? label : 'Options'), selectedKey: effectiveSelectedKey, selectionMode: "single", isDisabled: isDisabled, disabledKeys: disabledKeys, shouldUseVirtualFocus: true, items: items, filter: filter, styles: listBoxStyles, optionStyles: optionStyles, sectionStyles: sectionStyles, headingStyles: headingStyles, stateRef: listStateRef, mods: {
|
|
409
|
-
popover: true,
|
|
410
|
-
}, onSelectionChange: onSelectionChange, children: children }) })) }));
|
|
406
|
+
const overlayContent = (_jsx(DisplayTransition, { isShown: isOpen, children: ({ phase, isShown, ref: transitionRef }) => (_jsx(ComboBoxOverlayWrapper, { ...mergeProps(overlayPositionProps, overlayBehaviorProps, compositeFocusProps), ref: popoverRef, style: overlayPositionProps.style, children: _jsx(ComboBoxOverlayElement, { ref: transitionRef, "data-placement": placementDirection, "data-phase": phase, mods: {
|
|
407
|
+
open: isShown,
|
|
408
|
+
hidden: phase === 'unmounted',
|
|
409
|
+
}, styles: overlayStyles, style: {
|
|
410
|
+
'--min-width': comboBoxWidth ? `${comboBoxWidth}px` : undefined,
|
|
411
|
+
}, children: _jsx(ListBox, { ref: listBoxRef, focusOnHover: true, disableSelectionToggle: true, id: `ComboBoxListBox-${comboBoxId}`, "aria-label": ariaLabel || (typeof label === 'string' ? label : 'Options'), selectedKey: effectiveSelectedKey, selectionMode: "single", isDisabled: isDisabled, disabledKeys: disabledKeys, shouldUseVirtualFocus: true, items: items, filter: filter, styles: listBoxStyles, optionStyles: optionStyles, sectionStyles: sectionStyles, headingStyles: headingStyles, stateRef: listStateRef, size: "medium", mods: {
|
|
412
|
+
popover: true,
|
|
413
|
+
}, onSelectionChange: onSelectionChange, children: children }) }) })) }));
|
|
411
414
|
return _jsx(Portal, { children: overlayContent });
|
|
412
415
|
}
|
|
413
416
|
// ============================================================================
|
|
@@ -428,7 +431,7 @@ export const ComboBox = forwardRef(function ComboBox(props, ref) {
|
|
|
428
431
|
};
|
|
429
432
|
},
|
|
430
433
|
});
|
|
431
|
-
let { qa, label, extra, labelStyles, isRequired, necessityIndicator, validationState, id, icon, prefix, isDisabled, autoFocus, wrapperRef, inputRef, triggerRef, popoverRef, listBoxRef, isLoading, inputStyles, optionStyles, triggerStyles, listBoxStyles, overlayStyles, fieldStyles, suffix, hideTrigger, message, description, size = 'medium', direction = 'bottom', shouldFlip = true, popoverTrigger = 'input', suffixPosition = 'before', filter, styles, labelSuffix, selectedKey, defaultSelectedKey, inputValue, defaultInputValue, onInputChange, isClearable, onClear, placeholder, allowsCustomValue, shouldCommitOnBlur = true, clearOnBlur, items, children: renderChildren, sectionStyles, headingStyles, isReadOnly, overlayOffset = 8, onSelectionChange: externalOnSelectionChange, sortSelectedToTop: sortSelectedToTopProp, onFocus, onBlur, onKeyDown, form, ...otherProps } = props;
|
|
434
|
+
let { qa, label, extra, labelStyles, isRequired, necessityIndicator, validationState, id, icon, prefix, isDisabled, autoFocus, autoComplete = 'off', wrapperRef, inputRef, triggerRef, popoverRef, listBoxRef, isLoading, inputStyles, optionStyles, triggerStyles, listBoxStyles, overlayStyles, fieldStyles, suffix, hideTrigger, message, description, size = 'medium', direction = 'bottom', shouldFlip = true, popoverTrigger = 'input', suffixPosition = 'before', filter, styles, labelSuffix, selectedKey, defaultSelectedKey, inputValue, defaultInputValue, onInputChange, isClearable, onClear, placeholder, allowsCustomValue, shouldCommitOnBlur = true, clearOnBlur, items, children: renderChildren, sectionStyles, headingStyles, isReadOnly, overlayOffset = 8, onSelectionChange: externalOnSelectionChange, sortSelectedToTop: sortSelectedToTopProp, onFocus, onBlur, onKeyDown, form, ...otherProps } = props;
|
|
432
435
|
// Generate a unique ID for this combobox instance
|
|
433
436
|
const comboBoxId = useMemo(() => generateRandomId(), []);
|
|
434
437
|
// State management hook
|
|
@@ -961,7 +964,7 @@ export const ComboBox = forwardRef(function ComboBox(props, ref) {
|
|
|
961
964
|
}, [shouldShowPopover, ensureInitialFocus]);
|
|
962
965
|
const comboBoxField = (_jsxs(ComboBoxWrapperElement, { ref: wrapperRef, mods: mods, styles: styles, style: {
|
|
963
966
|
zIndex: isFocused ? 1 : 'initial',
|
|
964
|
-
}, "data-size": size, ...compositeFocusProps, children: [prefix ? _jsx("div", { "data-element": "Prefix", children: prefix }) : null, _jsx(ComboBoxInput, { qa: qa || 'ComboBox', inputRef: inputRef, id: id, value: effectiveInputValue, placeholder: placeholder, isDisabled: isDisabled, isReadOnly: isReadOnly, autoFocus: autoFocus, size: size, mods: mods, inputStyles: inputStyles, keyboardProps: keyboardProps, focusProps: { ...focusProps, onBlur: handleInputBlur }, isPopoverOpen: isPopoverOpen, hasResults: hasResults, comboBoxId: comboBoxId, listStateRef: listStateRef, onChange: handleInputChange, onFocus: handleInputFocus }), _jsxs("div", { "data-element": "Suffix", children: [suffixPosition === 'before' ? suffix : null, validationState || isLoading ? (_jsxs(_Fragment, { children: [validationState && !isLoading ? validation : null, isLoading ? _jsx(LoadingIcon, {}) : null] })) : null, suffixPosition === 'after' ? suffix : null, showClearButton && (_jsx(ItemAction, { icon: _jsx(CloseIcon, {}), size: size, theme: validationState === 'invalid' ? 'danger' : undefined, qa: "ComboBoxClearButton", "data-no-trigger": hideTrigger ? '' : undefined, "aria-label": "Clear value", onPress: clearValue })), !hideTrigger ? (_jsx(ItemAction, { ref: triggerRef, "data-popover-trigger": true, icon: _jsx(DirectionIcon, { to: isPopoverOpen ? 'up' : 'down' }), qa: "ComboBoxTrigger", mods: {
|
|
967
|
+
}, "data-size": size, ...compositeFocusProps, children: [prefix ? _jsx("div", { "data-element": "Prefix", children: prefix }) : null, _jsx(ComboBoxInput, { qa: qa || 'ComboBox', inputRef: inputRef, id: id, value: effectiveInputValue, placeholder: placeholder, isDisabled: isDisabled, isReadOnly: isReadOnly, autoFocus: autoFocus, autoComplete: autoComplete, size: size, mods: mods, inputStyles: inputStyles, keyboardProps: keyboardProps, focusProps: { ...focusProps, onBlur: handleInputBlur }, isPopoverOpen: isPopoverOpen, hasResults: hasResults, comboBoxId: comboBoxId, listStateRef: listStateRef, onChange: handleInputChange, onFocus: handleInputFocus }), _jsxs("div", { "data-element": "Suffix", children: [suffixPosition === 'before' ? suffix : null, validationState || isLoading ? (_jsxs(_Fragment, { children: [validationState && !isLoading ? validation : null, isLoading ? _jsx(LoadingIcon, {}) : null] })) : null, suffixPosition === 'after' ? suffix : null, showClearButton && (_jsx(ItemAction, { icon: _jsx(CloseIcon, {}), size: size, theme: validationState === 'invalid' ? 'danger' : undefined, qa: "ComboBoxClearButton", "data-no-trigger": hideTrigger ? '' : undefined, "aria-label": "Clear value", onPress: clearValue })), !hideTrigger ? (_jsx(ItemAction, { ref: triggerRef, "data-popover-trigger": true, icon: _jsx(DirectionIcon, { to: isPopoverOpen ? 'up' : 'down' }), qa: "ComboBoxTrigger", mods: {
|
|
965
968
|
pressed: isPopoverOpen,
|
|
966
969
|
disabled: isDisabled,
|
|
967
970
|
loading: isLoading,
|
|
@@ -977,7 +980,7 @@ export const ComboBox = forwardRef(function ComboBox(props, ref) {
|
|
|
977
980
|
}
|
|
978
981
|
}
|
|
979
982
|
}
|
|
980
|
-
} })) : null] }), _jsx(ComboBoxOverlay, { isOpen: shouldShowPopover, triggerRef: wrapperRef, popoverRef: popoverRef, listBoxRef: listBoxRef, direction: direction, shouldFlip: shouldFlip, overlayOffset: overlayOffset, comboBoxWidth: comboBoxWidth, comboBoxId: comboBoxId, overlayStyles: overlayStyles, listBoxStyles: listBoxStyles, optionStyles: optionStyles, sectionStyles: sectionStyles, headingStyles: headingStyles, effectiveSelectedKey: effectiveSelectedKey, isDisabled: isDisabled, disabledKeys: props.disabledKeys, items: sortedItems, listStateRef: listStateRef, label: label, ariaLabel: props['aria-label'], compositeFocusProps: compositeFocusProps, filter: filterFn, onSelectionChange: handleSelectionChange, onClose: () => setIsPopoverOpen(false), children: children })] }));
|
|
983
|
+
} })) : null] }), _jsx(ComboBoxOverlay, { isOpen: shouldShowPopover, triggerRef: wrapperRef, popoverRef: popoverRef, listBoxRef: listBoxRef, direction: direction, shouldFlip: shouldFlip, overlayOffset: overlayOffset, comboBoxWidth: comboBoxWidth, comboBoxId: comboBoxId, overlayStyles: overlayStyles, listBoxStyles: listBoxStyles, optionStyles: optionStyles, sectionStyles: sectionStyles, headingStyles: headingStyles, effectiveSelectedKey: effectiveSelectedKey, isDisabled: isDisabled, disabledKeys: props.disabledKeys, items: sortedItems, listStateRef: listStateRef, label: label, ariaLabel: props['aria-label'], compositeFocusProps: compositeFocusProps, filter: filterFn, size: size, onSelectionChange: handleSelectionChange, onClose: () => setIsPopoverOpen(false), children: children })] }));
|
|
981
984
|
const { children: _, ...propsWithoutChildren } = props;
|
|
982
985
|
const finalProps = {
|
|
983
986
|
...propsWithoutChildren,
|
|
@@ -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.85.1
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -38,7 +38,7 @@ const DateInputElement = tasty({
|
|
|
38
38
|
});
|
|
39
39
|
function DateInputBase(props, ref) {
|
|
40
40
|
let inputRef = useRef(null);
|
|
41
|
-
let { isDisabled, inputStyles, children, fieldProps, style, disableFocusRing, autoFocus, validationState, isLoading, size = 'medium', } = props;
|
|
41
|
+
let { isDisabled, inputStyles, children, fieldProps, style, disableFocusRing, autoFocus, validationState, isLoading, size = 'medium', suffix, } = props;
|
|
42
42
|
let styles = extractStyles(props, CONTAINER_STYLES);
|
|
43
43
|
let { focusProps, isFocused } = useFocusRing({
|
|
44
44
|
isTextInput: true,
|
|
@@ -52,7 +52,8 @@ function DateInputBase(props, ref) {
|
|
|
52
52
|
disabled: isDisabled,
|
|
53
53
|
focused: isFocused && !disableFocusRing,
|
|
54
54
|
invalid: isInvalid,
|
|
55
|
-
|
|
55
|
+
suffix: (validationState && !isLoading) || isLoading || !!suffix,
|
|
56
|
+
}, ...mergeProps(fieldProps ?? {}, focusProps), style: style, children: [_jsx("div", { "data-element": "Contents", role: "presentation", children: _jsx(DateInputElement, { ref: mergeRefs(ref, inputRef), "data-size": size, role: "presentation", styles: inputStyles, children: children }) }), (validationState && !isLoading) || isLoading || suffix ? (_jsxs("div", { "data-element": "Suffix", children: [(validationState && !isLoading) || isLoading ? (_jsx("div", { "data-element": "State", children: validationState && !isLoading ? validation : null })) : null, suffix] })) : null] }));
|
|
56
57
|
}
|
|
57
58
|
const _DateInputBase = React.forwardRef(DateInputBase);
|
|
58
59
|
_DateInputBase.displayName = 'DateInputBase';
|