@cube-dev/ui-kit 0.69.1 → 0.69.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -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 +1 -1
- package/es/components/actions/Action/Action.js +1 -1
- package/es/components/actions/Button/Button.js +38 -16
- 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/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 +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 +7 -1
- package/es/components/actions/index.js +1 -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/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 +1 -1
- 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/FilterListBox/FilterListBox.js +48 -6
- package/es/components/fields/FilterListBox/index.js +1 -1
- package/es/components/fields/FilterPicker/FilterPicker.js +401 -138
- 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 +132 -24
- 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 +58 -41
- 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 +2 -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/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/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/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 +1 -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 +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/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/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/Button/Button.d.ts +30 -12
- package/types/components/fields/FilterListBox/FilterListBox.d.ts +11 -11
- package/types/components/fields/FilterPicker/FilterPicker.d.ts +22 -18
- package/types/components/fields/ListBox/ListBox.d.ts +38 -21
- package/types/components/overlays/Dialog/DialogTrigger.d.ts +1 -0
@@ -1,18 +1,20 @@
|
|
1
1
|
/**
|
2
2
|
* @license MIT
|
3
3
|
* author: Cube Dev Team
|
4
|
-
* @cube-dev/ui-kit v0.69.
|
4
|
+
* @cube-dev/ui-kit v0.69.3
|
5
5
|
* Released under the MIT license.
|
6
6
|
*/
|
7
7
|
|
8
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
9
9
|
import { useHover } from '@react-aria/interactions';
|
10
|
+
import { IconMinus } from '@tabler/icons-react';
|
10
11
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
11
|
-
import { forwardRef, useEffect, useMemo, useRef, } from 'react';
|
12
|
+
import { forwardRef, useEffect, useMemo, useRef, useState, } from 'react';
|
12
13
|
import { useKeyboard, useListBox, useListBoxSection, useOption, } from 'react-aria';
|
13
14
|
import { Section as BaseSection, Item, useListState } from 'react-stately';
|
14
15
|
import { useWarn } from '../../../_internal/hooks/use-warn';
|
15
16
|
import { CheckIcon } from '../../../icons';
|
17
|
+
import { Icon } from '../../../icons/index';
|
16
18
|
import { useProviderProps } from '../../../provider';
|
17
19
|
import { BASE_STYLES, COLOR_STYLES, extractStyles, OUTER_STYLES, tasty, } from '../../../tasty';
|
18
20
|
import { SIZES } from '../../../tokens';
|
@@ -26,7 +28,7 @@ const ListBoxWrapperElement = tasty({
|
|
26
28
|
styles: {
|
27
29
|
display: 'grid',
|
28
30
|
gridColumns: '1sf',
|
29
|
-
gridRows: 'max-content 1sf max-content',
|
31
|
+
gridRows: 'max-content max-content max-content 1sf max-content',
|
30
32
|
flow: 'column',
|
31
33
|
gap: 0,
|
32
34
|
position: 'relative',
|
@@ -57,7 +59,7 @@ const ListElement = tasty({
|
|
57
59
|
boxSizing: 'border-box',
|
58
60
|
margin: {
|
59
61
|
'': '.5x .5x 0 .5x',
|
60
|
-
sections: '0 .5x',
|
62
|
+
sections: '.5x .5x 0 .5x',
|
61
63
|
},
|
62
64
|
height: 'max-content',
|
63
65
|
},
|
@@ -84,6 +86,7 @@ const OptionElement = tasty({
|
|
84
86
|
margin: {
|
85
87
|
'': '0 0 1bw 0',
|
86
88
|
':last-of-type': '0',
|
89
|
+
all: '.5x',
|
87
90
|
},
|
88
91
|
height: {
|
89
92
|
'': 'min @size-md',
|
@@ -133,13 +136,13 @@ const OptionElement = tasty({
|
|
133
136
|
transition: 'theme',
|
134
137
|
opacity: {
|
135
138
|
'': 0,
|
136
|
-
'selected | :hover | focused': 1,
|
139
|
+
'selected | indeterminate | :hover | focused': 1,
|
137
140
|
},
|
138
141
|
fill: {
|
139
142
|
'': '#white',
|
140
|
-
selected: '#purple-text',
|
141
|
-
'invalid & !selected': '#white',
|
142
|
-
'invalid & selected': '#danger',
|
143
|
+
'selected | indeterminate': '#purple-text',
|
144
|
+
'invalid & !(selected | indeterminate)': '#white',
|
145
|
+
'invalid & (selected | indeterminate)': '#danger',
|
143
146
|
disabled: '#dark.12',
|
144
147
|
},
|
145
148
|
color: {
|
@@ -149,7 +152,7 @@ const OptionElement = tasty({
|
|
149
152
|
border: {
|
150
153
|
'': '#dark.30',
|
151
154
|
invalid: '#danger',
|
152
|
-
'disabled | (selected & !invalid)': '#clear',
|
155
|
+
'disabled | ((selected | indeterminate) & !invalid)': '#clear',
|
153
156
|
},
|
154
157
|
},
|
155
158
|
Content: {
|
@@ -202,6 +205,44 @@ const SectionListElement = tasty({
|
|
202
205
|
},
|
203
206
|
});
|
204
207
|
const PROP_STYLES = [...BASE_STYLES, ...OUTER_STYLES, ...COLOR_STYLES];
|
208
|
+
const SelectAllOption = ({ label = 'Select All', isSelected, isIndeterminate, isDisabled, isCheckable, size = 'medium', state, lastFocusSourceRef, onClick, }) => {
|
209
|
+
const { hoverProps, isHovered } = useHover({ isDisabled });
|
210
|
+
const markIcon = isIndeterminate ? (_jsx(Icon, { size: 12, stroke: 3, children: _jsx(IconMinus, {}) })) : (_jsx(CheckIcon, { size: 12, stroke: 3 }));
|
211
|
+
const localRef = useRef(null);
|
212
|
+
const handleOptionClick = (e) => {
|
213
|
+
// Mark focus changes from mouse clicks
|
214
|
+
if (lastFocusSourceRef) {
|
215
|
+
lastFocusSourceRef.current = 'mouse';
|
216
|
+
}
|
217
|
+
// If there's an onOptionClick callback and this is checkable in multiple mode,
|
218
|
+
// we need to distinguish between checkbox and content clicks
|
219
|
+
if (state.selectionManager.selectionMode === 'multiple') {
|
220
|
+
// Check if the click target is within the checkbox area
|
221
|
+
const clickTarget = e.target;
|
222
|
+
const checkboxElement = localRef.current?.querySelector('[data-element="CheckboxWrapper"]');
|
223
|
+
if (checkboxElement &&
|
224
|
+
(checkboxElement === clickTarget ||
|
225
|
+
checkboxElement.contains(clickTarget))) {
|
226
|
+
onClick?.(false);
|
227
|
+
}
|
228
|
+
else {
|
229
|
+
// Then call the callback (which will close the popover in FilterPicker)
|
230
|
+
onClick?.(true);
|
231
|
+
}
|
232
|
+
}
|
233
|
+
else {
|
234
|
+
onClick?.(true);
|
235
|
+
}
|
236
|
+
};
|
237
|
+
return (_jsxs(_Fragment, { children: [_jsxs(OptionElement, { ref: localRef, as: "div", ...hoverProps, "data-size": size, role: "option", "aria-selected": isSelected, mods: {
|
238
|
+
selected: isSelected,
|
239
|
+
disabled: isDisabled,
|
240
|
+
checkable: isCheckable,
|
241
|
+
hovered: isHovered,
|
242
|
+
indeterminate: isIndeterminate,
|
243
|
+
all: true,
|
244
|
+
}, style: { cursor: isDisabled ? 'not-allowed' : 'pointer' }, onClick: handleOptionClick, children: [isCheckable && (_jsx("div", { "data-element": "CheckboxWrapper", children: _jsx("div", { "data-element": "Checkbox", children: (isIndeterminate || isSelected) && markIcon }) })), _jsx("div", { "data-element": "Content", children: _jsx("div", { "data-element": "Label", children: label }) })] }), _jsx(StyledDivider, {})] }));
|
245
|
+
};
|
205
246
|
export const ListBox = forwardRef(function ListBox(props, ref) {
|
206
247
|
props = useProviderProps(props);
|
207
248
|
props = useFormProps(props);
|
@@ -225,7 +266,8 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
|
|
225
266
|
return fieldProps;
|
226
267
|
},
|
227
268
|
});
|
228
|
-
let { qa, label, extra, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, listStyles, optionStyles, sectionStyles, headingStyles, listRef, message, description, styles, mods: externalMods, size = 'medium', labelSuffix, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, shouldUseVirtualFocus, onSelectionChange, stateRef, focusOnHover, header, footer, headerStyles, footerStyles,
|
269
|
+
let { qa, label, extra, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, listStyles, optionStyles, sectionStyles, headingStyles, listRef, message, description, styles, mods: externalMods, size = 'medium', labelSuffix, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, shouldUseVirtualFocus, onSelectionChange, stateRef, focusOnHover, header, footer, headerStyles, footerStyles, onEscape, isCheckable, onOptionClick, showSelectAll, selectAllLabel, ...otherProps } = props;
|
270
|
+
const [, forceUpdate] = useState({});
|
229
271
|
// Wrap onSelectionChange to prevent selection when disabled and handle React Aria's Set format
|
230
272
|
const externalSelectionHandler = onSelectionChange || props.onChange;
|
231
273
|
const wrappedOnSelectionChange = useMemo(() => {
|
@@ -237,8 +279,11 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
|
|
237
279
|
return;
|
238
280
|
}
|
239
281
|
// React Aria always passes a Set for selection changes
|
240
|
-
//
|
241
|
-
if (keys
|
282
|
+
// Handle the special "all" case and convert to our public API format
|
283
|
+
if (keys === 'all') {
|
284
|
+
externalSelectionHandler('all');
|
285
|
+
}
|
286
|
+
else if (keys instanceof Set) {
|
242
287
|
if (keys.size === 0) {
|
243
288
|
externalSelectionHandler(props.selectionMode === 'multiple' ? [] : null);
|
244
289
|
}
|
@@ -253,7 +298,12 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
|
|
253
298
|
externalSelectionHandler(keys);
|
254
299
|
}
|
255
300
|
};
|
256
|
-
}, [
|
301
|
+
}, [
|
302
|
+
externalSelectionHandler,
|
303
|
+
isDisabled,
|
304
|
+
props.selectionMode,
|
305
|
+
showSelectAll,
|
306
|
+
]);
|
257
307
|
// Prepare props for useListState with correct selection props
|
258
308
|
const listStateProps = {
|
259
309
|
...props,
|
@@ -264,10 +314,16 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
|
|
264
314
|
// Set selection props based on mode
|
265
315
|
if (listStateProps.selectionMode === 'multiple') {
|
266
316
|
if (selectedKeys !== undefined) {
|
267
|
-
|
317
|
+
// Handle "all" selection by passing it directly to React Aria
|
318
|
+
listStateProps.selectedKeys =
|
319
|
+
selectedKeys === 'all' ? 'all' : new Set(selectedKeys);
|
268
320
|
}
|
269
321
|
if (defaultSelectedKeys !== undefined) {
|
270
|
-
|
322
|
+
// Handle "all" default selection
|
323
|
+
listStateProps.defaultSelectedKeys =
|
324
|
+
defaultSelectedKeys === 'all'
|
325
|
+
? 'all'
|
326
|
+
: new Set(defaultSelectedKeys);
|
271
327
|
}
|
272
328
|
// Remove single-selection props if any
|
273
329
|
delete listStateProps.selectedKey;
|
@@ -291,6 +347,55 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
|
|
291
347
|
const listState = useListState({
|
292
348
|
...listStateProps,
|
293
349
|
});
|
350
|
+
// Calculate select all state for multiple selection mode
|
351
|
+
const selectAllState = useMemo(() => {
|
352
|
+
// Select-all only makes sense for multiple selection mode *and* when the UI is enabled
|
353
|
+
if (props.selectionMode !== 'multiple' || !showSelectAll) {
|
354
|
+
return { isSelected: false, isIndeterminate: false };
|
355
|
+
}
|
356
|
+
// React Stately exposes the raw selection value which is either the string "all"
|
357
|
+
// (when `selectAll(true)` was used) **or** a Set of item keys.
|
358
|
+
const rawSelection = listState.selectionManager.rawSelection;
|
359
|
+
// Fast path – user pressed our "Select All" control previously.
|
360
|
+
if (rawSelection === 'all') {
|
361
|
+
return { isSelected: true, isIndeterminate: false };
|
362
|
+
}
|
363
|
+
const selectedKeys = listState.selectionManager.selectedKeys;
|
364
|
+
// When there is nothing selected, we are in a clear state
|
365
|
+
if (selectedKeys.size === 0) {
|
366
|
+
return { isSelected: false, isIndeterminate: false };
|
367
|
+
}
|
368
|
+
// Otherwise it must be a partial (indeterminate) selection.
|
369
|
+
return { isSelected: false, isIndeterminate: true };
|
370
|
+
}, [
|
371
|
+
props.selectionMode,
|
372
|
+
showSelectAll,
|
373
|
+
listState.collection,
|
374
|
+
listState.disabledKeys,
|
375
|
+
listState.selectionManager.selectedKeys,
|
376
|
+
listState.selectionManager.rawSelection,
|
377
|
+
]);
|
378
|
+
// Handle select all click
|
379
|
+
const handleSelectAllClick = (propagate) => {
|
380
|
+
if (isDisabled || props.selectionMode !== 'multiple')
|
381
|
+
return;
|
382
|
+
if (selectAllState.isSelected) {
|
383
|
+
// All selected, deselect all
|
384
|
+
listState.selectionManager.clearSelection();
|
385
|
+
// Manually call the wrapped handler since React Aria might not trigger it
|
386
|
+
wrappedOnSelectionChange?.(new Set());
|
387
|
+
}
|
388
|
+
else {
|
389
|
+
// Some or none selected, select all
|
390
|
+
listState.selectionManager.selectAll(true);
|
391
|
+
// Manually call the wrapped handler since React Aria might not trigger it
|
392
|
+
wrappedOnSelectionChange?.('all');
|
393
|
+
forceUpdate({});
|
394
|
+
}
|
395
|
+
if (propagate && !selectAllState.isSelected) {
|
396
|
+
onOptionClick?.('__ALL__');
|
397
|
+
}
|
398
|
+
};
|
294
399
|
// Track whether the last focus change was due to keyboard navigation
|
295
400
|
const lastFocusSourceRef = useRef('other');
|
296
401
|
// Expose the list state instance via the provided ref (if any)
|
@@ -412,8 +517,9 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
|
|
412
517
|
valid: validationState === 'valid',
|
413
518
|
disabled: isDisabled,
|
414
519
|
focused: isFocused,
|
415
|
-
header: !!header,
|
520
|
+
header: !!header || (showSelectAll && props.selectionMode === 'multiple'),
|
416
521
|
footer: !!footer,
|
522
|
+
selectAll: showSelectAll && props.selectionMode === 'multiple',
|
417
523
|
...externalMods,
|
418
524
|
}), [
|
419
525
|
isInvalid,
|
@@ -422,9 +528,11 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
|
|
422
528
|
isFocused,
|
423
529
|
header,
|
424
530
|
footer,
|
531
|
+
showSelectAll,
|
532
|
+
props.selectionMode,
|
425
533
|
externalMods,
|
426
534
|
]);
|
427
|
-
const listBoxField = (_jsxs(ListBoxWrapperElement, { ref: ref, qa: qa || 'ListBox', mods: mods, styles: styles, children: [header ? (_jsx(StyledHeader, { styles: headerStyles, "data-size": size, children: header })) : (_jsx("div", { role: "presentation" })), _jsx(ListBoxScrollElement, { ref: scrollRef, mods: mods, ...focusProps, children: _jsx(ListElement, { ...mergedListBoxProps, ref: listRef, styles: listStyles, "aria-disabled": isDisabled || undefined, mods: { sections: hasSections }, style: shouldVirtualize
|
535
|
+
const listBoxField = (_jsxs(ListBoxWrapperElement, { ref: ref, qa: qa || 'ListBox', mods: mods, styles: styles, children: [header ? (_jsx(StyledHeader, { styles: headerStyles, "data-size": size, children: header })) : (_jsx("div", { role: "presentation" })), showSelectAll && props.selectionMode === 'multiple' ? (_jsx(SelectAllOption, { label: selectAllLabel || 'Select All', state: listState, lastFocusSourceRef: lastFocusSourceRef, isSelected: selectAllState.isSelected, isIndeterminate: selectAllState.isIndeterminate, isDisabled: isDisabled, isCheckable: isCheckable, size: size, onClick: handleSelectAllClick })) : (_jsxs(_Fragment, { children: [_jsx("div", { role: "presentation" }), _jsx("div", { role: "presentation" })] })), _jsx(ListBoxScrollElement, { ref: scrollRef, mods: mods, ...focusProps, children: _jsx(ListElement, { ...mergedListBoxProps, ref: listRef, styles: listStyles, "aria-disabled": isDisabled || undefined, mods: { sections: hasSections }, style: shouldVirtualize
|
428
536
|
? {
|
429
537
|
position: 'relative',
|
430
538
|
height: `${rowVirtualizer.getTotalSize() + 3}px`,
|
@@ -441,7 +549,7 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
|
|
441
549
|
left: 0,
|
442
550
|
right: 0,
|
443
551
|
transform: `translateY(${virtualItem.start}px)`,
|
444
|
-
}, virtualIndex: virtualItem.index, lastFocusSourceRef: lastFocusSourceRef,
|
552
|
+
}, virtualIndex: virtualItem.index, lastFocusSourceRef: lastFocusSourceRef, onClick: onOptionClick }, virtualItem.key));
|
445
553
|
})
|
446
554
|
: (() => {
|
447
555
|
const renderedItems = [];
|
@@ -451,18 +559,18 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
|
|
451
559
|
if (!isFirstSection) {
|
452
560
|
renderedItems.push(_jsx(StyledDivider, { role: "separator", "aria-orientation": "horizontal" }, `divider-${String(item.key)}`));
|
453
561
|
}
|
454
|
-
renderedItems.push(_jsx(ListBoxSection, { item: item, state: listState, optionStyles: optionStyles, headingStyles: headingStyles, sectionStyles: sectionStyles, isParentDisabled: isDisabled, validationState: validationState, focusOnHover: focusOnHover, isCheckable: isCheckable, size: size, lastFocusSourceRef: lastFocusSourceRef,
|
562
|
+
renderedItems.push(_jsx(ListBoxSection, { item: item, state: listState, optionStyles: optionStyles, headingStyles: headingStyles, sectionStyles: sectionStyles, isParentDisabled: isDisabled, validationState: validationState, focusOnHover: focusOnHover, isCheckable: isCheckable, size: size, lastFocusSourceRef: lastFocusSourceRef, onClick: onOptionClick }, item.key));
|
455
563
|
isFirstSection = false;
|
456
564
|
}
|
457
565
|
else {
|
458
|
-
renderedItems.push(_jsx(Option, { size: size, item: item, state: listState, styles: optionStyles, isParentDisabled: isDisabled, validationState: validationState, focusOnHover: focusOnHover, isCheckable: isCheckable, lastFocusSourceRef: lastFocusSourceRef,
|
566
|
+
renderedItems.push(_jsx(Option, { size: size, item: item, state: listState, styles: optionStyles, isParentDisabled: isDisabled, validationState: validationState, focusOnHover: focusOnHover, isCheckable: isCheckable, lastFocusSourceRef: lastFocusSourceRef, onClick: onOptionClick }, item.key));
|
459
567
|
}
|
460
568
|
}
|
461
569
|
return renderedItems;
|
462
570
|
})() }) }), footer ? (_jsx(StyledFooter, { styles: footerStyles, "data-size": size, children: footer })) : (_jsx("div", { role: "presentation" }))] }));
|
463
571
|
return wrapWithField(listBoxField, ref, mergeProps({ ...props, styles: undefined }, {}));
|
464
572
|
});
|
465
|
-
function Option({ size = 'medium', item, state, styles, isParentDisabled, validationState, focusOnHover = false, isCheckable, onOptionClick, virtualStyle, virtualRef, virtualIndex, lastFocusSourceRef, }) {
|
573
|
+
function Option({ size = 'medium', item, state, styles, isParentDisabled, validationState, focusOnHover = false, isCheckable, onClick: onOptionClick, virtualStyle, virtualRef, virtualIndex, lastFocusSourceRef, }) {
|
466
574
|
const localRef = useRef(null);
|
467
575
|
// Merge local ref with react-virtual measure ref when provided
|
468
576
|
const combinedRef = useCombinedRefs(localRef, virtualRef);
|
@@ -536,7 +644,7 @@ function Option({ size = 'medium', item, state, styles, isParentDisabled, valida
|
|
536
644
|
}, styles: styles, onClick: handleOptionClick, children: [isCheckable && state.selectionManager.selectionMode === 'multiple' && (_jsx("div", { "data-element": "CheckboxWrapper", children: _jsx("div", { "data-element": "Checkbox", children: _jsx(CheckIcon, { size: 12, stroke: 3 }) }) })), _jsxs("div", { "data-element": "Content", children: [_jsx("div", { "data-element": "Label", children: item.rendered }), description ? (_jsx("div", { "data-element": "Description", children: description })) : null] })] }));
|
537
645
|
}
|
538
646
|
function ListBoxSection(props) {
|
539
|
-
const { item, state, optionStyles, headingStyles, sectionStyles, isParentDisabled, validationState, focusOnHover, isCheckable, onOptionClick, lastFocusSourceRef, } = props;
|
647
|
+
const { item, state, optionStyles, headingStyles, sectionStyles, isParentDisabled, validationState, focusOnHover, isCheckable, onClick: onOptionClick, lastFocusSourceRef, } = props;
|
540
648
|
const heading = item.rendered;
|
541
649
|
const { itemProps, headingProps, groupProps } = useListBoxSection({
|
542
650
|
heading,
|
@@ -544,7 +652,7 @@ function ListBoxSection(props) {
|
|
544
652
|
});
|
545
653
|
return (_jsxs(SectionWrapperElement, { ...itemProps, styles: sectionStyles, children: [heading && (_jsx(StyledSectionHeading, { ...headingProps, styles: headingStyles, children: heading })), _jsx(SectionListElement, { ...groupProps, children: [...item.childNodes]
|
546
654
|
.filter((node) => state.collection.getItem(node.key))
|
547
|
-
.map((node) => (_jsx(Option, { size: props.size, item: node, state: state, styles: optionStyles, isParentDisabled: isParentDisabled, validationState: validationState, focusOnHover: focusOnHover, isCheckable: isCheckable, lastFocusSourceRef: lastFocusSourceRef,
|
655
|
+
.map((node) => (_jsx(Option, { size: props.size, item: node, state: state, styles: optionStyles, isParentDisabled: isParentDisabled, validationState: validationState, focusOnHover: focusOnHover, isCheckable: isCheckable, lastFocusSourceRef: lastFocusSourceRef, onClick: onOptionClick }, node.key))) })] }));
|
548
656
|
}
|
549
657
|
const ListBoxSectionComponent = Object.assign(BaseSection, {
|
550
658
|
displayName: 'Section',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @license MIT
|
3
3
|
* author: Cube Dev Team
|
4
|
-
* @cube-dev/ui-kit v0.69.
|
4
|
+
* @cube-dev/ui-kit v0.69.3
|
5
5
|
* Released under the MIT license.
|
6
6
|
*/
|
7
7
|
|
@@ -10,7 +10,7 @@ import { cloneElement, forwardRef, useEffect, useMemo, useRef, } from 'react';
|
|
10
10
|
import { DismissButton, FocusScope, HiddenSelect, useButton, useHover, useListBox, useListBoxSection, useOption, useOverlay, useOverlayPosition, useSelect, } from 'react-aria';
|
11
11
|
import { Section as BaseSection, Item, useSelectState } from 'react-stately';
|
12
12
|
import styled from 'styled-components';
|
13
|
-
import {
|
13
|
+
import { DirectionIcon, LoadingIcon } from '../../../icons/index';
|
14
14
|
import { useProviderProps } from '../../../provider';
|
15
15
|
import { BASE_STYLES, COLOR_STYLES, extractStyles, OUTER_STYLES, tasty, } from '../../../tasty/index';
|
16
16
|
import { generateRandomId } from '../../../utils/random';
|
@@ -24,7 +24,7 @@ import { useFieldProps, useFormProps, wrapWithField } from '../../form';
|
|
24
24
|
import { OverlayWrapper } from '../../overlays/OverlayWrapper';
|
25
25
|
import { InvalidIcon } from '../../shared/InvalidIcon';
|
26
26
|
import { ValidIcon } from '../../shared/ValidIcon';
|
27
|
-
import {
|
27
|
+
import { INPUT_WRAPPER_STYLES } from '../index';
|
28
28
|
const SelectWrapperElement = tasty({
|
29
29
|
styles: {
|
30
30
|
display: 'grid',
|
@@ -41,42 +41,6 @@ const SelectWrapperElement = tasty({
|
|
41
41
|
invalid: '#danger-text',
|
42
42
|
disabled: '#dark.30',
|
43
43
|
},
|
44
|
-
Value: {
|
45
|
-
...DEFAULT_INPUT_STYLES,
|
46
|
-
display: 'grid',
|
47
|
-
placeItems: 'center stretch',
|
48
|
-
preset: {
|
49
|
-
'': 't3',
|
50
|
-
'[data-type="primary"]': 't3m',
|
51
|
-
},
|
52
|
-
color: 'inherit',
|
53
|
-
opacity: {
|
54
|
-
'': 1,
|
55
|
-
placeholder: '.6',
|
56
|
-
},
|
57
|
-
textAlign: 'left',
|
58
|
-
fill: '#clear',
|
59
|
-
textOverflow: 'ellipsis',
|
60
|
-
overflow: 'hidden',
|
61
|
-
},
|
62
|
-
CaretIcon: {
|
63
|
-
display: 'grid',
|
64
|
-
placeItems: 'center',
|
65
|
-
width: {
|
66
|
-
'': '4x',
|
67
|
-
'[data-size="small"]': '@size-xs',
|
68
|
-
'[data-size="medium"]': '@size-sm',
|
69
|
-
},
|
70
|
-
cursor: 'pointer',
|
71
|
-
fontSize: 'inherit',
|
72
|
-
},
|
73
|
-
ButtonIcon: {
|
74
|
-
display: 'grid',
|
75
|
-
placeItems: 'center',
|
76
|
-
width: 'min @size-sm',
|
77
|
-
color: 'inherit',
|
78
|
-
fontSize: '@icon-size',
|
79
|
-
},
|
80
44
|
},
|
81
45
|
});
|
82
46
|
function WithValidationState(styles) {
|
@@ -95,8 +59,61 @@ const SelectElement = tasty({
|
|
95
59
|
styles: {
|
96
60
|
...INPUT_WRAPPER_STYLES,
|
97
61
|
...DEFAULT_BUTTON_STYLES,
|
98
|
-
|
62
|
+
backgroundClip: 'initial',
|
99
63
|
gap: 0,
|
64
|
+
Prefix: {
|
65
|
+
display: 'flex',
|
66
|
+
placeContent: 'center start',
|
67
|
+
placeItems: 'center',
|
68
|
+
placeSelf: 'center start',
|
69
|
+
flexShrink: 0,
|
70
|
+
},
|
71
|
+
Suffix: {
|
72
|
+
display: 'flex',
|
73
|
+
placeContent: 'center start',
|
74
|
+
placeItems: 'center',
|
75
|
+
placeSelf: 'center end',
|
76
|
+
flexShrink: 0,
|
77
|
+
},
|
78
|
+
ButtonIcon: {
|
79
|
+
display: 'grid',
|
80
|
+
placeItems: 'center',
|
81
|
+
color: 'inherit',
|
82
|
+
fontSize: '@icon-size',
|
83
|
+
},
|
84
|
+
Value: {
|
85
|
+
display: 'block',
|
86
|
+
width: 'max 100%',
|
87
|
+
placeItems: 'center stretch',
|
88
|
+
preset: {
|
89
|
+
'': 't3',
|
90
|
+
'[data-type="primary"]': 't3m',
|
91
|
+
},
|
92
|
+
padding: {
|
93
|
+
'': 0,
|
94
|
+
prefix: '.5x left',
|
95
|
+
suffix: '.5x right',
|
96
|
+
'prefix & suffix': '.5x left right',
|
97
|
+
},
|
98
|
+
color: 'inherit',
|
99
|
+
opacity: {
|
100
|
+
'': 1,
|
101
|
+
placeholder: '.6',
|
102
|
+
},
|
103
|
+
textAlign: 'left',
|
104
|
+
fill: '#clear',
|
105
|
+
textOverflow: 'ellipsis',
|
106
|
+
overflow: 'hidden',
|
107
|
+
flexGrow: 1,
|
108
|
+
},
|
109
|
+
'& [data-element="Prefix"] [data-element="ButtonIcon"]': {
|
110
|
+
marginLeft: -4,
|
111
|
+
placeSelf: 'center start',
|
112
|
+
},
|
113
|
+
'& [data-element="Suffix"] [data-element="ButtonIcon"]': {
|
114
|
+
marginRight: -4,
|
115
|
+
placeSelf: 'center end',
|
116
|
+
},
|
100
117
|
},
|
101
118
|
variants: {
|
102
119
|
// Default theme
|
@@ -295,7 +312,7 @@ function Select(props, ref) {
|
|
295
312
|
]);
|
296
313
|
let selectField = (_jsxs(SelectWrapperElement, { qa: qa || 'Select', mods: modifiers, styles: { ...wrapperStyles, ...styles }, "data-size": size, "data-type": type, "data-theme": theme, children: [_jsx(HiddenSelect, { state: state, triggerRef: triggerRef, label: props.label, name: props.name }), _jsxs(SelectElement, { ...mergeProps(buttonProps, hoverProps, focusProps), ref: triggerRef, "data-menu-trigger": true, styles: { ...inputStyles, ...triggerStyles }, variant: `${theme}.${type}`, "data-theme": theme, "data-size": size, "data-type": type, mods: modifiers, children: [prefix ? _jsx("div", { "data-element": "Prefix", children: prefix }) : null, _jsx("span", { "data-element": "Value", ...valueProps, children: state.selectedItem
|
297
314
|
? state.selectedItem.rendered
|
298
|
-
: placeholder || _jsx(_Fragment, { children: "\u00A0" }) }), _jsxs("div", { "data-element": "Suffix", children: [suffixPosition === 'before' ? suffix : null, validationState && !isLoading ? validation : null, isLoading && _jsx(LoadingIcon, {}), suffixPosition === 'after' ? suffix : null, _jsx("div", { "data-element": "
|
315
|
+
: placeholder || _jsx(_Fragment, { children: "\u00A0" }) }), _jsxs("div", { "data-element": "Suffix", children: [suffixPosition === 'before' ? suffix : null, validationState && !isLoading ? validation : null, isLoading && _jsx(LoadingIcon, {}), suffixPosition === 'after' ? suffix : null, _jsx("div", { "data-element": "ButtonIcon", children: _jsx(DirectionIcon, { to: state.isOpen ? 'up' : 'down' }) })] })] }), _jsx(OverlayWrapper, { isOpen: state.isOpen && !isDisabled, children: _jsx(ListBoxPopup, { ...menuProps, popoverRef: popoverRef, listBoxRef: listBoxRef, overlayProps: overlayProps, placement: placement, state: state, listBoxStyles: listBoxStyles, overlayStyles: overlayStyles, optionStyles: optionStyles, minWidth: triggerWidth, triggerRef: triggerRef }) })] }));
|
299
316
|
return wrapWithField(selectField, ref, mergeProps({
|
300
317
|
...props,
|
301
318
|
styles,
|