@cube-dev/ui-kit 0.0.0-canary-e864021 → 0.0.0-canary-3d5ac77
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 +8 -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 +17 -2
- 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 +1 -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 +10 -4
- package/es/components/fields/FilterListBox/index.js +1 -1
- package/es/components/fields/FilterPicker/FilterPicker.js +194 -75
- 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 +126 -23
- 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 +1 -1
- 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 +14 -1
- package/types/components/fields/FilterListBox/FilterListBox.d.ts +9 -9
- package/types/components/fields/FilterPicker/FilterPicker.d.ts +15 -12
- package/types/components/fields/ListBox/ListBox.d.ts +31 -20
- package/types/components/overlays/Dialog/DialogTrigger.d.ts +1 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license MIT
|
|
3
3
|
* author: Cube Dev Team
|
|
4
|
-
* @cube-dev/ui-kit v0.0.0-canary-
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-3d5ac77
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
-
import { Children, cloneElement, forwardRef, useCallback, useEffect, useRef, useState, } from 'react';
|
|
9
|
+
import { Children, cloneElement, forwardRef, useCallback, useEffect, useMemo, useRef, useState, } from 'react';
|
|
10
10
|
import { FocusScope, useKeyboard } from 'react-aria';
|
|
11
11
|
import { Section as BaseSection, Item } from 'react-stately';
|
|
12
12
|
import { useWarn } from '../../../_internal/hooks/use-warn';
|
|
13
13
|
import { DirectionIcon } from '../../../icons';
|
|
14
14
|
import { useProviderProps } from '../../../provider';
|
|
15
|
-
import { BASE_STYLES, COLOR_STYLES, extractStyles, OUTER_STYLES, } from '../../../tasty';
|
|
15
|
+
import { BASE_STYLES, COLOR_STYLES, extractStyles, OUTER_STYLES, tasty, } from '../../../tasty';
|
|
16
16
|
import { mergeProps } from '../../../utils/react';
|
|
17
17
|
import { Button } from '../../actions';
|
|
18
18
|
import { Text } from '../../content/Text';
|
|
@@ -21,6 +21,22 @@ import { Dialog, DialogTrigger } from '../../overlays/Dialog';
|
|
|
21
21
|
import { FilterListBox, } from '../FilterListBox/FilterListBox';
|
|
22
22
|
import { ListBox } from '../ListBox';
|
|
23
23
|
const PROP_STYLES = [...BASE_STYLES, ...OUTER_STYLES, ...COLOR_STYLES];
|
|
24
|
+
const FilterPickerWrapper = tasty({
|
|
25
|
+
qa: 'FilterPicker',
|
|
26
|
+
styles: {
|
|
27
|
+
display: 'grid',
|
|
28
|
+
flow: 'column',
|
|
29
|
+
gridRows: '1sf',
|
|
30
|
+
placeContent: 'stretch',
|
|
31
|
+
placeItems: 'stretch',
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
const TriggerButton = tasty(Button, {
|
|
35
|
+
qa: 'FilterPickerTrigger',
|
|
36
|
+
styles: {
|
|
37
|
+
placeContent: 'stretch',
|
|
38
|
+
},
|
|
39
|
+
});
|
|
24
40
|
export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
25
41
|
props = useProviderProps(props);
|
|
26
42
|
props = useFormProps(props);
|
|
@@ -35,7 +51,13 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
35
51
|
}
|
|
36
52
|
fieldProps.onSelectionChange = (key) => {
|
|
37
53
|
if (props.selectionMode === 'multiple') {
|
|
38
|
-
|
|
54
|
+
// Handle "all" selection and array selections
|
|
55
|
+
if (key === 'all') {
|
|
56
|
+
onChange('all');
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
onChange(key ? (Array.isArray(key) ? key : [key]) : []);
|
|
60
|
+
}
|
|
39
61
|
}
|
|
40
62
|
else {
|
|
41
63
|
onChange(Array.isArray(key) ? key[0] : key);
|
|
@@ -44,7 +66,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
44
66
|
return fieldProps;
|
|
45
67
|
},
|
|
46
68
|
});
|
|
47
|
-
let { qa, label, extra, icon, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, isLoading, message, mods: externalMods, description, placeholder, size = 'medium', styles, listBoxStyles, popoverStyles, type = 'outline', theme = 'default', labelSuffix, shouldFocusWrap, children, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, disabledKeys, onSelectionChange, selectionMode = 'single', listStateRef, focusOnHover, header, footer, headerStyles, footerStyles, allowsCustomValue, renderSummary, isCheckable, ...otherProps } = props;
|
|
69
|
+
let { qa, label, extra, icon, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, isLoading, message, mods: externalMods, description, placeholder, size = 'medium', styles, listBoxStyles, popoverStyles, type = 'outline', theme = 'default', labelSuffix, shouldFocusWrap, children, shouldFlip = true, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, disabledKeys, onSelectionChange, selectionMode = 'single', listStateRef, focusOnHover, showSelectAll, selectAllLabel, header, footer, headerStyles, footerStyles, triggerStyles, allowsCustomValue, renderSummary, isCheckable, ...otherProps } = props;
|
|
48
70
|
styles = extractStyles(otherProps, PROP_STYLES, styles);
|
|
49
71
|
// Warn if isCheckable is false in single selection mode
|
|
50
72
|
useWarn(isCheckable === false && selectionMode === 'single', {
|
|
@@ -68,7 +90,8 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
68
90
|
const effectiveSelectedKeys = isControlledMultiple
|
|
69
91
|
? selectedKeys
|
|
70
92
|
: internalSelectedKeys;
|
|
71
|
-
// Utility
|
|
93
|
+
// Utility: remove React's ".$" / "." prefixes from element keys so that we
|
|
94
|
+
// can compare them with user-provided keys.
|
|
72
95
|
const normalizeKeyValue = (key) => {
|
|
73
96
|
if (key == null)
|
|
74
97
|
return '';
|
|
@@ -79,11 +102,56 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
79
102
|
? str.slice(1)
|
|
80
103
|
: str;
|
|
81
104
|
};
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Map public-facing keys (without React's "." prefix) to the actual React
|
|
107
|
+
// element keys that appear in the collection (which usually have the `.$`
|
|
108
|
+
// or `.` prefix added by React when children are in an array). This ensures
|
|
109
|
+
// that the key we pass to ListBox exactly matches the keys it receives from
|
|
110
|
+
// React Aria, so the initial selection is highlighted correctly.
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
const findReactKey = useCallback((lookup) => {
|
|
113
|
+
if (lookup == null)
|
|
114
|
+
return lookup;
|
|
115
|
+
const normalizedLookup = normalizeKeyValue(lookup);
|
|
116
|
+
let foundKey = lookup;
|
|
117
|
+
const traverse = (nodes) => {
|
|
118
|
+
Children.forEach(nodes, (child) => {
|
|
119
|
+
if (!child || typeof child !== 'object')
|
|
120
|
+
return;
|
|
121
|
+
if (child.key != null) {
|
|
122
|
+
if (normalizeKeyValue(child.key) === normalizedLookup) {
|
|
123
|
+
foundKey = child.key;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (child.props?.children) {
|
|
127
|
+
traverse(child.props.children);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
if (children)
|
|
132
|
+
traverse(children);
|
|
133
|
+
return foundKey;
|
|
134
|
+
}, [children]);
|
|
135
|
+
const mappedSelectedKey = useMemo(() => {
|
|
136
|
+
if (selectionMode !== 'single')
|
|
137
|
+
return null;
|
|
138
|
+
return findReactKey(effectiveSelectedKey);
|
|
139
|
+
}, [selectionMode, effectiveSelectedKey, findReactKey]);
|
|
140
|
+
const mappedSelectedKeys = useMemo(() => {
|
|
141
|
+
if (selectionMode !== 'multiple')
|
|
142
|
+
return undefined;
|
|
143
|
+
if (effectiveSelectedKeys === 'all')
|
|
144
|
+
return 'all';
|
|
145
|
+
if (Array.isArray(effectiveSelectedKeys)) {
|
|
146
|
+
return effectiveSelectedKeys.map((k) => findReactKey(k));
|
|
147
|
+
}
|
|
148
|
+
return effectiveSelectedKeys;
|
|
149
|
+
}, [selectionMode, effectiveSelectedKeys, findReactKey]);
|
|
82
150
|
// Given an iterable of keys (array or Set) toggle membership for duplicates
|
|
83
151
|
const processSelectionArray = (iterable) => {
|
|
84
152
|
const resultSet = new Set();
|
|
85
153
|
for (const key of iterable) {
|
|
86
|
-
const nKey =
|
|
154
|
+
const nKey = String(key);
|
|
87
155
|
if (resultSet.has(nKey)) {
|
|
88
156
|
resultSet.delete(nKey); // toggle off if clicked twice
|
|
89
157
|
}
|
|
@@ -97,10 +165,33 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
97
165
|
const getSelectedLabels = () => {
|
|
98
166
|
if (!children)
|
|
99
167
|
return [];
|
|
100
|
-
|
|
101
|
-
|
|
168
|
+
// Handle "all" selection - return all available labels
|
|
169
|
+
if (selectionMode === 'multiple' && effectiveSelectedKeys === 'all') {
|
|
170
|
+
const allLabels = [];
|
|
171
|
+
const extractAllLabels = (nodes) => {
|
|
172
|
+
Children.forEach(nodes, (child) => {
|
|
173
|
+
if (!child || typeof child !== 'object')
|
|
174
|
+
return;
|
|
175
|
+
if (child.type === Item) {
|
|
176
|
+
const label = child.props.textValue ||
|
|
177
|
+
(typeof child.props.children === 'string'
|
|
178
|
+
? child.props.children
|
|
179
|
+
: '') ||
|
|
180
|
+
String(child.props.children || '');
|
|
181
|
+
allLabels.push(label);
|
|
182
|
+
}
|
|
183
|
+
if (child.props?.children) {
|
|
184
|
+
extractAllLabels(child.props.children);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
extractAllLabels(children);
|
|
189
|
+
return allLabels;
|
|
190
|
+
}
|
|
191
|
+
const selectedSet = new Set(selectionMode === 'multiple' && effectiveSelectedKeys !== 'all'
|
|
192
|
+
? (effectiveSelectedKeys || []).map((k) => normalizeKeyValue(k))
|
|
102
193
|
: effectiveSelectedKey != null
|
|
103
|
-
? [
|
|
194
|
+
? [normalizeKeyValue(effectiveSelectedKey)]
|
|
104
195
|
: []);
|
|
105
196
|
const labels = [];
|
|
106
197
|
const extractLabels = (nodes) => {
|
|
@@ -108,7 +199,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
108
199
|
if (!child || typeof child !== 'object')
|
|
109
200
|
return;
|
|
110
201
|
if (child.type === Item) {
|
|
111
|
-
if (selectedSet.has(
|
|
202
|
+
if (selectedSet.has(normalizeKeyValue(child.key))) {
|
|
112
203
|
const label = child.props.textValue ||
|
|
113
204
|
(typeof child.props.children === 'string'
|
|
114
205
|
? child.props.children
|
|
@@ -147,14 +238,14 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
147
238
|
};
|
|
148
239
|
extractLabelsWithTracking(children);
|
|
149
240
|
// Handle custom values that don't have corresponding children
|
|
150
|
-
const selectedKeysArr = selectionMode === 'multiple'
|
|
241
|
+
const selectedKeysArr = selectionMode === 'multiple' && effectiveSelectedKeys !== 'all'
|
|
151
242
|
? (effectiveSelectedKeys || []).map(String)
|
|
152
243
|
: effectiveSelectedKey != null
|
|
153
244
|
? [String(effectiveSelectedKey)]
|
|
154
245
|
: [];
|
|
155
246
|
// Add labels for any selected keys that weren't processed (custom values)
|
|
156
247
|
selectedKeysArr.forEach((key) => {
|
|
157
|
-
if (!processedKeys.has(key)) {
|
|
248
|
+
if (!processedKeys.has(normalizeKeyValue(key))) {
|
|
158
249
|
// This is a custom value, use the key as the label
|
|
159
250
|
labels.push(key);
|
|
160
251
|
}
|
|
@@ -165,29 +256,35 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
165
256
|
const hasSelection = selectedLabels.length > 0;
|
|
166
257
|
// Always keep the latest selection in a ref (with normalized keys) so that we can read it synchronously in the popover close effect.
|
|
167
258
|
const latestSelectionRef = useRef({
|
|
168
|
-
single: effectiveSelectedKey != null
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
259
|
+
single: effectiveSelectedKey != null ? String(effectiveSelectedKey) : null,
|
|
260
|
+
multiple: effectiveSelectedKeys === 'all'
|
|
261
|
+
? 'all'
|
|
262
|
+
: (effectiveSelectedKeys ?? []).map(String),
|
|
172
263
|
});
|
|
173
264
|
useEffect(() => {
|
|
174
265
|
latestSelectionRef.current = {
|
|
175
|
-
single: effectiveSelectedKey != null
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
266
|
+
single: effectiveSelectedKey != null ? String(effectiveSelectedKey) : null,
|
|
267
|
+
multiple: effectiveSelectedKeys === 'all'
|
|
268
|
+
? 'all'
|
|
269
|
+
: (effectiveSelectedKeys ?? []).map(String),
|
|
179
270
|
};
|
|
180
271
|
}, [effectiveSelectedKey, effectiveSelectedKeys]);
|
|
181
272
|
const selectionsWhenClosed = useRef({ single: null, multiple: [] });
|
|
273
|
+
// Capture the initial selection (from defaultSelectedKey(s)) so that
|
|
274
|
+
// the very first popover open can already use it for sorting.
|
|
275
|
+
useEffect(() => {
|
|
276
|
+
selectionsWhenClosed.current = { ...latestSelectionRef.current };
|
|
277
|
+
}, []); // run only once on mount
|
|
182
278
|
// Function to sort children with selected items on top
|
|
183
279
|
const getSortedChildren = useCallback(() => {
|
|
184
280
|
if (!children)
|
|
185
281
|
return children;
|
|
186
|
-
// When the popover is **closed
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
|
|
282
|
+
// When the popover is **closed**, reuse the cached order if we have it to
|
|
283
|
+
// avoid unnecessary reflows. If we don't have a cache yet (first open),
|
|
284
|
+
// fall through to compute the sorted order so the very first render is
|
|
285
|
+
// already correct.
|
|
286
|
+
if (!isPopoverOpen && cachedChildrenOrder.current) {
|
|
287
|
+
return cachedChildrenOrder.current;
|
|
191
288
|
}
|
|
192
289
|
// Popover is open – compute (or recompute) the sorted order for this
|
|
193
290
|
// session.
|
|
@@ -209,11 +306,17 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
209
306
|
// Create selected keys set for fast lookup
|
|
210
307
|
const selectedSet = new Set();
|
|
211
308
|
if (selectionMode === 'multiple') {
|
|
212
|
-
selectionsWhenClosed.current.multiple
|
|
309
|
+
if (selectionsWhenClosed.current.multiple === 'all') {
|
|
310
|
+
// Don't sort when "all" is selected, just return original children
|
|
311
|
+
return children;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
selectionsWhenClosed.current.multiple.forEach((key) => selectedSet.add(String(key)));
|
|
315
|
+
}
|
|
213
316
|
}
|
|
214
317
|
else if (selectionMode === 'single' &&
|
|
215
318
|
selectionsWhenClosed.current.single != null) {
|
|
216
|
-
selectedSet.add(
|
|
319
|
+
selectedSet.add(String(selectionsWhenClosed.current.single));
|
|
217
320
|
}
|
|
218
321
|
// Helper function to check if an item is selected
|
|
219
322
|
const isItemSelected = (child) => {
|
|
@@ -278,8 +381,9 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
278
381
|
// Sort the children
|
|
279
382
|
const childrenArray = Children.toArray(children);
|
|
280
383
|
const sortedChildren = sortChildrenArray(childrenArray);
|
|
281
|
-
// Cache the sorted order when popover opens
|
|
282
|
-
|
|
384
|
+
// Cache the sorted order when popover opens or when we compute it for the
|
|
385
|
+
// first time before opening.
|
|
386
|
+
if (isPopoverOpen || !cachedChildrenOrder.current) {
|
|
283
387
|
cachedChildrenOrder.current = sortedChildren;
|
|
284
388
|
}
|
|
285
389
|
return sortedChildren;
|
|
@@ -321,6 +425,9 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
321
425
|
else if (selectionMode === 'single') {
|
|
322
426
|
content = selectedLabels[0];
|
|
323
427
|
}
|
|
428
|
+
else if (effectiveSelectedKeys === 'all') {
|
|
429
|
+
content = selectAllLabel;
|
|
430
|
+
}
|
|
324
431
|
else {
|
|
325
432
|
content = selectedLabels.join(', ');
|
|
326
433
|
}
|
|
@@ -329,6 +436,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
329
436
|
}
|
|
330
437
|
return (_jsx(Text, { ellipsis: true, style: { opacity: hasSelection ? 1 : 'var(--disabled-opacity)' }, children: content }));
|
|
331
438
|
};
|
|
439
|
+
const [shouldUpdatePosition, setShouldUpdatePosition] = useState(false);
|
|
332
440
|
// The trigger is rendered as a function so we can access the dialog state
|
|
333
441
|
const renderTrigger = (state) => {
|
|
334
442
|
// Track popover open/close state to control sorting
|
|
@@ -352,64 +460,75 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
|
|
|
352
460
|
}
|
|
353
461
|
},
|
|
354
462
|
});
|
|
355
|
-
|
|
463
|
+
setTimeout(() => {
|
|
464
|
+
// Disable the update of the position while the popover is open (with a delay) to avoid jumping
|
|
465
|
+
setShouldUpdatePosition(!state.isOpen);
|
|
466
|
+
}, 100);
|
|
467
|
+
return (_jsx(TriggerButton, { ref: triggerRef, type: type, theme: validationState === 'invalid' ? 'danger' : theme, size: size, isDisabled: isDisabled, isLoading: isLoading, mods: {
|
|
356
468
|
placeholder: !hasSelection,
|
|
357
469
|
selected: hasSelection,
|
|
358
470
|
...externalMods,
|
|
359
471
|
}, icon: icon, rightIcon: _jsx(DirectionIcon, { to: state.isOpen ? 'top' : 'bottom' }), styles: styles, ...otherProps, ...keyboardProps, "aria-label": `${props['aria-label'] ?? props.label ?? ''}`, children: renderTriggerContent() }));
|
|
360
472
|
};
|
|
361
|
-
const filterPickerField = (_jsxs(DialogTrigger, { type: "popover", placement: "bottom start", shouldFlip:
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
}, onSelectionChange: (selection) => {
|
|
370
|
-
// No need to change any flags - children order is cached
|
|
371
|
-
// Update internal state if uncontrolled
|
|
372
|
-
if (selectionMode === 'single') {
|
|
373
|
-
if (!isControlledSingle) {
|
|
374
|
-
setInternalSelectedKey(selection);
|
|
473
|
+
const filterPickerField = (_jsx(FilterPickerWrapper, { qa: props.qa || 'FilterPicker', styles: styles, children: _jsxs(DialogTrigger, { type: "popover", placement: "bottom start", styles: triggerStyles, shouldUpdatePosition: shouldUpdatePosition, shouldFlip: shouldFlip, isDismissable: true, children: [renderTrigger, (close) => (_jsx(Dialog, { display: "grid", styles: { gridRows: '1sf', ...popoverStyles }, children: _jsx(FocusScope, { restoreFocus: true, children: _jsx(FilterListBox, { autoFocus: true, "aria-label": `${props['aria-label'] ?? props.label ?? ''} Picker`, selectedKey: selectionMode === 'single' ? mappedSelectedKey : undefined, selectedKeys: selectionMode === 'multiple' ? mappedSelectedKeys : undefined, disabledKeys: disabledKeys, focusOnHover: focusOnHover, shouldFocusWrap: shouldFocusWrap, allowsCustomValue: allowsCustomValue, selectionMode: selectionMode, validationState: validationState, isDisabled: isDisabled, stateRef: listStateRef, isCheckable: isCheckable, mods: {
|
|
474
|
+
popover: true,
|
|
475
|
+
}, size: size === 'small' ? 'medium' : size, showSelectAll: showSelectAll, selectAllLabel: selectAllLabel, header: header, footer: footer, headerStyles: headerStyles, footerStyles: footerStyles, qa: `${props.qa || 'FilterPicker'}ListBox`, onEscape: () => close(), onOptionClick: (key) => {
|
|
476
|
+
// For FilterPicker, clicking the content area should close the popover
|
|
477
|
+
// in multiple selection mode (single mode already closes via onSelectionChange)
|
|
478
|
+
if ((selectionMode === 'multiple' && isCheckable) ||
|
|
479
|
+
key === '__ALL__') {
|
|
480
|
+
close();
|
|
375
481
|
}
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
if
|
|
379
|
-
|
|
380
|
-
if (
|
|
381
|
-
|
|
482
|
+
}, onSelectionChange: (selection) => {
|
|
483
|
+
// No need to change any flags - children order is cached
|
|
484
|
+
// Update internal state if uncontrolled
|
|
485
|
+
if (selectionMode === 'single') {
|
|
486
|
+
if (!isControlledSingle) {
|
|
487
|
+
setInternalSelectedKey(selection);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
if (!isControlledMultiple) {
|
|
492
|
+
let normalized = selection;
|
|
493
|
+
if (selection === 'all') {
|
|
494
|
+
normalized = 'all';
|
|
495
|
+
}
|
|
496
|
+
else if (Array.isArray(selection)) {
|
|
497
|
+
normalized = processSelectionArray(selection);
|
|
498
|
+
}
|
|
499
|
+
else if (selection &&
|
|
500
|
+
typeof selection === 'object' &&
|
|
501
|
+
selection instanceof Set) {
|
|
502
|
+
normalized = processSelectionArray(selection);
|
|
503
|
+
}
|
|
504
|
+
setInternalSelectedKeys(normalized);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
// Update latest selection ref synchronously
|
|
508
|
+
if (selectionMode === 'single') {
|
|
509
|
+
latestSelectionRef.current.single = selection;
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
if (selection === 'all') {
|
|
513
|
+
latestSelectionRef.current.multiple = 'all';
|
|
514
|
+
}
|
|
515
|
+
else if (Array.isArray(selection)) {
|
|
516
|
+
latestSelectionRef.current.multiple = Array.from(new Set(processSelectionArray(selection)));
|
|
382
517
|
}
|
|
383
518
|
else if (selection &&
|
|
384
519
|
typeof selection === 'object' &&
|
|
385
520
|
selection instanceof Set) {
|
|
386
|
-
|
|
521
|
+
latestSelectionRef.current.multiple = Array.from(new Set(processSelectionArray(selection)));
|
|
522
|
+
}
|
|
523
|
+
else {
|
|
524
|
+
latestSelectionRef.current.multiple = selection;
|
|
387
525
|
}
|
|
388
|
-
setInternalSelectedKeys(normalized);
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
// Update latest selection ref synchronously
|
|
392
|
-
if (selectionMode === 'single') {
|
|
393
|
-
latestSelectionRef.current.single = selection;
|
|
394
|
-
}
|
|
395
|
-
else {
|
|
396
|
-
if (Array.isArray(selection)) {
|
|
397
|
-
latestSelectionRef.current.multiple = Array.from(new Set(processSelectionArray(selection)));
|
|
398
|
-
}
|
|
399
|
-
else if (selection &&
|
|
400
|
-
typeof selection === 'object' &&
|
|
401
|
-
selection instanceof Set) {
|
|
402
|
-
latestSelectionRef.current.multiple = Array.from(new Set(processSelectionArray(selection)));
|
|
403
526
|
}
|
|
404
|
-
|
|
405
|
-
|
|
527
|
+
onSelectionChange?.(selection);
|
|
528
|
+
if (selectionMode === 'single') {
|
|
529
|
+
close();
|
|
406
530
|
}
|
|
407
|
-
}
|
|
408
|
-
onSelectionChange?.(selection);
|
|
409
|
-
if (selectionMode === 'single') {
|
|
410
|
-
close();
|
|
411
|
-
}
|
|
412
|
-
}, children: finalChildren }) }) }))] }));
|
|
531
|
+
}, children: finalChildren }) }) }))] }) }));
|
|
413
532
|
return wrapWithField(filterPickerField, ref, mergeProps({
|
|
414
533
|
...props,
|
|
415
534
|
styles: undefined,
|