@cube-dev/ui-kit 0.0.0-canary-d0e6744 → 0.0.0-canary-4ba0ca0
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/_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/Tree/Tree.js +3 -9
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +18 -107
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/index.d.ts +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/types.d.ts +1 -68
- 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 +5 -3
- 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 +5 -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 +134 -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 +3 -2
- 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 +1 -86
- package/docs/components/fields/FilterPicker.md +27 -0
- package/docs/components/fields/ListBox.md +33 -0
- package/docs/components/navigation/Tabs.md +128 -50
- package/package.json +1 -1
|
@@ -58,31 +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
|
-
pressing a non-leaf row toggles its expansion instead of selecting
|
|
63
|
-
it. The chevron and keyboard navigation continue to work
|
|
64
|
-
independently. Useful for file-tree UX where only leaves are
|
|
65
|
-
meaningful selection targets.
|
|
66
|
-
- **`menu`** `ReactNode | ((data, state) => ReactNode | null)` — Default
|
|
67
|
-
`Menu.Item` children rendered on every row that doesn't override via
|
|
68
|
-
`data.menu`. Returning `null` from the callback hides the menu for
|
|
69
|
-
that specific row.
|
|
70
|
-
- **`contextMenu`** `boolean | 'context-only'` (default: `false`) — How
|
|
71
|
-
the row menu is exposed.
|
|
72
|
-
- `false` — no menu at all.
|
|
73
|
-
- `true` — render an overflow `⋮` trigger inside `actions` AND open
|
|
74
|
-
the same menu on right-click / Shift+F10.
|
|
75
|
-
- `'context-only'` — right-click / Shift+F10 only; no `⋮` trigger.
|
|
76
|
-
|
|
77
|
-
Per-node `data.contextMenu` wins when provided.
|
|
78
|
-
- **`onAction`** `(action: string, key: Key) => void` — Called when a
|
|
79
|
-
menu action is triggered on any row. Receives the action key (with
|
|
80
|
-
React's `.$` prefix stripped) and the row key. Per-node
|
|
81
|
-
`data.onAction` is called first.
|
|
82
|
-
- **`menuTriggerProps`** `Partial<CubeMenuTriggerProps>` — Forwarded to
|
|
83
|
-
every per-row `MenuTrigger`.
|
|
84
|
-
- **`menuProps`** `Partial<CubeMenuProps<object>>` — Forwarded to every
|
|
85
|
-
per-row `Menu`.
|
|
86
61
|
- **`rowStyles`** `Styles` — Override styles for `[data-element="Row"]`.
|
|
87
62
|
|
|
88
63
|
#### `CubeTreeNodeData`
|
|
@@ -99,13 +74,6 @@ consumers can be migrated with minimal churn.
|
|
|
99
74
|
row.
|
|
100
75
|
- **`isCheckable`** `boolean` — Per-node override; `false` hides the
|
|
101
76
|
checkbox for this row even when the tree is `isCheckable`.
|
|
102
|
-
- **`menu`** `ReactNode | null` — Per-node menu override. Wins over
|
|
103
|
-
the tree-level `menu`. Pass `null` to hide the menu for this row
|
|
104
|
-
when the tree provides a default.
|
|
105
|
-
- **`contextMenu`** `boolean | 'context-only'` — Per-node override of
|
|
106
|
-
the tree-level `contextMenu`.
|
|
107
|
-
- **`onAction`** `(action: string) => void` — Per-node action callback.
|
|
108
|
-
Called before the tree-level `onAction`.
|
|
109
77
|
|
|
110
78
|
### Base Properties
|
|
111
79
|
|
|
@@ -134,14 +102,6 @@ spacing, hover/selected colors, or cell layout without re-targeting via
|
|
|
134
102
|
- `Checkbox` — The checkbox slot (visible only when `isCheckable`).
|
|
135
103
|
- `Title` — The title label.
|
|
136
104
|
|
|
137
|
-
### Style Properties
|
|
138
|
-
|
|
139
|
-
These properties allow direct style application without using the `styles` prop:
|
|
140
|
-
|
|
141
|
-
- **Position:** `gridArea`, `order`, `gridColumn`, `gridRow`, `placeSelf`, `alignSelf`, `justifySelf`, `zIndex`, `margin`, `inset`, `position`, `scrollMargin`
|
|
142
|
-
- **Dimension:** `width`, `height`, `flexBasis`, `flexGrow`, `flexShrink`, `flex`
|
|
143
|
-
- **Block:** `border`, `radius`, `shadow`, `outline`
|
|
144
|
-
|
|
145
105
|
### Modifiers
|
|
146
106
|
|
|
147
107
|
The following row-level modifiers are emitted automatically. They are
|
|
@@ -157,7 +117,6 @@ useful when overriding `rowStyles`:
|
|
|
157
117
|
| `loading` | `boolean` | The row's children are being fetched via `loadData`. |
|
|
158
118
|
| `leaf` | `boolean` | Row has no children. |
|
|
159
119
|
| `has-checkbox` | `boolean` | Row renders a checkbox. |
|
|
160
|
-
| `has-menu` | `boolean` | Row resolves a non-empty menu. |
|
|
161
120
|
|
|
162
121
|
## Variants
|
|
163
122
|
|
|
@@ -274,51 +233,6 @@ const data = [
|
|
|
274
233
|
<Tree treeData={data} height={300} />
|
|
275
234
|
```
|
|
276
235
|
|
|
277
|
-
### Per-row Menu (Overflow + Right-Click)
|
|
278
|
-
|
|
279
|
-
Pass `menu` (a `ReactNode` of `Menu.Item`s, or a callback) plus
|
|
280
|
-
`contextMenu={true}` to render a built-in `⋮` overflow trigger AND
|
|
281
|
-
open the same menu on right-click / `Shift+F10`. Use
|
|
282
|
-
`onAction(action, key)` at the tree level to handle actions, or
|
|
283
|
-
`data.onAction` for per-node behavior.
|
|
284
|
-
|
|
285
|
-
```jsx
|
|
286
|
-
<Tree
|
|
287
|
-
treeData={data}
|
|
288
|
-
contextMenu
|
|
289
|
-
menu={
|
|
290
|
-
<>
|
|
291
|
-
<Menu.Item key="rename">Rename</Menu.Item>
|
|
292
|
-
<Menu.Item key="duplicate">Duplicate</Menu.Item>
|
|
293
|
-
<Menu.Item key="delete">Delete</Menu.Item>
|
|
294
|
-
</>
|
|
295
|
-
}
|
|
296
|
-
onAction={(action, key) => console.log(action, 'on', key)}
|
|
297
|
-
/>
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
### Right-Click Only
|
|
301
|
-
|
|
302
|
-
`contextMenu="context-only"` keeps the right-click / `Shift+F10`
|
|
303
|
-
behavior but hides the `⋮` trigger — handy for clean file-tree UIs.
|
|
304
|
-
|
|
305
|
-
### Per-Node Menu Overrides
|
|
306
|
-
|
|
307
|
-
Set `data.menu` to override the tree-level menu for a specific row,
|
|
308
|
-
or `null` to hide it entirely. `data.contextMenu` and
|
|
309
|
-
`data.onAction` follow the same per-row override pattern.
|
|
310
|
-
|
|
311
|
-
### Expand on Folder Click
|
|
312
|
-
|
|
313
|
-
`expandOnFolderClick` makes folder rows toggle their expansion when
|
|
314
|
-
pressed instead of triggering selection. Leaves still select normally,
|
|
315
|
-
which mirrors typical file-tree UX. Folder rows remain focusable for
|
|
316
|
-
keyboard navigation, and the chevron toggle keeps working.
|
|
317
|
-
|
|
318
|
-
```jsx
|
|
319
|
-
<Tree treeData={data} expandOnFolderClick />
|
|
320
|
-
```
|
|
321
|
-
|
|
322
236
|
## Accessibility
|
|
323
237
|
|
|
324
238
|
Tree implements the
|
|
@@ -373,6 +287,7 @@ via `useTree` from React Aria.
|
|
|
373
287
|
|
|
374
288
|
- Built-in virtualization for very large trees (10k+ rows).
|
|
375
289
|
- Drag-and-drop reordering, mirroring AntD's `draggable` API.
|
|
290
|
+
- An `onRightClick`/context menu hook.
|
|
376
291
|
- Reveal-on-mount: scroll the focused row into view when expanded
|
|
377
292
|
programmatically.
|
|
378
293
|
- Optional inline title editing.
|
|
@@ -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
|
|
|
@@ -38,6 +38,7 @@ An accessible tabbed interface for organizing content into multiple panels, show
|
|
|
38
38
|
- **`renderPanel`** `(key: string) => ReactNode` — Render function for lazy panel content
|
|
39
39
|
- **`panelCacheKeys`** `Record<string, any>` — Cache keys for `renderPanel` content
|
|
40
40
|
- **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop tab reordering
|
|
41
|
+
- **`isPickerReorderable`** `boolean` (default: `false`) — Enable drag-and-drop reordering in the tab picker dropdown
|
|
41
42
|
- **`keyOrder`** `string[]` — Controlled tab display order
|
|
42
43
|
- **`onReorder`** `(newOrder: string[]) => void` — Callback when tabs are reordered
|
|
43
44
|
- **`showTabPicker`** `boolean | 'auto'` (default: `false`) — Show dropdown tab picker
|
|
@@ -169,9 +170,7 @@ Optional wrapper for tabs when using explicit panel placement.
|
|
|
169
170
|
Explicit panel definition for advanced layout control.
|
|
170
171
|
|
|
171
172
|
```jsx
|
|
172
|
-
<Tabs.Panel key="tab1">
|
|
173
|
-
Panel 1 content
|
|
174
|
-
</Tabs.Panel>
|
|
173
|
+
<Tabs.Panel key="tab1">Panel 1 content</Tabs.Panel>
|
|
175
174
|
```
|
|
176
175
|
|
|
177
176
|
### Tabs.Action
|
|
@@ -187,7 +186,9 @@ Action button designed for the Tabs prefix/suffix slots. Styled with sharp edges
|
|
|
187
186
|
</>
|
|
188
187
|
}
|
|
189
188
|
>
|
|
190
|
-
<Tab key="tab1" title="Tab 1">
|
|
189
|
+
<Tab key="tab1" title="Tab 1">
|
|
190
|
+
Content
|
|
191
|
+
</Tab>
|
|
191
192
|
</Tabs>
|
|
192
193
|
```
|
|
193
194
|
|
|
@@ -243,16 +244,22 @@ Control the active tab externally with `activeKey` and `onChange`.
|
|
|
243
244
|
const [activeKey, setActiveKey] = useState('tab1');
|
|
244
245
|
|
|
245
246
|
<Tabs activeKey={activeKey} onChange={setActiveKey}>
|
|
246
|
-
<Tab key="tab1" title="Tab 1">
|
|
247
|
-
|
|
248
|
-
</
|
|
247
|
+
<Tab key="tab1" title="Tab 1">
|
|
248
|
+
Content 1
|
|
249
|
+
</Tab>
|
|
250
|
+
<Tab key="tab2" title="Tab 2">
|
|
251
|
+
Content 2
|
|
252
|
+
</Tab>
|
|
253
|
+
</Tabs>;
|
|
249
254
|
```
|
|
250
255
|
|
|
251
256
|
### Disabled Tab
|
|
252
257
|
|
|
253
258
|
```jsx
|
|
254
259
|
<Tabs defaultActiveKey="tab1">
|
|
255
|
-
<Tab key="tab1" title="Active Tab">
|
|
260
|
+
<Tab key="tab1" title="Active Tab">
|
|
261
|
+
Content
|
|
262
|
+
</Tab>
|
|
256
263
|
<Tab key="tab2" title="Disabled Tab" isDisabled>
|
|
257
264
|
Inaccessible content
|
|
258
265
|
</Tab>
|
|
@@ -269,8 +276,12 @@ Add buttons or other elements before or after the tab list.
|
|
|
269
276
|
prefix={<Button size="small">Menu</Button>}
|
|
270
277
|
suffix={<Button size="small">Add New</Button>}
|
|
271
278
|
>
|
|
272
|
-
<Tab key="items" title="Items">
|
|
273
|
-
|
|
279
|
+
<Tab key="items" title="Items">
|
|
280
|
+
Item list
|
|
281
|
+
</Tab>
|
|
282
|
+
<Tab key="archived" title="Archived">
|
|
283
|
+
Archived items
|
|
284
|
+
</Tab>
|
|
274
285
|
</Tabs>
|
|
275
286
|
```
|
|
276
287
|
|
|
@@ -286,21 +297,17 @@ const [tabs, setTabs] = useState([
|
|
|
286
297
|
|
|
287
298
|
<Tabs
|
|
288
299
|
defaultActiveKey="tab1"
|
|
289
|
-
onDelete={(key) => setTabs(tabs.filter(t => t.key !== key))}
|
|
300
|
+
onDelete={(key) => setTabs(tabs.filter((t) => t.key !== key))}
|
|
290
301
|
suffix={
|
|
291
|
-
<Tabs.Action
|
|
292
|
-
icon={<PlusIcon />}
|
|
293
|
-
aria-label="Add tab"
|
|
294
|
-
onPress={handleAdd}
|
|
295
|
-
/>
|
|
302
|
+
<Tabs.Action icon={<PlusIcon />} aria-label="Add tab" onPress={handleAdd} />
|
|
296
303
|
}
|
|
297
304
|
>
|
|
298
|
-
{tabs.map(tab => (
|
|
305
|
+
{tabs.map((tab) => (
|
|
299
306
|
<Tab key={tab.key} title={tab.title}>
|
|
300
307
|
Content for {tab.title}
|
|
301
308
|
</Tab>
|
|
302
309
|
))}
|
|
303
|
-
</Tabs
|
|
310
|
+
</Tabs>;
|
|
304
311
|
```
|
|
305
312
|
|
|
306
313
|
### Tab Menus
|
|
@@ -321,7 +328,9 @@ Add dropdown menus to tabs using the `menu` prop. This replaces the need for man
|
|
|
321
328
|
// 'delete' is handled automatically via onDelete
|
|
322
329
|
}}
|
|
323
330
|
>
|
|
324
|
-
<Tab key="tab1" title="Tab 1">
|
|
331
|
+
<Tab key="tab1" title="Tab 1">
|
|
332
|
+
Content
|
|
333
|
+
</Tab>
|
|
325
334
|
</Tabs>
|
|
326
335
|
```
|
|
327
336
|
|
|
@@ -355,7 +364,9 @@ Combine editable tabs with a menu for rename, duplicate, and delete actions.
|
|
|
355
364
|
// 'delete' triggers onDelete automatically
|
|
356
365
|
}}
|
|
357
366
|
>
|
|
358
|
-
<Tab key="tab1" title="Tab 1">
|
|
367
|
+
<Tab key="tab1" title="Tab 1">
|
|
368
|
+
Content
|
|
369
|
+
</Tab>
|
|
359
370
|
</Tabs>
|
|
360
371
|
```
|
|
361
372
|
|
|
@@ -373,7 +384,9 @@ Enable right-click context menus with the `contextMenu` prop. Uses the same menu
|
|
|
373
384
|
</>
|
|
374
385
|
}
|
|
375
386
|
>
|
|
376
|
-
<Tab key="tab1" title="Tab 1">
|
|
387
|
+
<Tab key="tab1" title="Tab 1">
|
|
388
|
+
Content
|
|
389
|
+
</Tab>
|
|
377
390
|
</Tabs>
|
|
378
391
|
```
|
|
379
392
|
|
|
@@ -388,7 +401,9 @@ Enable right-click context menus with the `contextMenu` prop. Uses the same menu
|
|
|
388
401
|
</>
|
|
389
402
|
}
|
|
390
403
|
>
|
|
391
|
-
<Tab key="tab1" title="Tab 1">
|
|
404
|
+
<Tab key="tab1" title="Tab 1">
|
|
405
|
+
Content
|
|
406
|
+
</Tab>
|
|
392
407
|
</Tabs>
|
|
393
408
|
```
|
|
394
409
|
|
|
@@ -405,9 +420,11 @@ Override or disable menus on individual tabs.
|
|
|
405
420
|
</>
|
|
406
421
|
}
|
|
407
422
|
>
|
|
408
|
-
<Tab key="tab1" title="Uses Default Menu">
|
|
409
|
-
|
|
410
|
-
|
|
423
|
+
<Tab key="tab1" title="Uses Default Menu">
|
|
424
|
+
Content
|
|
425
|
+
</Tab>
|
|
426
|
+
<Tab
|
|
427
|
+
key="tab2"
|
|
411
428
|
title="Custom Menu"
|
|
412
429
|
menu={
|
|
413
430
|
<>
|
|
@@ -417,7 +434,9 @@ Override or disable menus on individual tabs.
|
|
|
417
434
|
>
|
|
418
435
|
Content
|
|
419
436
|
</Tab>
|
|
420
|
-
<Tab key="tab3" title="No Menu" menu={null}>
|
|
437
|
+
<Tab key="tab3" title="No Menu" menu={null}>
|
|
438
|
+
Content
|
|
439
|
+
</Tab>
|
|
421
440
|
</Tabs>
|
|
422
441
|
```
|
|
423
442
|
|
|
@@ -437,7 +456,9 @@ Use `Menu.Section` for organized menus.
|
|
|
437
456
|
</>
|
|
438
457
|
}
|
|
439
458
|
>
|
|
440
|
-
<Tab key="tab1" title="Tab 1">
|
|
459
|
+
<Tab key="tab1" title="Tab 1">
|
|
460
|
+
Content
|
|
461
|
+
</Tab>
|
|
441
462
|
</Tabs>
|
|
442
463
|
```
|
|
443
464
|
|
|
@@ -453,10 +474,16 @@ const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
|
|
|
453
474
|
keyOrder={keyOrder}
|
|
454
475
|
onReorder={(newOrder) => setKeyOrder(newOrder)}
|
|
455
476
|
>
|
|
456
|
-
<Tab key="tab1" title="Tab 1">
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
477
|
+
<Tab key="tab1" title="Tab 1">
|
|
478
|
+
Content 1
|
|
479
|
+
</Tab>
|
|
480
|
+
<Tab key="tab2" title="Tab 2">
|
|
481
|
+
Content 2
|
|
482
|
+
</Tab>
|
|
483
|
+
<Tab key="tab3" title="Tab 3">
|
|
484
|
+
Content 3
|
|
485
|
+
</Tab>
|
|
486
|
+
</Tabs>;
|
|
460
487
|
```
|
|
461
488
|
|
|
462
489
|
**Key features:**
|
|
@@ -494,6 +521,33 @@ const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
|
|
|
494
521
|
</Tabs>
|
|
495
522
|
```
|
|
496
523
|
|
|
524
|
+
### Reorderable Tab Picker
|
|
525
|
+
|
|
526
|
+
Use `isPickerReorderable` to enable drag-and-drop reordering in the tab picker dropdown. This is controlled independently from `isReorderable` (horizontal tabs). 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.
|
|
527
|
+
|
|
528
|
+
```jsx
|
|
529
|
+
const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
|
|
530
|
+
|
|
531
|
+
<Tabs
|
|
532
|
+
isReorderable
|
|
533
|
+
isPickerReorderable
|
|
534
|
+
showTabPicker
|
|
535
|
+
type="file"
|
|
536
|
+
keyOrder={keyOrder}
|
|
537
|
+
onReorder={(newOrder) => setKeyOrder(newOrder)}
|
|
538
|
+
>
|
|
539
|
+
<Tab key="tab1" title="Tab 1">
|
|
540
|
+
Content 1
|
|
541
|
+
</Tab>
|
|
542
|
+
<Tab key="tab2" title="Tab 2">
|
|
543
|
+
Content 2
|
|
544
|
+
</Tab>
|
|
545
|
+
<Tab key="tab3" title="Tab 3">
|
|
546
|
+
Content 3
|
|
547
|
+
</Tab>
|
|
548
|
+
</Tabs>;
|
|
549
|
+
```
|
|
550
|
+
|
|
497
551
|
### Scroll Arrows
|
|
498
552
|
|
|
499
553
|
Add left/right navigation arrows to scroll overflowed tabs. Use `showScrollArrows` with `true`, `false`, or `'auto'` (shows only when tabs overflow).
|
|
@@ -504,7 +558,7 @@ Add left/right navigation arrows to scroll overflowed tabs. Use `showScrollArrow
|
|
|
504
558
|
showScrollArrows="auto"
|
|
505
559
|
styles={{ width: '500px' }}
|
|
506
560
|
>
|
|
507
|
-
{tabs.map(tab => (
|
|
561
|
+
{tabs.map((tab) => (
|
|
508
562
|
<Tab key={tab.id} title={tab.title}>
|
|
509
563
|
{tab.content}
|
|
510
564
|
</Tab>
|
|
@@ -521,7 +575,7 @@ Combine with `showTabPicker` for both scroll arrows and a dropdown picker:
|
|
|
521
575
|
showTabPicker="auto"
|
|
522
576
|
type="file"
|
|
523
577
|
>
|
|
524
|
-
{tabs.map(tab => (
|
|
578
|
+
{tabs.map((tab) => (
|
|
525
579
|
<Tab key={tab.id} title={tab.title}>
|
|
526
580
|
{tab.content}
|
|
527
581
|
</Tab>
|
|
@@ -543,7 +597,7 @@ By default, scroll arrows and the tab picker appear in the suffix (after the tab
|
|
|
543
597
|
type="file"
|
|
544
598
|
styles={{ width: '500px' }}
|
|
545
599
|
>
|
|
546
|
-
{tabs.map(tab => (
|
|
600
|
+
{tabs.map((tab) => (
|
|
547
601
|
<Tab key={tab.id} title={tab.title}>
|
|
548
602
|
{tab.content}
|
|
549
603
|
</Tab>
|
|
@@ -552,6 +606,7 @@ By default, scroll arrows and the tab picker appear in the suffix (after the tab
|
|
|
552
606
|
```
|
|
553
607
|
|
|
554
608
|
When both are in the same slot:
|
|
609
|
+
|
|
555
610
|
- In **prefix**: TabPicker appears first (left), then scroll arrows (right)
|
|
556
611
|
- In **suffix**: Scroll arrows appear first (left), then TabPicker (right)
|
|
557
612
|
|
|
@@ -565,10 +620,14 @@ const [view, setView] = useState('overview');
|
|
|
565
620
|
<Tabs activeKey={view} onChange={setView}>
|
|
566
621
|
<Tab key="overview" title="Overview" />
|
|
567
622
|
<Tab key="settings" title="Settings" />
|
|
568
|
-
</Tabs
|
|
569
|
-
|
|
570
|
-
{
|
|
571
|
-
|
|
623
|
+
</Tabs>;
|
|
624
|
+
|
|
625
|
+
{
|
|
626
|
+
view === 'overview' && <OverviewPage />;
|
|
627
|
+
}
|
|
628
|
+
{
|
|
629
|
+
view === 'settings' && <SettingsPage />;
|
|
630
|
+
}
|
|
572
631
|
```
|
|
573
632
|
|
|
574
633
|
### Explicit Panels
|
|
@@ -592,8 +651,12 @@ Render all panels immediately but keep inactive ones hidden.
|
|
|
592
651
|
|
|
593
652
|
```jsx
|
|
594
653
|
<Tabs defaultActiveKey="tab1" prerender>
|
|
595
|
-
<Tab key="tab1" title="Tab 1">
|
|
596
|
-
|
|
654
|
+
<Tab key="tab1" title="Tab 1">
|
|
655
|
+
Content 1
|
|
656
|
+
</Tab>
|
|
657
|
+
<Tab key="tab2" title="Tab 2">
|
|
658
|
+
Content 2
|
|
659
|
+
</Tab>
|
|
597
660
|
</Tabs>
|
|
598
661
|
```
|
|
599
662
|
|
|
@@ -622,8 +685,12 @@ Override per-tab/panel:
|
|
|
622
685
|
|
|
623
686
|
```jsx
|
|
624
687
|
<Tabs prerender>
|
|
625
|
-
<Tab key="tab1" title="Prerendered">
|
|
626
|
-
|
|
688
|
+
<Tab key="tab1" title="Prerendered">
|
|
689
|
+
Always in DOM
|
|
690
|
+
</Tab>
|
|
691
|
+
<Tab key="tab2" title="Lazy" prerender={false}>
|
|
692
|
+
Lazy loaded
|
|
693
|
+
</Tab>
|
|
627
694
|
</Tabs>
|
|
628
695
|
```
|
|
629
696
|
|
|
@@ -638,10 +705,14 @@ content is computed, while inactive tabs use cached content.
|
|
|
638
705
|
defaultActiveKey="tab1"
|
|
639
706
|
renderPanel={(key) => {
|
|
640
707
|
switch (key) {
|
|
641
|
-
case 'tab1':
|
|
642
|
-
|
|
643
|
-
case '
|
|
644
|
-
|
|
708
|
+
case 'tab1':
|
|
709
|
+
return <ExpensiveChart data={chartData} />;
|
|
710
|
+
case 'tab2':
|
|
711
|
+
return <LargeTable rows={tableRows} />;
|
|
712
|
+
case 'tab3':
|
|
713
|
+
return <ComplexForm fields={formFields} />;
|
|
714
|
+
default:
|
|
715
|
+
return null;
|
|
645
716
|
}
|
|
646
717
|
}}
|
|
647
718
|
>
|
|
@@ -662,8 +733,8 @@ content is computed, while inactive tabs use cached content.
|
|
|
662
733
|
<Tabs
|
|
663
734
|
renderPanel={(key) => <Panel data={data[key]} />}
|
|
664
735
|
panelCacheKeys={{
|
|
665
|
-
tab1: data.tab1.version,
|
|
666
|
-
tab2: data.tab2.version,
|
|
736
|
+
tab1: data.tab1.version, // Cached, re-renders when version changes
|
|
737
|
+
tab2: data.tab2.version, // Cached, re-renders when version changes
|
|
667
738
|
// tab3 has no cache key - re-renders on every Tabs render
|
|
668
739
|
}}
|
|
669
740
|
>
|
|
@@ -672,6 +743,7 @@ content is computed, while inactive tabs use cached content.
|
|
|
672
743
|
```
|
|
673
744
|
|
|
674
745
|
This approach is ideal for:
|
|
746
|
+
|
|
675
747
|
- Tabs with complex visualizations or charts
|
|
676
748
|
- Large data tables that are expensive to render
|
|
677
749
|
- Forms with many fields
|
|
@@ -706,6 +778,7 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
|
|
|
706
778
|
```
|
|
707
779
|
|
|
708
780
|
**How it works:**
|
|
781
|
+
|
|
709
782
|
- The tab bar has fixed height and doesn't grow
|
|
710
783
|
- Tab panels use `display: contents`, allowing children to participate in parent flex layout
|
|
711
784
|
- Nested Layout components with `flexGrow: 1` (default) stretch to fill remaining space
|
|
@@ -722,6 +795,7 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
|
|
|
722
795
|
- `Shift+F10` - Open tab menu (when menu is present)
|
|
723
796
|
- `Delete` - Delete focused tab (when deletable)
|
|
724
797
|
- `F2` - Start editing tab title (when editable)
|
|
798
|
+
- `Alt+ArrowLeft` / `Alt+ArrowRight` - Reorder the focused tab (when `isReorderable`)
|
|
725
799
|
|
|
726
800
|
### Screen Reader Support
|
|
727
801
|
|
|
@@ -744,13 +818,17 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
|
|
|
744
818
|
1. **Do**: Use clear, descriptive tab titles
|
|
745
819
|
|
|
746
820
|
```jsx
|
|
747
|
-
<Tab key="billing" title="Billing & Payments"
|
|
821
|
+
<Tab key="billing" title="Billing & Payments">
|
|
822
|
+
...
|
|
823
|
+
</Tab>
|
|
748
824
|
```
|
|
749
825
|
|
|
750
826
|
2. **Don't**: Use vague or single-letter titles
|
|
751
827
|
|
|
752
828
|
```jsx
|
|
753
|
-
<Tab key="b" title="B"
|
|
829
|
+
<Tab key="b" title="B">
|
|
830
|
+
...
|
|
831
|
+
</Tab>
|
|
754
832
|
```
|
|
755
833
|
|
|
756
834
|
3. **Do**: Provide meaningful accessible labels
|