@cube-dev/ui-kit 0.127.3 → 0.128.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +17 -0
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/intl.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.d.ts +3 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +115 -51
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +6 -0
- package/dist/components/fields/FilterPicker/FilterPicker.js +3 -2
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransition.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/components/fields/FilterListBox.md +27 -17
- package/docs/components/fields/FilterPicker.md +58 -59
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { CONTAINER_STYLES, filterBaseProps, keyframes, tasty } from "@tenphi/tasty";
|
|
4
4
|
import { forwardRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { RendererPrism, ensureYamlSqlExtensions } from "./prismSetup.js";
|
|
3
3
|
import { CONTAINER_STYLES, tasty } from "@tenphi/tasty";
|
|
4
4
|
import { forwardRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { Space } from "../../layout/Space.js";
|
|
3
3
|
import { Grid } from "../../layout/Grid.js";
|
|
4
4
|
import { Flow } from "../../layout/Flow.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { _Item } from "../Item/Item.js";
|
|
3
3
|
import { CloseIcon } from "../../../icons/CloseIcon.js";
|
|
4
4
|
import { tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { useSlotProps } from "../../utils/react/Slots.js";
|
|
4
4
|
import { BASE_STYLES, COLOR_STYLES, TEXT_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { TEXT_PROP_MAP, _Text } from "../Text.js";
|
|
4
4
|
import { highlightText } from "../highlightText.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { useSlotProps } from "../../utils/react/Slots.js";
|
|
4
4
|
import { TEXT_PROP_MAP } from "./Text.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { TooltipProvider } from "../overlays/Tooltip/TooltipProvider.js";
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { _Text } from "../../content/Text.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useProviderProps } from "../../../provider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
4
4
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useProviderProps } from "../../../provider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { InvalidIcon } from "../../shared/InvalidIcon.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useProviderProps } from "../../../provider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
|
|
3
3
|
import { CalendarIcon } from "../../../icons/CalendarIcon.js";
|
|
4
4
|
import { tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { DatePickerSegment } from "./DatePickerSegment.js";
|
|
4
4
|
import { formatSegments } from "./utils.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useProviderProps } from "../../../provider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useProviderProps } from "../../../provider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useProviderProps } from "../../../provider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { useImperativeHandle, useRef } from "react";
|
|
3
3
|
import { createDOMRef } from "@react-spectrum/utils";
|
|
4
4
|
import { createFocusManager } from "@react-aria/focus";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { useProviderProps } from "../../../provider.js";
|
|
@@ -20,12 +20,14 @@ interface CubeFilterListBoxProps<T> extends Omit<CubeListBoxProps<T>, 'filter'>,
|
|
|
20
20
|
* Pass `false` to disable internal filtering completely (useful for external filtering).
|
|
21
21
|
*/
|
|
22
22
|
filter?: FilterFn | false;
|
|
23
|
-
/**
|
|
23
|
+
/** Label shown when the list is empty. When provided, overrides both the "No results found" and "No items" defaults. */
|
|
24
24
|
emptyLabel?: ReactNode;
|
|
25
25
|
/** Custom styles for the search input */
|
|
26
26
|
searchInputStyles?: Styles;
|
|
27
27
|
/** Whether the FilterListBox is in loading state (shows loading icon in search input) */
|
|
28
28
|
isLoading?: boolean;
|
|
29
|
+
/** Whether items are currently loading. Shows a loading icon in the search input suffix. */
|
|
30
|
+
isLoadingItems?: boolean;
|
|
29
31
|
/** Ref for accessing the search input element */
|
|
30
32
|
searchInputRef?: RefObject<HTMLInputElement | null>;
|
|
31
33
|
/** Whether to allow entering custom values that are not present in the predefined options */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
@@ -66,7 +66,9 @@ const SearchInputElement = tasty({
|
|
|
66
66
|
fill: "#clear",
|
|
67
67
|
padding: {
|
|
68
68
|
"": ".5x 1.5x",
|
|
69
|
-
prefix: "0 1.5x 0 .5x"
|
|
69
|
+
prefix: "0 1.5x 0 .5x",
|
|
70
|
+
suffix: ".5x .5x .5x 1.5x",
|
|
71
|
+
"prefix & suffix": "0 .5x 0 .5x"
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
});
|
|
@@ -90,7 +92,7 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
90
92
|
};
|
|
91
93
|
return fieldProps;
|
|
92
94
|
} });
|
|
93
|
-
let { qa, label, extra, id, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, isLoading, searchPlaceholder = "Search...", autoFocus, filter, mods: externalMods, emptyLabel, searchInputStyles, listStyles, optionStyles, sectionStyles, headingStyles, searchInputRef, listRef, message, description, styles, focusOnHover, shouldFocusWrap, labelSuffix, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, onSelectionChange: externalOnSelectionChange, allowsCustomValue = false, showSelectAll, selectAllLabel, header, footer, size = "medium", headerStyles, footerStyles, listBoxStyles, items, children: renderChildren, onEscape, isCheckable, onOptionClick, selectionMode = "single", allValueProps, customValueProps, newCustomValueProps, searchValue: controlledSearchValue, onSearchChange, _internalCollection, form, ...otherProps } = props;
|
|
95
|
+
let { qa, label, extra, id, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, isLoading, isLoadingItems, searchPlaceholder = "Search...", autoFocus, filter, mods: externalMods, emptyLabel, searchInputStyles, listStyles, optionStyles, sectionStyles, headingStyles, searchInputRef, listRef, message, description, styles, focusOnHover, shouldFocusWrap, labelSuffix, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, onSelectionChange: externalOnSelectionChange, allowsCustomValue = false, showSelectAll, selectAllLabel, header, footer, size = "medium", headerStyles, footerStyles, listBoxStyles, items, children: renderChildren, onEscape, isCheckable, onOptionClick, selectionMode = "single", allValueProps, customValueProps, newCustomValueProps, searchValue: controlledSearchValue, onSearchChange, _internalCollection, form, ...otherProps } = props;
|
|
94
96
|
let children = renderChildren;
|
|
95
97
|
const renderFn = renderChildren;
|
|
96
98
|
if (items && typeof renderFn === "function") try {
|
|
@@ -111,6 +113,10 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
111
113
|
return keys;
|
|
112
114
|
}, [localCollectionState.collection]);
|
|
113
115
|
const [customKeys, setCustomKeys] = useState(/* @__PURE__ */ new Set());
|
|
116
|
+
const [internalSearchValue, setInternalSearchValue] = useState("");
|
|
117
|
+
const isSearchControlled = controlledSearchValue !== void 0;
|
|
118
|
+
const searchValue = isSearchControlled ? controlledSearchValue : internalSearchValue;
|
|
119
|
+
const { contains } = useFilter({ sensitivity: "base" });
|
|
114
120
|
useEffect(() => {
|
|
115
121
|
if (!allowsCustomValue) return;
|
|
116
122
|
const currentSelectedKeys = selectedKeys ? selectedKeys === "all" ? [] : Array.from(selectedKeys).map(String) : selectedKey != null ? [String(selectedKey)] : [];
|
|
@@ -125,7 +131,9 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
125
131
|
]);
|
|
126
132
|
const mergedChildren = useMemo(() => {
|
|
127
133
|
if (!children && customKeys.size === 0) return children;
|
|
128
|
-
const
|
|
134
|
+
const term = searchValue.trim();
|
|
135
|
+
const localFilter = typeof filter === "function" ? filter : contains;
|
|
136
|
+
const customArray = Array.from(customKeys).filter((key) => !term || localFilter(key, term)).map((key) => /* @__PURE__ */ jsx(Item, {
|
|
129
137
|
textValue: key,
|
|
130
138
|
...customValueProps,
|
|
131
139
|
children: key
|
|
@@ -151,19 +159,27 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
151
159
|
customKeys,
|
|
152
160
|
selectionMode,
|
|
153
161
|
selectedKey,
|
|
154
|
-
selectedKeys
|
|
162
|
+
selectedKeys,
|
|
163
|
+
searchValue,
|
|
164
|
+
filter,
|
|
165
|
+
contains,
|
|
166
|
+
customValueProps
|
|
155
167
|
]);
|
|
156
168
|
const innerAriaLabel = props["aria-label"] || (typeof label === "string" ? label : void 0);
|
|
157
|
-
const [internalSearchValue, setInternalSearchValue] = useState("");
|
|
158
|
-
const isSearchControlled = controlledSearchValue !== void 0;
|
|
159
|
-
const searchValue = isSearchControlled ? controlledSearchValue : internalSearchValue;
|
|
160
169
|
const handleSearchChange = useCallback((value) => {
|
|
161
170
|
if (!isSearchControlled) setInternalSearchValue(value);
|
|
162
171
|
onSearchChange?.(value);
|
|
163
172
|
}, [isSearchControlled, onSearchChange]);
|
|
164
|
-
const
|
|
165
|
-
|
|
173
|
+
const textFilterFn = useMemo(() => {
|
|
174
|
+
if (filter === false) return isLoadingItems ? contains : () => true;
|
|
175
|
+
return filter || contains;
|
|
176
|
+
}, [
|
|
177
|
+
filter,
|
|
178
|
+
contains,
|
|
179
|
+
isLoadingItems
|
|
180
|
+
]);
|
|
166
181
|
const filterFn = useCallback((nodes) => {
|
|
182
|
+
if (filter === false && !isLoadingItems) return nodes;
|
|
167
183
|
const term = searchValue.trim();
|
|
168
184
|
if (!term) return nodes;
|
|
169
185
|
return [...nodes].map((node) => {
|
|
@@ -178,7 +194,12 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
178
194
|
}
|
|
179
195
|
return textFilterFn(node.textValue || "", term) ? node : null;
|
|
180
196
|
}).filter(Boolean);
|
|
181
|
-
}, [
|
|
197
|
+
}, [
|
|
198
|
+
filter,
|
|
199
|
+
searchValue,
|
|
200
|
+
textFilterFn,
|
|
201
|
+
isLoadingItems
|
|
202
|
+
]);
|
|
182
203
|
const enhancedChildren = useMemo(() => {
|
|
183
204
|
let childrenToProcess = mergedChildren;
|
|
184
205
|
if (!allowsCustomValue) return childrenToProcess;
|
|
@@ -192,13 +213,14 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
192
213
|
return false;
|
|
193
214
|
};
|
|
194
215
|
if (doesTermExist(term)) return childrenToProcess;
|
|
216
|
+
const localFilter = typeof filter === "function" ? filter : contains;
|
|
195
217
|
const hasVisibleFilteredItems = (() => {
|
|
196
218
|
for (const item of localCollectionState.collection) if (item.type === "item") {
|
|
197
219
|
if (textFilterFn(item.textValue || String(item.rendered || ""), term)) return true;
|
|
198
220
|
} else if (item.type === "section" && item.childNodes) {
|
|
199
221
|
for (const child of item.childNodes) if (textFilterFn(child.textValue || String(child.rendered || ""), term)) return true;
|
|
200
222
|
}
|
|
201
|
-
for (const customKey of customKeys) if (
|
|
223
|
+
for (const customKey of customKeys) if (localFilter(customKey, term)) return true;
|
|
202
224
|
return false;
|
|
203
225
|
})();
|
|
204
226
|
const customOption = /* @__PURE__ */ jsx(Item, {
|
|
@@ -232,7 +254,9 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
232
254
|
localCollectionState.collection,
|
|
233
255
|
customValueProps,
|
|
234
256
|
newCustomValueProps,
|
|
235
|
-
textFilterFn
|
|
257
|
+
textFilterFn,
|
|
258
|
+
filter,
|
|
259
|
+
contains
|
|
236
260
|
]);
|
|
237
261
|
styles = extractStyles(otherProps, PROP_STYLES, styles);
|
|
238
262
|
ref = useCombinedRefs(ref);
|
|
@@ -246,18 +270,44 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
246
270
|
const listState = listStateRef.current;
|
|
247
271
|
if (!listState) return;
|
|
248
272
|
const { selectionManager, collection } = listState;
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
273
|
+
const term = searchValue.trim();
|
|
274
|
+
let newCustomValueKey = null;
|
|
275
|
+
let customValueHasMatches = false;
|
|
276
|
+
const collectVisibleKeys = (nodes, out, inCustomSection = false) => {
|
|
277
|
+
for (const node of nodes) if (node.type === "item") {
|
|
278
|
+
out.push(node.key);
|
|
279
|
+
if (inCustomSection) {
|
|
280
|
+
newCustomValueKey = node.key;
|
|
281
|
+
customValueHasMatches = true;
|
|
282
|
+
}
|
|
283
|
+
} else if (node.childNodes) {
|
|
284
|
+
const isCustomSection = inCustomSection || node.key === "__custom_value__";
|
|
285
|
+
collectVisibleKeys(node.childNodes, out, isCustomSection);
|
|
286
|
+
}
|
|
252
287
|
};
|
|
253
288
|
const visibleKeys = [];
|
|
254
289
|
collectVisibleKeys(collection, visibleKeys);
|
|
290
|
+
if (newCustomValueKey == null && allowsCustomValue && term) {
|
|
291
|
+
for (const node of collection) if (node.type === "item" && String(node.key) === term) {
|
|
292
|
+
newCustomValueKey = node.key;
|
|
293
|
+
customValueHasMatches = false;
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
255
297
|
if (visibleKeys.length === 0) {
|
|
256
298
|
selectionManager.setFocusedKey(null);
|
|
257
299
|
return;
|
|
258
300
|
}
|
|
301
|
+
const customValueShouldBeFocused = newCustomValueKey != null && !customValueHasMatches;
|
|
259
302
|
const currentFocused = selectionManager.focusedKey;
|
|
260
|
-
if (currentFocused != null && visibleKeys.includes(currentFocused))
|
|
303
|
+
if (currentFocused != null && visibleKeys.includes(currentFocused)) {
|
|
304
|
+
const currentIsNewCustomValue = newCustomValueKey != null && currentFocused === newCustomValueKey;
|
|
305
|
+
if (customValueShouldBeFocused) {
|
|
306
|
+
if (currentIsNewCustomValue) return;
|
|
307
|
+
} else if (newCustomValueKey != null) {
|
|
308
|
+
if (!currentIsNewCustomValue) return;
|
|
309
|
+
} else return;
|
|
310
|
+
}
|
|
261
311
|
const findFirstVisibleSelectedKey = () => {
|
|
262
312
|
if (selectionMode === "single") {
|
|
263
313
|
if (selectedKey != null) {
|
|
@@ -273,9 +323,11 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
273
323
|
return null;
|
|
274
324
|
};
|
|
275
325
|
let keyToFocus = null;
|
|
276
|
-
if (
|
|
277
|
-
else
|
|
278
|
-
|
|
326
|
+
if (customValueShouldBeFocused) keyToFocus = newCustomValueKey;
|
|
327
|
+
else {
|
|
328
|
+
keyToFocus = findFirstVisibleSelectedKey();
|
|
329
|
+
if (keyToFocus == null) keyToFocus = visibleKeys.find((k) => k !== newCustomValueKey) ?? visibleKeys[0];
|
|
330
|
+
}
|
|
279
331
|
if (listState.lastFocusSourceRef) listState.lastFocusSourceRef.current = "keyboard";
|
|
280
332
|
selectionManager.setFocusedKey(keyToFocus);
|
|
281
333
|
}, [
|
|
@@ -283,7 +335,8 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
283
335
|
enhancedChildren,
|
|
284
336
|
selectionMode,
|
|
285
337
|
selectedKey,
|
|
286
|
-
selectedKeys
|
|
338
|
+
selectedKeys,
|
|
339
|
+
allowsCustomValue
|
|
287
340
|
]);
|
|
288
341
|
const { keyboardProps } = useKeyboard({ onKeyDown: (e) => {
|
|
289
342
|
if (e.key === "ArrowDown" || e.key === "ArrowUp") {
|
|
@@ -355,8 +408,10 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
355
408
|
disabled: !!isDisabled,
|
|
356
409
|
focused: isFocused,
|
|
357
410
|
loading: !!isLoading,
|
|
411
|
+
"loading-items": !!isLoadingItems,
|
|
358
412
|
searchable: true,
|
|
359
413
|
prefix: !!isLoading,
|
|
414
|
+
suffix: !!isLoadingItems,
|
|
360
415
|
...externalMods
|
|
361
416
|
}), [
|
|
362
417
|
isInvalid,
|
|
@@ -364,6 +419,7 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
364
419
|
isDisabled,
|
|
365
420
|
isFocused,
|
|
366
421
|
isLoading,
|
|
422
|
+
isLoadingItems,
|
|
367
423
|
externalMods
|
|
368
424
|
]);
|
|
369
425
|
const handleSelectionChange = (selection) => {
|
|
@@ -388,36 +444,44 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
388
444
|
const searchInput = /* @__PURE__ */ jsxs(SearchWrapperElement, {
|
|
389
445
|
mods,
|
|
390
446
|
"data-size": size,
|
|
391
|
-
children: [
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
447
|
+
children: [
|
|
448
|
+
isLoading && /* @__PURE__ */ jsx("div", {
|
|
449
|
+
"data-element": "Prefix",
|
|
450
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
451
|
+
"data-element": "InputIcon",
|
|
452
|
+
children: isLoading ? /* @__PURE__ */ jsx(LoadingIcon, {}) : null
|
|
453
|
+
})
|
|
454
|
+
}),
|
|
455
|
+
/* @__PURE__ */ jsx(SearchInputElement, {
|
|
456
|
+
ref: searchInputRef,
|
|
457
|
+
qa: qa || "FilterListBox",
|
|
458
|
+
id,
|
|
459
|
+
"data-prefix": isLoading ? "" : void 0,
|
|
460
|
+
"data-suffix": isLoadingItems ? "" : void 0,
|
|
461
|
+
type: "search",
|
|
462
|
+
placeholder: searchPlaceholder,
|
|
463
|
+
value: searchValue,
|
|
464
|
+
disabled: isDisabled,
|
|
465
|
+
autoFocus,
|
|
466
|
+
"data-autofocus": autoFocus ? "" : void 0,
|
|
467
|
+
styles: searchInputStyles,
|
|
468
|
+
"data-size": size,
|
|
469
|
+
"data-input-type": "filterlistbox",
|
|
470
|
+
role: "combobox",
|
|
471
|
+
"aria-expanded": "true",
|
|
472
|
+
"aria-haspopup": "listbox",
|
|
473
|
+
"aria-activedescendant": listStateRef.current?.selectionManager.focusedKey != null ? `ListBoxItem-${listStateRef.current?.selectionManager.focusedKey}` : void 0,
|
|
474
|
+
onChange: (e) => {
|
|
475
|
+
handleSearchChange(e.target.value);
|
|
476
|
+
},
|
|
477
|
+
...keyboardProps,
|
|
478
|
+
...modAttrs(mods)
|
|
479
|
+
}),
|
|
480
|
+
isLoadingItems && /* @__PURE__ */ jsx("div", {
|
|
481
|
+
"data-element": "Suffix",
|
|
482
|
+
children: /* @__PURE__ */ jsx(LoadingIcon, { "data-element": "InputIcon" })
|
|
396
483
|
})
|
|
397
|
-
|
|
398
|
-
ref: searchInputRef,
|
|
399
|
-
qa: qa || "FilterListBox",
|
|
400
|
-
id,
|
|
401
|
-
"data-prefix": isLoading ? "" : void 0,
|
|
402
|
-
type: "search",
|
|
403
|
-
placeholder: searchPlaceholder,
|
|
404
|
-
value: searchValue,
|
|
405
|
-
disabled: isDisabled,
|
|
406
|
-
autoFocus,
|
|
407
|
-
"data-autofocus": autoFocus ? "" : void 0,
|
|
408
|
-
styles: searchInputStyles,
|
|
409
|
-
"data-size": size,
|
|
410
|
-
"data-input-type": "filterlistbox",
|
|
411
|
-
role: "combobox",
|
|
412
|
-
"aria-expanded": "true",
|
|
413
|
-
"aria-haspopup": "listbox",
|
|
414
|
-
"aria-activedescendant": listStateRef.current?.selectionManager.focusedKey != null ? `ListBoxItem-${listStateRef.current?.selectionManager.focusedKey}` : void 0,
|
|
415
|
-
onChange: (e) => {
|
|
416
|
-
handleSearchChange(e.target.value);
|
|
417
|
-
},
|
|
418
|
-
...keyboardProps,
|
|
419
|
-
...modAttrs(mods)
|
|
420
|
-
})]
|
|
484
|
+
]
|
|
421
485
|
});
|
|
422
486
|
return wrapWithField(/* @__PURE__ */ jsxs(FilterListBoxWrapperElement, {
|
|
423
487
|
ref,
|
|
@@ -464,7 +528,7 @@ const FilterListBox = forwardRef(function FilterListBox(props, ref) {
|
|
|
464
528
|
items,
|
|
465
529
|
allValueProps,
|
|
466
530
|
filter: filterFn,
|
|
467
|
-
emptyLabel:
|
|
531
|
+
emptyLabel: emptyLabel !== void 0 ? emptyLabel : searchValue.trim() ? "No results found" : "No items",
|
|
468
532
|
onSelectionChange: handleSelectionChange,
|
|
469
533
|
onEscape,
|
|
470
534
|
onOptionClick: handleOptionClick,
|