@cube-dev/ui-kit 0.132.0 → 0.133.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 +14 -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.d.ts +28 -28
- 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/Tree/Tree.js +60 -51
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +3 -72
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/styled.js +26 -4
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/types.d.ts +0 -17
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.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.js +5 -3
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +4 -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/DraggableListBox.js +24 -0
- package/dist/components/fields/ListBox/DraggableListBox.js.map +1 -0
- package/dist/components/fields/ListBox/ListBox.d.ts +11 -0
- package/dist/components/fields/ListBox/ListBox.js +153 -38
- package/dist/components/fields/ListBox/ListBox.js.map +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 +11 -60
- package/dist/components/navigation/Tabs/DraggableTabList.js.map +1 -1
- package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +3 -10
- package/dist/components/navigation/Tabs/TabButton.js.map +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 +4 -2
- package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +4 -2
- package/dist/components/navigation/Tabs/Tabs.js.map +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.d.ts +2 -0
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/types.js.map +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/OpenTransitionContext.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/DraggableCollection.js +142 -0
- package/dist/components/shared/DraggableCollection.js.map +1 -0
- 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/GripVerticalIcon.d.ts +12 -0
- package/dist/icons/GripVerticalIcon.js +11 -0
- package/dist/icons/GripVerticalIcon.js.map +1 -0
- 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/index.d.ts +1 -0
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +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/content/Tree.md +0 -25
- package/docs/components/fields/FilterPicker.md +27 -0
- package/docs/components/fields/ListBox.md +33 -0
- package/docs/components/navigation/Tabs.md +127 -51
- package/package.json +1 -1
package/dist/utils/selection.js
CHANGED
package/dist/utils/styles.js
CHANGED
package/dist/utils/tree.js
CHANGED
package/dist/utils/warnings.js
CHANGED
package/dist/version.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.133.0 | Cube Dev Team */
|
|
2
2
|
//#region src/version.ts
|
|
3
|
-
const VERSION = "0.
|
|
3
|
+
const VERSION = "0.133.0";
|
|
4
4
|
if (typeof window !== "undefined") {
|
|
5
5
|
const version = VERSION;
|
|
6
6
|
window.CubeUIKit = window.CubeUIKit || { version };
|
|
@@ -58,13 +58,6 @@ consumers can be migrated with minimal churn.
|
|
|
58
58
|
— Called when a node is checked or unchecked.
|
|
59
59
|
- **`onSelect`** `(selectedKeys: Key[], info: TreeOnSelectInfo) => void` —
|
|
60
60
|
Called when row selection changes.
|
|
61
|
-
- **`expandOnFolderClick`** `boolean` (default: `false`) — When `true`,
|
|
62
|
-
activating a non-leaf row toggles its expansion instead of selecting
|
|
63
|
-
it. Activation happens on mouse click, `Enter`, or `Space` (in
|
|
64
|
-
checkable trees `Space` is reserved for the row checkbox; `Enter`
|
|
65
|
-
always expands). The chevron and keyboard navigation continue to
|
|
66
|
-
work independently. Useful for file-tree UX where only leaves are
|
|
67
|
-
meaningful selection targets.
|
|
68
61
|
- **`menu`** `ReactNode | ((data, state) => ReactNode | null)` — Default
|
|
69
62
|
`Menu.Item` children rendered on every row that doesn't override via
|
|
70
63
|
`data.menu`. Returning `null` from the callback hides the menu for
|
|
@@ -324,24 +317,6 @@ Set `data.menu` to override the tree-level menu for a specific row,
|
|
|
324
317
|
or `null` to hide it entirely. `data.contextMenu` and
|
|
325
318
|
`data.onAction` follow the same per-row override pattern.
|
|
326
319
|
|
|
327
|
-
### Expand on Folder Click
|
|
328
|
-
|
|
329
|
-
`expandOnFolderClick` makes folder rows toggle their expansion when
|
|
330
|
-
activated instead of triggering selection. Leaves still select normally,
|
|
331
|
-
which mirrors typical file-tree UX. Folder rows remain focusable for
|
|
332
|
-
keyboard navigation, and the chevron toggle keeps working.
|
|
333
|
-
|
|
334
|
-
Activation rules for folder rows:
|
|
335
|
-
|
|
336
|
-
- Mouse click → expand / collapse.
|
|
337
|
-
- `Enter` → expand / collapse (always, including in `isCheckable` trees).
|
|
338
|
-
- `Space` → expand / collapse in non-checkable trees; in `isCheckable`
|
|
339
|
-
trees `Space` toggles the row's checkbox instead.
|
|
340
|
-
|
|
341
|
-
```jsx
|
|
342
|
-
<Tree treeData={data} expandOnFolderClick />
|
|
343
|
-
```
|
|
344
|
-
|
|
345
320
|
## Accessibility
|
|
346
321
|
|
|
347
322
|
Tree implements the
|
|
@@ -66,6 +66,8 @@ A versatile selection component that combines a trigger button with a searchable
|
|
|
66
66
|
- **`onOptionClick`** `(key: Key) => void` — Callback when an option is clicked (non-checkbox area)
|
|
67
67
|
- **`onClear`** `() => void` — Callback called when the clear button is pressed
|
|
68
68
|
- **`onOpenChange`** `(isOpen: boolean) => void` — Callback called when the popover open state changes
|
|
69
|
+
- **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop item reordering in the dropdown list
|
|
70
|
+
- **`onReorder`** `(newOrder: string[]) => void` — Callback when items are reordered via drag-and-drop or keyboard (Alt+Arrow)
|
|
69
71
|
|
|
70
72
|
### Base Properties
|
|
71
73
|
|
|
@@ -503,6 +505,30 @@ Use `isLoadingItems` to indicate that items are currently being fetched. Unlike
|
|
|
503
505
|
</FilterPicker>
|
|
504
506
|
```
|
|
505
507
|
|
|
508
|
+
### Reorderable
|
|
509
|
+
|
|
510
|
+
Enable drag-and-drop reordering inside the dropdown with `isReorderable`. Items display a grip handle and can be dragged to new positions. Use `Alt+Arrow` keys to reorder via keyboard.
|
|
511
|
+
|
|
512
|
+
```jsx
|
|
513
|
+
const [keyOrder, setKeyOrder] = useState([
|
|
514
|
+
'revenue', 'orders', 'customers', 'sessions',
|
|
515
|
+
'page-views', 'bounce-rate', 'conversion', 'aov',
|
|
516
|
+
'retention', 'churn', 'ltv', 'arpu',
|
|
517
|
+
]);
|
|
518
|
+
|
|
519
|
+
<FilterPicker
|
|
520
|
+
isReorderable
|
|
521
|
+
selectionMode="multiple"
|
|
522
|
+
defaultSelectedKeys={['revenue', 'orders', 'customers']}
|
|
523
|
+
label="Metrics"
|
|
524
|
+
onReorder={(newOrder) => setKeyOrder(newOrder)}
|
|
525
|
+
>
|
|
526
|
+
{keyOrder.map((key) => (
|
|
527
|
+
<FilterPicker.Item key={key}>{key}</FilterPicker.Item>
|
|
528
|
+
))}
|
|
529
|
+
</FilterPicker>
|
|
530
|
+
```
|
|
531
|
+
|
|
506
532
|
## Accessibility
|
|
507
533
|
|
|
508
534
|
### Keyboard Navigation
|
|
@@ -512,6 +538,7 @@ Use `isLoadingItems` to indicate that items are currently being fetched. Unlike
|
|
|
512
538
|
- `Arrow Up/Down` - Opens the popover (when closed) or navigates through options (when open)
|
|
513
539
|
- `Escape` - Closes the popover or clears search
|
|
514
540
|
- `Home/End` - Navigate to first/last option
|
|
541
|
+
- `Alt+ArrowUp` / `Alt+ArrowDown` - Reorder the focused item (when `isReorderable`)
|
|
515
542
|
|
|
516
543
|
### Screen Reader Support
|
|
517
544
|
|
|
@@ -46,6 +46,8 @@ A versatile list selection component that allows users to select one or more ite
|
|
|
46
46
|
- **`onOptionClick`** `(key: Key) => void` — Callback when an option is clicked (non-checkbox area)
|
|
47
47
|
- **`items`** `Iterable<T>` — Array of items for dynamic content with render function pattern
|
|
48
48
|
- **`disableSelectionToggle`** `boolean` (default: `false`) — When true, clicking an already-selected item keeps it selected instead of toggling it off
|
|
49
|
+
- **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop item reordering. Disables virtualization when active
|
|
50
|
+
- **`onReorder`** `(newOrder: string[]) => void` — Callback when items are reordered via drag-and-drop or keyboard (Alt+Arrow)
|
|
49
51
|
|
|
50
52
|
### Base Properties
|
|
51
53
|
|
|
@@ -116,6 +118,8 @@ The `mods` property accepts the following modifiers you can override:
|
|
|
116
118
|
- **`header`** `boolean` — Applied when header prop is provided or `showSelectAll={true}`
|
|
117
119
|
- **`footer`** `boolean` — Applied when footer prop is provided
|
|
118
120
|
- **`selectAll`** `boolean` — Applied when `showSelectAll={true}` in multiple selection mode
|
|
121
|
+
- **`draggable`** `boolean` — Applied to options when `isReorderable={true}`
|
|
122
|
+
- **`dragging`** `boolean` — Applied to the option currently being dragged
|
|
119
123
|
|
|
120
124
|
## Key Properties
|
|
121
125
|
|
|
@@ -604,6 +608,34 @@ const [selectedKey, setSelectedKey] = useState('apple');
|
|
|
604
608
|
</Form>
|
|
605
609
|
```
|
|
606
610
|
|
|
611
|
+
### Reorderable
|
|
612
|
+
|
|
613
|
+
Enable drag-and-drop reordering with `isReorderable`. Items display a grip handle and can be dragged to new positions. Use `Alt+Arrow` keys to reorder via keyboard.
|
|
614
|
+
|
|
615
|
+
```jsx
|
|
616
|
+
const [keyOrder, setKeyOrder] = useState([
|
|
617
|
+
'revenue', 'orders', 'customers', 'sessions',
|
|
618
|
+
]);
|
|
619
|
+
|
|
620
|
+
<ListBox
|
|
621
|
+
isReorderable
|
|
622
|
+
selectionMode="multiple"
|
|
623
|
+
label="Metrics"
|
|
624
|
+
onReorder={(newOrder) => setKeyOrder(newOrder)}
|
|
625
|
+
>
|
|
626
|
+
{keyOrder.map((key) => (
|
|
627
|
+
<ListBox.Item key={key}>{key}</ListBox.Item>
|
|
628
|
+
))}
|
|
629
|
+
</ListBox>
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
**Key features:**
|
|
633
|
+
|
|
634
|
+
- **Drag-and-drop**: Reorder items by dragging the grip handle
|
|
635
|
+
- **Keyboard reordering**: Use `Alt+ArrowUp` / `Alt+ArrowDown` to move the focused item
|
|
636
|
+
- **Callback**: `onReorder` is called with the new key order after a drop or keyboard move
|
|
637
|
+
- **Virtualization**: Automatically disabled when reordering is active
|
|
638
|
+
|
|
607
639
|
## Accessibility
|
|
608
640
|
|
|
609
641
|
### Keyboard Navigation
|
|
@@ -614,6 +646,7 @@ const [selectedKey, setSelectedKey] = useState('apple');
|
|
|
614
646
|
- `Home/End` - Move to first/last option
|
|
615
647
|
- `Page Up/Page Down` - Move up/down by multiple items
|
|
616
648
|
- `Escape` - Deselect all items (if onEscape not provided)
|
|
649
|
+
- `Alt+ArrowUp` / `Alt+ArrowDown` - Reorder the focused item (when `isReorderable`)
|
|
617
650
|
|
|
618
651
|
### Screen Reader Support
|
|
619
652
|
|
|
@@ -37,7 +37,7 @@ An accessible tabbed interface for organizing content into multiple panels, show
|
|
|
37
37
|
- **`onAction`** `(action: string, tabKey: string) => void` — Callback when a menu action is triggered
|
|
38
38
|
- **`renderPanel`** `(key: string) => ReactNode` — Render function for lazy panel content
|
|
39
39
|
- **`panelCacheKeys`** `Record<string, any>` — Cache keys for `renderPanel` content
|
|
40
|
-
- **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop tab reordering
|
|
40
|
+
- **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop tab reordering. When a tab picker is shown, reordering is automatically enabled in the picker dropdown as well
|
|
41
41
|
- **`keyOrder`** `string[]` — Controlled tab display order
|
|
42
42
|
- **`onReorder`** `(newOrder: string[]) => void` — Callback when tabs are reordered
|
|
43
43
|
- **`showTabPicker`** `boolean | 'auto'` (default: `false`) — Show dropdown tab picker
|
|
@@ -169,9 +169,7 @@ Optional wrapper for tabs when using explicit panel placement.
|
|
|
169
169
|
Explicit panel definition for advanced layout control.
|
|
170
170
|
|
|
171
171
|
```jsx
|
|
172
|
-
<Tabs.Panel key="tab1">
|
|
173
|
-
Panel 1 content
|
|
174
|
-
</Tabs.Panel>
|
|
172
|
+
<Tabs.Panel key="tab1">Panel 1 content</Tabs.Panel>
|
|
175
173
|
```
|
|
176
174
|
|
|
177
175
|
### Tabs.Action
|
|
@@ -187,7 +185,9 @@ Action button designed for the Tabs prefix/suffix slots. Styled with sharp edges
|
|
|
187
185
|
</>
|
|
188
186
|
}
|
|
189
187
|
>
|
|
190
|
-
<Tab key="tab1" title="Tab 1">
|
|
188
|
+
<Tab key="tab1" title="Tab 1">
|
|
189
|
+
Content
|
|
190
|
+
</Tab>
|
|
191
191
|
</Tabs>
|
|
192
192
|
```
|
|
193
193
|
|
|
@@ -243,16 +243,22 @@ Control the active tab externally with `activeKey` and `onChange`.
|
|
|
243
243
|
const [activeKey, setActiveKey] = useState('tab1');
|
|
244
244
|
|
|
245
245
|
<Tabs activeKey={activeKey} onChange={setActiveKey}>
|
|
246
|
-
<Tab key="tab1" title="Tab 1">
|
|
247
|
-
|
|
248
|
-
</
|
|
246
|
+
<Tab key="tab1" title="Tab 1">
|
|
247
|
+
Content 1
|
|
248
|
+
</Tab>
|
|
249
|
+
<Tab key="tab2" title="Tab 2">
|
|
250
|
+
Content 2
|
|
251
|
+
</Tab>
|
|
252
|
+
</Tabs>;
|
|
249
253
|
```
|
|
250
254
|
|
|
251
255
|
### Disabled Tab
|
|
252
256
|
|
|
253
257
|
```jsx
|
|
254
258
|
<Tabs defaultActiveKey="tab1">
|
|
255
|
-
<Tab key="tab1" title="Active Tab">
|
|
259
|
+
<Tab key="tab1" title="Active Tab">
|
|
260
|
+
Content
|
|
261
|
+
</Tab>
|
|
256
262
|
<Tab key="tab2" title="Disabled Tab" isDisabled>
|
|
257
263
|
Inaccessible content
|
|
258
264
|
</Tab>
|
|
@@ -269,8 +275,12 @@ Add buttons or other elements before or after the tab list.
|
|
|
269
275
|
prefix={<Button size="small">Menu</Button>}
|
|
270
276
|
suffix={<Button size="small">Add New</Button>}
|
|
271
277
|
>
|
|
272
|
-
<Tab key="items" title="Items">
|
|
273
|
-
|
|
278
|
+
<Tab key="items" title="Items">
|
|
279
|
+
Item list
|
|
280
|
+
</Tab>
|
|
281
|
+
<Tab key="archived" title="Archived">
|
|
282
|
+
Archived items
|
|
283
|
+
</Tab>
|
|
274
284
|
</Tabs>
|
|
275
285
|
```
|
|
276
286
|
|
|
@@ -286,21 +296,17 @@ const [tabs, setTabs] = useState([
|
|
|
286
296
|
|
|
287
297
|
<Tabs
|
|
288
298
|
defaultActiveKey="tab1"
|
|
289
|
-
onDelete={(key) => setTabs(tabs.filter(t => t.key !== key))}
|
|
299
|
+
onDelete={(key) => setTabs(tabs.filter((t) => t.key !== key))}
|
|
290
300
|
suffix={
|
|
291
|
-
<Tabs.Action
|
|
292
|
-
icon={<PlusIcon />}
|
|
293
|
-
aria-label="Add tab"
|
|
294
|
-
onPress={handleAdd}
|
|
295
|
-
/>
|
|
301
|
+
<Tabs.Action icon={<PlusIcon />} aria-label="Add tab" onPress={handleAdd} />
|
|
296
302
|
}
|
|
297
303
|
>
|
|
298
|
-
{tabs.map(tab => (
|
|
304
|
+
{tabs.map((tab) => (
|
|
299
305
|
<Tab key={tab.key} title={tab.title}>
|
|
300
306
|
Content for {tab.title}
|
|
301
307
|
</Tab>
|
|
302
308
|
))}
|
|
303
|
-
</Tabs
|
|
309
|
+
</Tabs>;
|
|
304
310
|
```
|
|
305
311
|
|
|
306
312
|
### Tab Menus
|
|
@@ -321,7 +327,9 @@ Add dropdown menus to tabs using the `menu` prop. This replaces the need for man
|
|
|
321
327
|
// 'delete' is handled automatically via onDelete
|
|
322
328
|
}}
|
|
323
329
|
>
|
|
324
|
-
<Tab key="tab1" title="Tab 1">
|
|
330
|
+
<Tab key="tab1" title="Tab 1">
|
|
331
|
+
Content
|
|
332
|
+
</Tab>
|
|
325
333
|
</Tabs>
|
|
326
334
|
```
|
|
327
335
|
|
|
@@ -355,7 +363,9 @@ Combine editable tabs with a menu for rename, duplicate, and delete actions.
|
|
|
355
363
|
// 'delete' triggers onDelete automatically
|
|
356
364
|
}}
|
|
357
365
|
>
|
|
358
|
-
<Tab key="tab1" title="Tab 1">
|
|
366
|
+
<Tab key="tab1" title="Tab 1">
|
|
367
|
+
Content
|
|
368
|
+
</Tab>
|
|
359
369
|
</Tabs>
|
|
360
370
|
```
|
|
361
371
|
|
|
@@ -373,7 +383,9 @@ Enable right-click context menus with the `contextMenu` prop. Uses the same menu
|
|
|
373
383
|
</>
|
|
374
384
|
}
|
|
375
385
|
>
|
|
376
|
-
<Tab key="tab1" title="Tab 1">
|
|
386
|
+
<Tab key="tab1" title="Tab 1">
|
|
387
|
+
Content
|
|
388
|
+
</Tab>
|
|
377
389
|
</Tabs>
|
|
378
390
|
```
|
|
379
391
|
|
|
@@ -388,7 +400,9 @@ Enable right-click context menus with the `contextMenu` prop. Uses the same menu
|
|
|
388
400
|
</>
|
|
389
401
|
}
|
|
390
402
|
>
|
|
391
|
-
<Tab key="tab1" title="Tab 1">
|
|
403
|
+
<Tab key="tab1" title="Tab 1">
|
|
404
|
+
Content
|
|
405
|
+
</Tab>
|
|
392
406
|
</Tabs>
|
|
393
407
|
```
|
|
394
408
|
|
|
@@ -405,9 +419,11 @@ Override or disable menus on individual tabs.
|
|
|
405
419
|
</>
|
|
406
420
|
}
|
|
407
421
|
>
|
|
408
|
-
<Tab key="tab1" title="Uses Default Menu">
|
|
409
|
-
|
|
410
|
-
|
|
422
|
+
<Tab key="tab1" title="Uses Default Menu">
|
|
423
|
+
Content
|
|
424
|
+
</Tab>
|
|
425
|
+
<Tab
|
|
426
|
+
key="tab2"
|
|
411
427
|
title="Custom Menu"
|
|
412
428
|
menu={
|
|
413
429
|
<>
|
|
@@ -417,7 +433,9 @@ Override or disable menus on individual tabs.
|
|
|
417
433
|
>
|
|
418
434
|
Content
|
|
419
435
|
</Tab>
|
|
420
|
-
<Tab key="tab3" title="No Menu" menu={null}>
|
|
436
|
+
<Tab key="tab3" title="No Menu" menu={null}>
|
|
437
|
+
Content
|
|
438
|
+
</Tab>
|
|
421
439
|
</Tabs>
|
|
422
440
|
```
|
|
423
441
|
|
|
@@ -437,7 +455,9 @@ Use `Menu.Section` for organized menus.
|
|
|
437
455
|
</>
|
|
438
456
|
}
|
|
439
457
|
>
|
|
440
|
-
<Tab key="tab1" title="Tab 1">
|
|
458
|
+
<Tab key="tab1" title="Tab 1">
|
|
459
|
+
Content
|
|
460
|
+
</Tab>
|
|
441
461
|
</Tabs>
|
|
442
462
|
```
|
|
443
463
|
|
|
@@ -453,10 +473,16 @@ const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
|
|
|
453
473
|
keyOrder={keyOrder}
|
|
454
474
|
onReorder={(newOrder) => setKeyOrder(newOrder)}
|
|
455
475
|
>
|
|
456
|
-
<Tab key="tab1" title="Tab 1">
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
476
|
+
<Tab key="tab1" title="Tab 1">
|
|
477
|
+
Content 1
|
|
478
|
+
</Tab>
|
|
479
|
+
<Tab key="tab2" title="Tab 2">
|
|
480
|
+
Content 2
|
|
481
|
+
</Tab>
|
|
482
|
+
<Tab key="tab3" title="Tab 3">
|
|
483
|
+
Content 3
|
|
484
|
+
</Tab>
|
|
485
|
+
</Tabs>;
|
|
460
486
|
```
|
|
461
487
|
|
|
462
488
|
**Key features:**
|
|
@@ -494,6 +520,32 @@ const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
|
|
|
494
520
|
</Tabs>
|
|
495
521
|
```
|
|
496
522
|
|
|
523
|
+
### Reorderable Tab Picker
|
|
524
|
+
|
|
525
|
+
When `isReorderable` is enabled and a tab picker is shown, the picker dropdown automatically supports drag-and-drop reordering as well. Items in the dropdown display a grip handle and can be dragged to reorder. The same `onReorder` callback is shared between the horizontal tab bar and the vertical tab picker.
|
|
526
|
+
|
|
527
|
+
```jsx
|
|
528
|
+
const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
|
|
529
|
+
|
|
530
|
+
<Tabs
|
|
531
|
+
isReorderable
|
|
532
|
+
showTabPicker
|
|
533
|
+
type="file"
|
|
534
|
+
keyOrder={keyOrder}
|
|
535
|
+
onReorder={(newOrder) => setKeyOrder(newOrder)}
|
|
536
|
+
>
|
|
537
|
+
<Tab key="tab1" title="Tab 1">
|
|
538
|
+
Content 1
|
|
539
|
+
</Tab>
|
|
540
|
+
<Tab key="tab2" title="Tab 2">
|
|
541
|
+
Content 2
|
|
542
|
+
</Tab>
|
|
543
|
+
<Tab key="tab3" title="Tab 3">
|
|
544
|
+
Content 3
|
|
545
|
+
</Tab>
|
|
546
|
+
</Tabs>;
|
|
547
|
+
```
|
|
548
|
+
|
|
497
549
|
### Scroll Arrows
|
|
498
550
|
|
|
499
551
|
Add left/right navigation arrows to scroll overflowed tabs. Use `showScrollArrows` with `true`, `false`, or `'auto'` (shows only when tabs overflow).
|
|
@@ -504,7 +556,7 @@ Add left/right navigation arrows to scroll overflowed tabs. Use `showScrollArrow
|
|
|
504
556
|
showScrollArrows="auto"
|
|
505
557
|
styles={{ width: '500px' }}
|
|
506
558
|
>
|
|
507
|
-
{tabs.map(tab => (
|
|
559
|
+
{tabs.map((tab) => (
|
|
508
560
|
<Tab key={tab.id} title={tab.title}>
|
|
509
561
|
{tab.content}
|
|
510
562
|
</Tab>
|
|
@@ -521,7 +573,7 @@ Combine with `showTabPicker` for both scroll arrows and a dropdown picker:
|
|
|
521
573
|
showTabPicker="auto"
|
|
522
574
|
type="file"
|
|
523
575
|
>
|
|
524
|
-
{tabs.map(tab => (
|
|
576
|
+
{tabs.map((tab) => (
|
|
525
577
|
<Tab key={tab.id} title={tab.title}>
|
|
526
578
|
{tab.content}
|
|
527
579
|
</Tab>
|
|
@@ -543,7 +595,7 @@ By default, scroll arrows and the tab picker appear in the suffix (after the tab
|
|
|
543
595
|
type="file"
|
|
544
596
|
styles={{ width: '500px' }}
|
|
545
597
|
>
|
|
546
|
-
{tabs.map(tab => (
|
|
598
|
+
{tabs.map((tab) => (
|
|
547
599
|
<Tab key={tab.id} title={tab.title}>
|
|
548
600
|
{tab.content}
|
|
549
601
|
</Tab>
|
|
@@ -552,6 +604,7 @@ By default, scroll arrows and the tab picker appear in the suffix (after the tab
|
|
|
552
604
|
```
|
|
553
605
|
|
|
554
606
|
When both are in the same slot:
|
|
607
|
+
|
|
555
608
|
- In **prefix**: TabPicker appears first (left), then scroll arrows (right)
|
|
556
609
|
- In **suffix**: Scroll arrows appear first (left), then TabPicker (right)
|
|
557
610
|
|
|
@@ -565,10 +618,14 @@ const [view, setView] = useState('overview');
|
|
|
565
618
|
<Tabs activeKey={view} onChange={setView}>
|
|
566
619
|
<Tab key="overview" title="Overview" />
|
|
567
620
|
<Tab key="settings" title="Settings" />
|
|
568
|
-
</Tabs
|
|
569
|
-
|
|
570
|
-
{
|
|
571
|
-
|
|
621
|
+
</Tabs>;
|
|
622
|
+
|
|
623
|
+
{
|
|
624
|
+
view === 'overview' && <OverviewPage />;
|
|
625
|
+
}
|
|
626
|
+
{
|
|
627
|
+
view === 'settings' && <SettingsPage />;
|
|
628
|
+
}
|
|
572
629
|
```
|
|
573
630
|
|
|
574
631
|
### Explicit Panels
|
|
@@ -592,8 +649,12 @@ Render all panels immediately but keep inactive ones hidden.
|
|
|
592
649
|
|
|
593
650
|
```jsx
|
|
594
651
|
<Tabs defaultActiveKey="tab1" prerender>
|
|
595
|
-
<Tab key="tab1" title="Tab 1">
|
|
596
|
-
|
|
652
|
+
<Tab key="tab1" title="Tab 1">
|
|
653
|
+
Content 1
|
|
654
|
+
</Tab>
|
|
655
|
+
<Tab key="tab2" title="Tab 2">
|
|
656
|
+
Content 2
|
|
657
|
+
</Tab>
|
|
597
658
|
</Tabs>
|
|
598
659
|
```
|
|
599
660
|
|
|
@@ -622,8 +683,12 @@ Override per-tab/panel:
|
|
|
622
683
|
|
|
623
684
|
```jsx
|
|
624
685
|
<Tabs prerender>
|
|
625
|
-
<Tab key="tab1" title="Prerendered">
|
|
626
|
-
|
|
686
|
+
<Tab key="tab1" title="Prerendered">
|
|
687
|
+
Always in DOM
|
|
688
|
+
</Tab>
|
|
689
|
+
<Tab key="tab2" title="Lazy" prerender={false}>
|
|
690
|
+
Lazy loaded
|
|
691
|
+
</Tab>
|
|
627
692
|
</Tabs>
|
|
628
693
|
```
|
|
629
694
|
|
|
@@ -638,10 +703,14 @@ content is computed, while inactive tabs use cached content.
|
|
|
638
703
|
defaultActiveKey="tab1"
|
|
639
704
|
renderPanel={(key) => {
|
|
640
705
|
switch (key) {
|
|
641
|
-
case 'tab1':
|
|
642
|
-
|
|
643
|
-
case '
|
|
644
|
-
|
|
706
|
+
case 'tab1':
|
|
707
|
+
return <ExpensiveChart data={chartData} />;
|
|
708
|
+
case 'tab2':
|
|
709
|
+
return <LargeTable rows={tableRows} />;
|
|
710
|
+
case 'tab3':
|
|
711
|
+
return <ComplexForm fields={formFields} />;
|
|
712
|
+
default:
|
|
713
|
+
return null;
|
|
645
714
|
}
|
|
646
715
|
}}
|
|
647
716
|
>
|
|
@@ -662,8 +731,8 @@ content is computed, while inactive tabs use cached content.
|
|
|
662
731
|
<Tabs
|
|
663
732
|
renderPanel={(key) => <Panel data={data[key]} />}
|
|
664
733
|
panelCacheKeys={{
|
|
665
|
-
tab1: data.tab1.version,
|
|
666
|
-
tab2: data.tab2.version,
|
|
734
|
+
tab1: data.tab1.version, // Cached, re-renders when version changes
|
|
735
|
+
tab2: data.tab2.version, // Cached, re-renders when version changes
|
|
667
736
|
// tab3 has no cache key - re-renders on every Tabs render
|
|
668
737
|
}}
|
|
669
738
|
>
|
|
@@ -672,6 +741,7 @@ content is computed, while inactive tabs use cached content.
|
|
|
672
741
|
```
|
|
673
742
|
|
|
674
743
|
This approach is ideal for:
|
|
744
|
+
|
|
675
745
|
- Tabs with complex visualizations or charts
|
|
676
746
|
- Large data tables that are expensive to render
|
|
677
747
|
- Forms with many fields
|
|
@@ -706,6 +776,7 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
|
|
|
706
776
|
```
|
|
707
777
|
|
|
708
778
|
**How it works:**
|
|
779
|
+
|
|
709
780
|
- The tab bar has fixed height and doesn't grow
|
|
710
781
|
- Tab panels use `display: contents`, allowing children to participate in parent flex layout
|
|
711
782
|
- Nested Layout components with `flexGrow: 1` (default) stretch to fill remaining space
|
|
@@ -722,6 +793,7 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
|
|
|
722
793
|
- `Shift+F10` - Open tab menu (when menu is present)
|
|
723
794
|
- `Delete` - Delete focused tab (when deletable)
|
|
724
795
|
- `F2` - Start editing tab title (when editable)
|
|
796
|
+
- `Alt+ArrowLeft` / `Alt+ArrowRight` - Reorder the focused tab (when `isReorderable`)
|
|
725
797
|
|
|
726
798
|
### Screen Reader Support
|
|
727
799
|
|
|
@@ -744,13 +816,17 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
|
|
|
744
816
|
1. **Do**: Use clear, descriptive tab titles
|
|
745
817
|
|
|
746
818
|
```jsx
|
|
747
|
-
<Tab key="billing" title="Billing & Payments"
|
|
819
|
+
<Tab key="billing" title="Billing & Payments">
|
|
820
|
+
...
|
|
821
|
+
</Tab>
|
|
748
822
|
```
|
|
749
823
|
|
|
750
824
|
2. **Don't**: Use vague or single-letter titles
|
|
751
825
|
|
|
752
826
|
```jsx
|
|
753
|
-
<Tab key="b" title="B"
|
|
827
|
+
<Tab key="b" title="B">
|
|
828
|
+
...
|
|
829
|
+
</Tab>
|
|
754
830
|
```
|
|
755
831
|
|
|
756
832
|
3. **Do**: Provide meaningful accessible labels
|