@cube-dev/ui-kit 0.0.0-canary-0b79a39 → 0.0.0-canary-c02e70f
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 +6 -0
- 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 +23 -21
- package/dist/components/GlobalStyles.js.map +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/Banner/Banner.js.map +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 +128 -66
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +451 -280
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +57 -93
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js.map +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 +49 -69
- package/dist/components/actions/Menu/Menu.js.map +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/actions-run.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/CopySnippet/CopySnippet.js.map +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +44 -60
- package/dist/components/content/Disclosure/Disclosure.js.map +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/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +39 -65
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.js +208 -263
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +70 -145
- package/dist/components/content/ItemBadge/ItemBadge.js.map +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 +39 -18
- package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.js +100 -48
- package/dist/components/content/Layout/LayoutContent.js.map +1 -1
- package/dist/components/content/Layout/LayoutContext.js +211 -95
- package/dist/components/content/Layout/LayoutContext.js.map +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/LayoutFooter.js.map +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 +240 -123
- package/dist/components/content/Layout/LayoutPane.js.map +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/LayoutPanelHeader.js.map +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/hooks/useTinyScrollbar.js.map +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 +28 -48
- package/dist/components/content/Result/Result.js.map +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 +9 -17
- package/dist/components/content/TextItem/TextItem.js.map +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +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/use-checkbox-tree.js +68 -105
- package/dist/components/content/Tree/use-checkbox-tree.js.map +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 +106 -138
- package/dist/components/content/use-auto-tooltip.js.map +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-order.js +30 -31
- package/dist/components/data/TableBase/use-column-order.js.map +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +38 -42
- package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +19 -57
- package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +55 -64
- package/dist/components/data/TableBase/use-table-tree-state.js.map +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/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.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/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.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 +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +32 -38
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.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/PasswordInput/PasswordInput.js.map +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/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.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/HueSlider.js.map +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/SliderThumb.js.map +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js.map +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/TagInput/TagInput.js +738 -1139
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.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/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/Form/Field.js +10 -15
- package/dist/components/form/Form/Field.js.map +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ModernFormRoot.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/backend.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/react.js.map +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.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/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.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/Board/Board.js +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/WidgetHost.js +1 -1
- package/dist/components/layout/Board/board-context.js +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/group-move.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/placement.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/use-board-layout.js +1 -1
- package/dist/components/layout/Board/use-board-registry.js +1 -1
- package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
- package/dist/components/layout/Board/use-board-selection.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 +129 -48
- package/dist/components/layout/Panel.js.map +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/Pagination/Pagination.js +227 -347
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- 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 +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js.map +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.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/CalendarGrid.js.map +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +497 -515
- package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.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/Dialog.js.map +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/ModernDialogForm.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.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 +266 -161
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +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 +18 -9
- package/dist/components/overlays/Notifications/use-persistent-notifications.js.map +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/Tooltip.js.map +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/overlays/Tooltip/split-trigger-props.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 +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useFormatter.js.map +1 -1
- package/dist/i18n/useI18n.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/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.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.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.js +1 -1
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/resolve.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/colors.js +1 -1
- package/dist/utils/dotize.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/disabledProps.js +1 -1
- package/dist/utils/react/escapePropagation.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/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.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/useKeySymbols.js.map +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/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/usePopoverSync.js.map +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.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/CreateComponent.md +3 -1
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
|
-
import {
|
|
3
|
+
import { sortRows } from "./use-table-sort.js";
|
|
4
4
|
import { c } from "react-compiler-runtime";
|
|
5
5
|
import { useControlledState } from "@react-stately/utils";
|
|
6
6
|
import { useCollator } from "@react-aria/i18n";
|
|
@@ -20,7 +20,7 @@ const EMPTY = [];
|
|
|
20
20
|
* replacing the whole sort, so the other columns keep their precedence.
|
|
21
21
|
*/
|
|
22
22
|
function useTableSorts(t0) {
|
|
23
|
-
const $ = c(
|
|
23
|
+
const $ = c(29);
|
|
24
24
|
const { columns, rows, mode, sorts: sortsProp, defaultSorts, onSortsChange } = t0;
|
|
25
25
|
let t1;
|
|
26
26
|
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
@@ -118,33 +118,7 @@ function useTableSorts(t0) {
|
|
|
118
118
|
const setColumnSort = useEvent(t4);
|
|
119
119
|
let t5;
|
|
120
120
|
if ($[13] !== collator || $[14] !== columns || $[15] !== resolvedMode || $[16] !== rows || $[17] !== sorts) {
|
|
121
|
-
|
|
122
|
-
if (resolvedMode !== "client" || !sorts.length) {
|
|
123
|
-
t5 = rows;
|
|
124
|
-
break bb0;
|
|
125
|
-
}
|
|
126
|
-
let t6;
|
|
127
|
-
if ($[19] !== columns) {
|
|
128
|
-
t6 = (sort) => ({
|
|
129
|
-
sort,
|
|
130
|
-
column: columns.find((entry_3) => entry_3.key === sort.columnKey)
|
|
131
|
-
});
|
|
132
|
-
$[19] = columns;
|
|
133
|
-
$[20] = t6;
|
|
134
|
-
} else t6 = $[20];
|
|
135
|
-
const active = sorts.map(t6).filter(_temp2);
|
|
136
|
-
if (!active.length) {
|
|
137
|
-
t5 = rows;
|
|
138
|
-
break bb0;
|
|
139
|
-
}
|
|
140
|
-
t5 = rows.map(_temp3).sort((a, b) => {
|
|
141
|
-
for (const { sort: sort_0, column: column_3 } of active) {
|
|
142
|
-
const result = compareByColumn(column_3, collator, a.row, a.index, b.row, b.index);
|
|
143
|
-
if (result !== 0) return result * (sort_0.direction === "asc" ? 1 : -1);
|
|
144
|
-
}
|
|
145
|
-
return a.index - b.index;
|
|
146
|
-
}).map(_temp4);
|
|
147
|
-
}
|
|
121
|
+
t5 = resolvedMode === "client" ? sortRows(rows, sorts, columns, collator) : rows;
|
|
148
122
|
$[13] = collator;
|
|
149
123
|
$[14] = columns;
|
|
150
124
|
$[15] = resolvedMode;
|
|
@@ -154,14 +128,14 @@ function useTableSorts(t0) {
|
|
|
154
128
|
} else t5 = $[18];
|
|
155
129
|
const sortedRows = t5;
|
|
156
130
|
let t6;
|
|
157
|
-
if ($[
|
|
158
|
-
t6 = (columnKey_1) => sorts.findIndex((
|
|
159
|
-
$[
|
|
160
|
-
$[
|
|
161
|
-
} else t6 = $[
|
|
131
|
+
if ($[19] !== sorts) {
|
|
132
|
+
t6 = (columnKey_1) => sorts.findIndex((entry_3) => entry_3.columnKey === columnKey_1) + 1;
|
|
133
|
+
$[19] = sorts;
|
|
134
|
+
$[20] = t6;
|
|
135
|
+
} else t6 = $[20];
|
|
162
136
|
const sortRank = useEvent(t6);
|
|
163
137
|
let t7;
|
|
164
|
-
if ($[
|
|
138
|
+
if ($[21] !== isSortable || $[22] !== resolvedMode || $[23] !== setColumnSort || $[24] !== sortRank || $[25] !== sortedRows || $[26] !== sorts || $[27] !== toggleSort) {
|
|
165
139
|
t7 = {
|
|
166
140
|
sorts,
|
|
167
141
|
sortedRows,
|
|
@@ -171,29 +145,17 @@ function useTableSorts(t0) {
|
|
|
171
145
|
sortRank,
|
|
172
146
|
mode: resolvedMode
|
|
173
147
|
};
|
|
174
|
-
$[
|
|
175
|
-
$[
|
|
176
|
-
$[
|
|
177
|
-
$[
|
|
178
|
-
$[
|
|
179
|
-
$[
|
|
180
|
-
$[
|
|
181
|
-
$[
|
|
182
|
-
} else t7 = $[
|
|
148
|
+
$[21] = isSortable;
|
|
149
|
+
$[22] = resolvedMode;
|
|
150
|
+
$[23] = setColumnSort;
|
|
151
|
+
$[24] = sortRank;
|
|
152
|
+
$[25] = sortedRows;
|
|
153
|
+
$[26] = sorts;
|
|
154
|
+
$[27] = toggleSort;
|
|
155
|
+
$[28] = t7;
|
|
156
|
+
} else t7 = $[28];
|
|
183
157
|
return t7;
|
|
184
158
|
}
|
|
185
|
-
function _temp4(entry_5) {
|
|
186
|
-
return entry_5.row;
|
|
187
|
-
}
|
|
188
|
-
function _temp3(row, index_1) {
|
|
189
|
-
return {
|
|
190
|
-
row,
|
|
191
|
-
index: index_1
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
function _temp2(entry_4) {
|
|
195
|
-
return entry_4.column != null;
|
|
196
|
-
}
|
|
197
159
|
function _temp(column) {
|
|
198
160
|
return column.isSortable;
|
|
199
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-table-sorts.js","names":["useCollator","useControlledState","useMemo","useEvent","compareByColumn","CubeTableColumn","CubeTableSort","CubeTableSortDirection","UseTableSortsOptions","columns","T","rows","mode","sorts","defaultSorts","onSortsChange","EMPTY","useTableSorts","t0","$","_c","sortsProp","t1","Symbol","for","numeric","sensitivity","collator","setSorts","value","hasSortableColumn","some","_temp","resolvedMode","t2","column_0","column","isSortable","t3","columnKey","column_1","find","entry","key","index","findIndex","entry_0","direction","next","disallowSortRemoval","splice","toggleSort","t4","columnKey_0","column_2","entry_1","index_0","entry_2","next_0","next_1","setColumnSort","t5","bb0","length","t6","sort","entry_3","active","map","filter","_temp2","_temp3","a","b","sort_0","column_3","result","row","_temp4","sortedRows","columnKey_1","entry_6","sortRank","t7","entry_5","index_1","entry_4"],"sources":["../../../../src/components/data/TableBase/use-table-sorts.ts"],"sourcesContent":["import { useCollator } from '@react-aria/i18n';\nimport { useControlledState } from '@react-stately/utils';\nimport { useMemo } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\n\nimport { compareByColumn } from './use-table-sort';\n\nimport type {\n CubeTableColumn,\n CubeTableSort,\n CubeTableSortDirection,\n} from './types';\n\nexport interface UseTableSortsOptions<T> {\n columns: CubeTableColumn<T>[];\n rows: readonly T[];\n mode?: 'client' | 'server' | 'off';\n sorts?: CubeTableSort[];\n defaultSorts?: CubeTableSort[];\n onSortsChange?: (sorts: CubeTableSort[]) => void;\n}\n\nconst EMPTY: CubeTableSort[] = [];\n\n/**\n * Multi-column sorting.\n *\n * `ItemTable` sorts by one column, which is right for a list. An analytical\n * grid is routinely ordered by one dimension and then another, and Cloud's\n * reports send an array of sorts to the query — so the order of the array is\n * the sort precedence, and it has to survive round-tripping.\n *\n * Clicking a header cycles that column `asc → desc → off` exactly as the single\n * version does; the difference is that it edits its entry in place rather than\n * replacing the whole sort, so the other columns keep their precedence.\n */\nexport function useTableSorts<T>({\n columns,\n rows,\n mode,\n sorts: sortsProp,\n defaultSorts,\n onSortsChange,\n}: UseTableSortsOptions<T>) {\n const collator = useCollator({ numeric: true, sensitivity: 'base' });\n\n const [sorts, setSorts] = useControlledState<CubeTableSort[]>(\n sortsProp as CubeTableSort[],\n defaultSorts ?? EMPTY,\n onSortsChange as (value: CubeTableSort[]) => void,\n );\n\n const hasSortableColumn = columns.some((column) => column.isSortable);\n const resolvedMode = mode ?? (hasSortableColumn ? 'client' : 'off');\n\n const isSortable = useEvent(\n (column: CubeTableColumn<T>) =>\n resolvedMode !== 'off' && column.isSortable === true,\n );\n\n const toggleSort = useEvent((columnKey: string) => {\n const column = columns.find((entry) => entry.key === columnKey);\n\n if (!column || !isSortable(column)) return;\n\n const index = sorts.findIndex((entry) => entry.columnKey === columnKey);\n\n if (index === -1) {\n // Appended, not prepended: a newly sorted column is the least\n // significant, so the ordering the user already established still leads.\n setSorts([...sorts, { columnKey, direction: 'asc' }]);\n\n return;\n }\n\n const next = [...sorts];\n\n if (next[index].direction === 'asc') {\n next[index] = { columnKey, direction: 'desc' };\n setSorts(next);\n\n return;\n }\n\n if (column.disallowSortRemoval) {\n next[index] = { columnKey, direction: 'asc' };\n setSorts(next);\n\n return;\n }\n\n next.splice(index, 1);\n setSorts(next);\n });\n\n /**\n * Set one column's direction outright instead of advancing the cycle.\n *\n * The column menu's `sort-desc` has to reach `desc` in one step. Reaching it\n * by calling `toggleSort` twice cannot work here: under `disallowSortRemoval`\n * the cycle never leaves `asc`/`desc`, and a column that was unsorted would\n * be appended and then re-read, so every intermediate state is observable.\n *\n * Precedence is preserved — an already-sorted column keeps its slot, and a\n * newly sorted one is appended as the least significant, the same rule\n * `toggleSort` follows.\n */\n const setColumnSort = useEvent(\n (columnKey: string, direction: CubeTableSortDirection | null) => {\n const column = columns.find((entry) => entry.key === columnKey);\n\n if (!column || !isSortable(column)) return;\n\n const index = sorts.findIndex((entry) => entry.columnKey === columnKey);\n\n if (direction == null) {\n // `disallowSortRemoval` means the column is never *left* unsorted, so an\n // explicit clear is refused too rather than quietly re-sorting.\n if (index === -1 || column.disallowSortRemoval) return;\n\n const next = [...sorts];\n\n next.splice(index, 1);\n setSorts(next);\n\n return;\n }\n\n if (index === -1) {\n setSorts([...sorts, { columnKey, direction }]);\n\n return;\n }\n\n if (sorts[index].direction === direction) return;\n\n const next = [...sorts];\n\n next[index] = { columnKey, direction };\n setSorts(next);\n },\n );\n\n const sortedRows = useMemo(() => {\n if (resolvedMode !== 'client' || !sorts.length) return rows;\n\n const active = sorts\n .map((sort) => ({\n sort,\n column: columns.find((entry) => entry.key === sort.columnKey),\n }))\n .filter(\n (entry): entry is { sort: CubeTableSort; column: CubeTableColumn<T> } =>\n entry.column != null,\n );\n\n if (!active.length) return rows;\n\n // Not sorted in place: `rows` belongs to the caller and `sort` mutates.\n // The original index is carried so the result is stable when every sort\n // ties.\n return rows\n .map((row, index) => ({ row, index }))\n .sort((a, b) => {\n for (const { sort, column } of active) {\n const result = compareByColumn(\n column,\n collator,\n a.row,\n a.index,\n b.row,\n b.index,\n );\n\n if (result !== 0) {\n return result * (sort.direction === 'asc' ? 1 : -1);\n }\n }\n\n return a.index - b.index;\n })\n .map((entry) => entry.row);\n }, [resolvedMode, sorts, rows, columns, collator]);\n\n /** Where a column sits in the precedence, 1-based. `0` when unsorted. */\n const sortRank = useEvent(\n (columnKey: string) =>\n sorts.findIndex((entry) => entry.columnKey === columnKey) + 1,\n );\n\n // Returned for the same reason as the single-column hook: the renderer needs\n // this exact answer to decide whether a header is clickable.\n return {\n sorts,\n sortedRows,\n toggleSort,\n setColumnSort,\n isSortable,\n sortRank,\n mode: resolvedMode,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-table-sorts.js","names":["useCollator","useControlledState","useEvent","sortRows","CubeTableColumn","CubeTableSort","CubeTableSortDirection","UseTableSortsOptions","columns","T","rows","mode","sorts","defaultSorts","onSortsChange","EMPTY","useTableSorts","t0","$","_c","sortsProp","t1","Symbol","for","numeric","sensitivity","collator","setSorts","value","hasSortableColumn","some","_temp","resolvedMode","t2","column_0","column","isSortable","t3","columnKey","column_1","find","entry","key","index","findIndex","entry_0","direction","next","disallowSortRemoval","splice","toggleSort","t4","columnKey_0","column_2","entry_1","index_0","entry_2","next_0","next_1","setColumnSort","t5","sortedRows","t6","columnKey_1","entry_3","sortRank","t7"],"sources":["../../../../src/components/data/TableBase/use-table-sorts.ts"],"sourcesContent":["import { useCollator } from '@react-aria/i18n';\nimport { useControlledState } from '@react-stately/utils';\n\nimport { useEvent } from '../../../_internal/hooks';\n\nimport { sortRows } from './use-table-sort';\n\nimport type {\n CubeTableColumn,\n CubeTableSort,\n CubeTableSortDirection,\n} from './types';\n\nexport interface UseTableSortsOptions<T> {\n columns: CubeTableColumn<T>[];\n rows: readonly T[];\n mode?: 'client' | 'server' | 'off';\n sorts?: CubeTableSort[];\n defaultSorts?: CubeTableSort[];\n onSortsChange?: (sorts: CubeTableSort[]) => void;\n}\n\nconst EMPTY: CubeTableSort[] = [];\n\n/**\n * Multi-column sorting.\n *\n * `ItemTable` sorts by one column, which is right for a list. An analytical\n * grid is routinely ordered by one dimension and then another, and Cloud's\n * reports send an array of sorts to the query — so the order of the array is\n * the sort precedence, and it has to survive round-tripping.\n *\n * Clicking a header cycles that column `asc → desc → off` exactly as the single\n * version does; the difference is that it edits its entry in place rather than\n * replacing the whole sort, so the other columns keep their precedence.\n */\nexport function useTableSorts<T>({\n columns,\n rows,\n mode,\n sorts: sortsProp,\n defaultSorts,\n onSortsChange,\n}: UseTableSortsOptions<T>) {\n const collator = useCollator({ numeric: true, sensitivity: 'base' });\n\n const [sorts, setSorts] = useControlledState<CubeTableSort[]>(\n sortsProp as CubeTableSort[],\n defaultSorts ?? EMPTY,\n onSortsChange as (value: CubeTableSort[]) => void,\n );\n\n const hasSortableColumn = columns.some((column) => column.isSortable);\n const resolvedMode = mode ?? (hasSortableColumn ? 'client' : 'off');\n\n const isSortable = useEvent(\n (column: CubeTableColumn<T>) =>\n resolvedMode !== 'off' && column.isSortable === true,\n );\n\n const toggleSort = useEvent((columnKey: string) => {\n const column = columns.find((entry) => entry.key === columnKey);\n\n if (!column || !isSortable(column)) return;\n\n const index = sorts.findIndex((entry) => entry.columnKey === columnKey);\n\n if (index === -1) {\n // Appended, not prepended: a newly sorted column is the least\n // significant, so the ordering the user already established still leads.\n setSorts([...sorts, { columnKey, direction: 'asc' }]);\n\n return;\n }\n\n const next = [...sorts];\n\n if (next[index].direction === 'asc') {\n next[index] = { columnKey, direction: 'desc' };\n setSorts(next);\n\n return;\n }\n\n if (column.disallowSortRemoval) {\n next[index] = { columnKey, direction: 'asc' };\n setSorts(next);\n\n return;\n }\n\n next.splice(index, 1);\n setSorts(next);\n });\n\n /**\n * Set one column's direction outright instead of advancing the cycle.\n *\n * The column menu's `sort-desc` has to reach `desc` in one step. Reaching it\n * by calling `toggleSort` twice cannot work here: under `disallowSortRemoval`\n * the cycle never leaves `asc`/`desc`, and a column that was unsorted would\n * be appended and then re-read, so every intermediate state is observable.\n *\n * Precedence is preserved — an already-sorted column keeps its slot, and a\n * newly sorted one is appended as the least significant, the same rule\n * `toggleSort` follows.\n */\n const setColumnSort = useEvent(\n (columnKey: string, direction: CubeTableSortDirection | null) => {\n const column = columns.find((entry) => entry.key === columnKey);\n\n if (!column || !isSortable(column)) return;\n\n const index = sorts.findIndex((entry) => entry.columnKey === columnKey);\n\n if (direction == null) {\n // `disallowSortRemoval` means the column is never *left* unsorted, so an\n // explicit clear is refused too rather than quietly re-sorting.\n if (index === -1 || column.disallowSortRemoval) return;\n\n const next = [...sorts];\n\n next.splice(index, 1);\n setSorts(next);\n\n return;\n }\n\n if (index === -1) {\n setSorts([...sorts, { columnKey, direction }]);\n\n return;\n }\n\n if (sorts[index].direction === direction) return;\n\n const next = [...sorts];\n\n next[index] = { columnKey, direction };\n setSorts(next);\n },\n );\n\n const sortedRows =\n resolvedMode === 'client' ? sortRows(rows, sorts, columns, collator) : rows;\n\n /** Where a column sits in the precedence, 1-based. `0` when unsorted. */\n const sortRank = useEvent(\n (columnKey: string) =>\n sorts.findIndex((entry) => entry.columnKey === columnKey) + 1,\n );\n\n // Returned for the same reason as the single-column hook: the renderer needs\n // this exact answer to decide whether a header is clickable.\n return {\n sorts,\n sortedRows,\n toggleSort,\n setColumnSort,\n isSortable,\n sortRank,\n mode: resolvedMode,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { useCallback, useRef, useState } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/components/data/TableBase/use-table-storage.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
4
4
|
import { c } from "react-compiler-runtime";
|
|
@@ -7,8 +7,25 @@ import { Item, useTreeState } from "react-stately";
|
|
|
7
7
|
import { useControlledState } from "@react-stately/utils";
|
|
8
8
|
|
|
9
9
|
//#region src/components/data/TableBase/use-table-tree-state.tsx
|
|
10
|
+
/**
|
|
11
|
+
* Current React Stately's legacy TreeCollection omits `getChildren`, while
|
|
12
|
+
* `useTreeItem` needs it for level/set-size/expanded metadata.
|
|
13
|
+
*/
|
|
14
|
+
function withGetChildren(state) {
|
|
15
|
+
const collection = state.collection;
|
|
16
|
+
if (typeof collection.getChildren === "function") return state;
|
|
17
|
+
const patched = Object.create(collection);
|
|
18
|
+
patched.getChildren = (key) => {
|
|
19
|
+
const node = collection.getItem(key);
|
|
20
|
+
return node ? Array.from(node.childNodes) : [];
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
...state,
|
|
24
|
+
collection: patched
|
|
25
|
+
};
|
|
26
|
+
}
|
|
10
27
|
function useTableTreeState(options) {
|
|
11
|
-
const $ = c(
|
|
28
|
+
const $ = c(39);
|
|
12
29
|
const { roots, allNodesByKey, expandedKeys: controlledExpandedKeys, defaultExpandedKeys, forcedExpandedKeys, disabledKeys, getTextValue, onExpand, ariaLabel } = options;
|
|
13
30
|
const { t } = useI18n();
|
|
14
31
|
let t0;
|
|
@@ -31,15 +48,14 @@ function useTableTreeState(options) {
|
|
|
31
48
|
$[5] = t2;
|
|
32
49
|
} else t2 = $[5];
|
|
33
50
|
const [baseExpandedKeys, setBaseExpandedKeys] = useControlledState(controlledSet, t2);
|
|
34
|
-
let
|
|
51
|
+
let effectiveExpandedKeys;
|
|
35
52
|
if ($[6] !== baseExpandedKeys || $[7] !== forcedExpandedKeys) {
|
|
36
|
-
|
|
37
|
-
forcedExpandedKeys?.forEach((key) =>
|
|
53
|
+
effectiveExpandedKeys = new Set(baseExpandedKeys);
|
|
54
|
+
forcedExpandedKeys?.forEach((key) => effectiveExpandedKeys.add(key));
|
|
38
55
|
$[6] = baseExpandedKeys;
|
|
39
56
|
$[7] = forcedExpandedKeys;
|
|
40
|
-
$[8] =
|
|
41
|
-
} else
|
|
42
|
-
const effectiveExpandedKeys = keys;
|
|
57
|
+
$[8] = effectiveExpandedKeys;
|
|
58
|
+
} else effectiveExpandedKeys = $[8];
|
|
43
59
|
let t3;
|
|
44
60
|
if ($[9] !== allNodesByKey || $[10] !== baseExpandedKeys || $[11] !== effectiveExpandedKeys || $[12] !== forcedExpandedKeys || $[13] !== onExpand || $[14] !== setBaseExpandedKeys) {
|
|
45
61
|
t3 = (next) => {
|
|
@@ -123,56 +139,28 @@ function useTableTreeState(options) {
|
|
|
123
139
|
} else t7 = $[27];
|
|
124
140
|
const ariaProps = t7;
|
|
125
141
|
const baseState = useTreeState(ariaProps);
|
|
142
|
+
let state;
|
|
126
143
|
let t8;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
patched.getChildren = (key_2) => {
|
|
137
|
-
const node_1 = collection.getItem(key_2);
|
|
138
|
-
return node_1 ? Array.from(node_1.childNodes) : [];
|
|
139
|
-
};
|
|
140
|
-
$[28] = collection;
|
|
141
|
-
$[29] = patched;
|
|
142
|
-
} else patched = $[29];
|
|
143
|
-
let t9;
|
|
144
|
-
if ($[30] !== baseState || $[31] !== patched) {
|
|
145
|
-
t9 = {
|
|
146
|
-
...baseState,
|
|
147
|
-
collection: patched
|
|
148
|
-
};
|
|
149
|
-
$[30] = baseState;
|
|
150
|
-
$[31] = patched;
|
|
151
|
-
$[32] = t9;
|
|
152
|
-
} else t9 = $[32];
|
|
153
|
-
t8 = t9;
|
|
144
|
+
if ($[28] !== baseState) {
|
|
145
|
+
state = withGetChildren(baseState);
|
|
146
|
+
t8 = Array.from(state.collection.getKeys(), (key_2) => state.collection.getItem(key_2)).filter(_temp2);
|
|
147
|
+
$[28] = baseState;
|
|
148
|
+
$[29] = state;
|
|
149
|
+
$[30] = t8;
|
|
150
|
+
} else {
|
|
151
|
+
state = $[29];
|
|
152
|
+
t8 = $[30];
|
|
154
153
|
}
|
|
155
|
-
const
|
|
156
|
-
let output;
|
|
157
|
-
if ($[33] !== state.collection) {
|
|
158
|
-
output = [];
|
|
159
|
-
for (const key_3 of state.collection.getKeys()) {
|
|
160
|
-
const node_2 = state.collection.getItem(key_3);
|
|
161
|
-
if (node_2?.type === "item") output.push(node_2);
|
|
162
|
-
}
|
|
163
|
-
$[33] = state.collection;
|
|
164
|
-
$[34] = output;
|
|
165
|
-
} else output = $[34];
|
|
166
|
-
const visibleNodes = output;
|
|
154
|
+
const visibleNodes = t8;
|
|
167
155
|
let t9;
|
|
168
|
-
if ($[
|
|
169
|
-
t9 = visibleNodes.map(
|
|
170
|
-
$[
|
|
171
|
-
$[
|
|
172
|
-
} else t9 = $[
|
|
156
|
+
if ($[31] !== visibleNodes) {
|
|
157
|
+
t9 = visibleNodes.map(_temp3).filter(_temp4);
|
|
158
|
+
$[31] = visibleNodes;
|
|
159
|
+
$[32] = t9;
|
|
160
|
+
} else t9 = $[32];
|
|
173
161
|
const visibleEntries = t9;
|
|
174
162
|
let t10;
|
|
175
|
-
if ($[
|
|
163
|
+
if ($[33] !== ariaProps || $[34] !== effectiveExpandedKeys || $[35] !== state || $[36] !== visibleEntries || $[37] !== visibleNodes) {
|
|
176
164
|
t10 = {
|
|
177
165
|
state,
|
|
178
166
|
ariaProps,
|
|
@@ -180,20 +168,23 @@ function useTableTreeState(options) {
|
|
|
180
168
|
visibleEntries,
|
|
181
169
|
expandedKeys: effectiveExpandedKeys
|
|
182
170
|
};
|
|
183
|
-
$[
|
|
184
|
-
$[
|
|
185
|
-
$[
|
|
186
|
-
$[
|
|
187
|
-
$[
|
|
188
|
-
$[
|
|
189
|
-
} else t10 = $[
|
|
171
|
+
$[33] = ariaProps;
|
|
172
|
+
$[34] = effectiveExpandedKeys;
|
|
173
|
+
$[35] = state;
|
|
174
|
+
$[36] = visibleEntries;
|
|
175
|
+
$[37] = visibleNodes;
|
|
176
|
+
$[38] = t10;
|
|
177
|
+
} else t10 = $[38];
|
|
190
178
|
return t10;
|
|
191
179
|
}
|
|
192
|
-
function
|
|
193
|
-
return
|
|
180
|
+
function _temp4(node_3) {
|
|
181
|
+
return node_3 != null;
|
|
182
|
+
}
|
|
183
|
+
function _temp3(node_2) {
|
|
184
|
+
return node_2.value;
|
|
194
185
|
}
|
|
195
|
-
function _temp2(
|
|
196
|
-
return
|
|
186
|
+
function _temp2(node_1) {
|
|
187
|
+
return node_1?.type === "item";
|
|
197
188
|
}
|
|
198
189
|
function _temp() {}
|
|
199
190
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-table-tree-state.js","names":["useControlledState","useMemo","Item","useTreeState","useEvent","useI18n","Key","Node","ReactElement","TreeState","TableTreeNode","CubeTableRowExpandInfo","UseTableTreeStateOptions","roots","T","allNodesByKey","Map","expandedKeys","defaultExpandedKeys","forcedExpandedKeys","ReadonlySet","disabledKeys","getTextValue","node","onExpand","keys","info","ariaLabel","TableTreeStateResult","state","ariaProps","Record","visibleNodes","visibleEntries","Set","useTableTreeState","options","$","_c","controlledExpandedKeys","t","t0","undefined","controlledSet","t1","t2","defaultSet","baseExpandedKeys","setBaseExpandedKeys","forEach","key","add","effectiveExpandedKeys","t3","next","toggledKey","expanded","key_0","has","key_1","nextBase","delete","get","row","rowKey","level","parentKey","handleExpandedChange","t4","node_0","children","renderItem","t5","t6","t7","items","selectionMode","const","onExpandedChange","disabledBehavior","onAction","_temp","baseState","t8","bb0","collection","getChildren","patched","Object","create","key_2","node_1","getItem","Array","from","childNodes","t9","output","key_3","getKeys","node_2","type","push","map","_temp2","filter","_temp3","t10","node_4","node_3","value"],"sources":["../../../../src/components/data/TableBase/use-table-tree-state.tsx"],"sourcesContent":["import { useControlledState } from '@react-stately/utils';\nimport { useMemo } from 'react';\nimport { Item, useTreeState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { ReactElement } from 'react';\nimport type { TreeState } from 'react-stately';\nimport type { TableTreeNode } from './table-tree';\nimport type { CubeTableRowExpandInfo } from './types';\n\nexport interface UseTableTreeStateOptions<T> {\n roots: TableTreeNode<T>[];\n allNodesByKey: Map<Key, TableTreeNode<T>>;\n expandedKeys?: Key[];\n defaultExpandedKeys?: Key[];\n forcedExpandedKeys?: ReadonlySet<Key>;\n disabledKeys?: Key[];\n getTextValue: (node: TableTreeNode<T>) => string;\n onExpand?: (keys: Key[], info: CubeTableRowExpandInfo<T>) => void;\n ariaLabel?: string;\n}\n\nexport interface TableTreeStateResult<T> {\n state: TreeState<TableTreeNode<T>>;\n /** Props consumed by `useTree` on the actual `<table>`. */\n ariaProps: Record<string, any>;\n visibleNodes: Node<TableTreeNode<T>>[];\n visibleEntries: TableTreeNode<T>[];\n expandedKeys: Set<Key>;\n}\n\nexport function useTableTreeState<T>(\n options: UseTableTreeStateOptions<T>,\n): TableTreeStateResult<T> {\n const {\n roots,\n allNodesByKey,\n expandedKeys: controlledExpandedKeys,\n defaultExpandedKeys,\n forcedExpandedKeys,\n disabledKeys,\n getTextValue,\n onExpand,\n ariaLabel,\n } = options;\n const { t } = useI18n();\n\n const controlledSet = useMemo(\n () =>\n controlledExpandedKeys === undefined\n ? undefined\n : new Set<Key>(controlledExpandedKeys),\n [controlledExpandedKeys],\n );\n const defaultSet = useMemo(\n () => new Set<Key>(defaultExpandedKeys ?? []),\n [defaultExpandedKeys],\n );\n const [baseExpandedKeys, setBaseExpandedKeys] = useControlledState<Set<Key>>(\n controlledSet as Set<Key>,\n defaultSet,\n );\n\n const effectiveExpandedKeys = useMemo(() => {\n const keys = new Set(baseExpandedKeys);\n forcedExpandedKeys?.forEach((key) => keys.add(key));\n return keys;\n }, [baseExpandedKeys, forcedExpandedKeys]);\n\n const handleExpandedChange = useEvent((next: Set<Key>) => {\n let toggledKey: Key | null = null;\n let expanded = false;\n\n for (const key of next) {\n if (!effectiveExpandedKeys.has(key)) {\n toggledKey = key;\n expanded = true;\n break;\n }\n }\n\n if (toggledKey == null) {\n for (const key of effectiveExpandedKeys) {\n if (!next.has(key)) {\n toggledKey = key;\n expanded = false;\n break;\n }\n }\n }\n\n if (toggledKey == null) return;\n\n // Search-owned expansions are derived and cannot be collapsed until the\n // search clears. Crucially, they never leak into the consumer's state.\n if (!expanded && forcedExpandedKeys?.has(toggledKey)) return;\n\n const nextBase = new Set(baseExpandedKeys);\n if (expanded) nextBase.add(toggledKey);\n else nextBase.delete(toggledKey);\n setBaseExpandedKeys(nextBase);\n\n const node = allNodesByKey.get(toggledKey);\n if (!node) return;\n\n onExpand?.([...nextBase], {\n row: node.row,\n rowKey: node.key,\n level: node.level,\n parentKey: node.parentKey,\n expanded,\n });\n });\n\n const renderItem = useEvent(\n (node: TableTreeNode<T>): ReactElement => (\n <Item\n key={node.key}\n textValue={getTextValue(node)}\n childItems={node.children}\n >\n {getTextValue(node)}\n </Item>\n ),\n );\n\n const ariaProps = useMemo(\n () => ({\n items: roots,\n children: renderItem as any,\n selectionMode: 'none' as const,\n expandedKeys: effectiveExpandedKeys,\n onExpandedChange: handleExpandedChange,\n disabledKeys,\n disabledBehavior: 'all' as const,\n // Prevent `useTreeItem` from treating a row press as an implicit toggle.\n // Tables keep row activation and expansion as separate interactions.\n onAction: () => {},\n 'aria-label': ariaLabel ?? t('itemTable.table', 'Table'),\n }),\n [\n roots,\n renderItem,\n effectiveExpandedKeys,\n handleExpandedChange,\n disabledKeys,\n ariaLabel,\n t,\n ],\n );\n\n const baseState = useTreeState<TableTreeNode<T>>(ariaProps);\n\n // Current React Stately's legacy TreeCollection omits `getChildren`, while\n // `useTreeItem` needs it for level/set-size/expanded metadata.\n const state = useMemo(() => {\n const collection = baseState.collection;\n if (typeof (collection as any).getChildren === 'function') return baseState;\n\n const patched = Object.create(collection);\n patched.getChildren = (key: Key) => {\n const node = collection.getItem(key);\n return node ? Array.from(node.childNodes) : [];\n };\n\n return { ...baseState, collection: patched } as typeof baseState;\n }, [baseState]);\n\n const visibleNodes = useMemo(() => {\n const output: Node<TableTreeNode<T>>[] = [];\n for (const key of state.collection.getKeys()) {\n const node = state.collection.getItem(key);\n if (node?.type === 'item') output.push(node);\n }\n return output;\n }, [state.collection]);\n\n const visibleEntries = useMemo(\n () =>\n visibleNodes\n .map((node) => node.value)\n .filter((node): node is TableTreeNode<T> => node != null),\n [visibleNodes],\n );\n\n return {\n state,\n ariaProps,\n visibleNodes,\n visibleEntries,\n expandedKeys: effectiveExpandedKeys,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-table-tree-state.js","names":["useControlledState","Item","useTreeState","useEvent","useI18n","Key","Node","ReactElement","TreeState","TableTreeNode","CubeTableRowExpandInfo","UseTableTreeStateOptions","roots","T","allNodesByKey","Map","expandedKeys","defaultExpandedKeys","forcedExpandedKeys","ReadonlySet","disabledKeys","getTextValue","node","onExpand","keys","info","ariaLabel","TableTreeStateResult","state","ariaProps","Record","visibleNodes","visibleEntries","Set","withGetChildren","collection","getChildren","patched","Object","create","key","getItem","Array","from","childNodes","useTableTreeState","options","$","_c","controlledExpandedKeys","t","t0","undefined","controlledSet","t1","t2","defaultSet","baseExpandedKeys","setBaseExpandedKeys","effectiveExpandedKeys","forEach","add","t3","next","toggledKey","expanded","key_0","has","key_1","nextBase","delete","get","row","rowKey","level","parentKey","handleExpandedChange","t4","node_0","children","renderItem","t5","t6","t7","items","selectionMode","const","onExpandedChange","disabledBehavior","onAction","_temp","baseState","t8","getKeys","key_2","filter","_temp2","t9","map","_temp3","_temp4","t10","node_3","node_2","value","node_1","type"],"sources":["../../../../src/components/data/TableBase/use-table-tree-state.tsx"],"sourcesContent":["import { useControlledState } from '@react-stately/utils';\nimport { Item, useTreeState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { ReactElement } from 'react';\nimport type { TreeState } from 'react-stately';\nimport type { TableTreeNode } from './table-tree';\nimport type { CubeTableRowExpandInfo } from './types';\n\nexport interface UseTableTreeStateOptions<T> {\n roots: TableTreeNode<T>[];\n allNodesByKey: Map<Key, TableTreeNode<T>>;\n expandedKeys?: Key[];\n defaultExpandedKeys?: Key[];\n forcedExpandedKeys?: ReadonlySet<Key>;\n disabledKeys?: Key[];\n getTextValue: (node: TableTreeNode<T>) => string;\n onExpand?: (keys: Key[], info: CubeTableRowExpandInfo<T>) => void;\n ariaLabel?: string;\n}\n\nexport interface TableTreeStateResult<T> {\n state: TreeState<TableTreeNode<T>>;\n /** Props consumed by `useTree` on the actual `<table>`. */\n ariaProps: Record<string, any>;\n visibleNodes: Node<TableTreeNode<T>>[];\n visibleEntries: TableTreeNode<T>[];\n expandedKeys: Set<Key>;\n}\n\n/**\n * Current React Stately's legacy TreeCollection omits `getChildren`, while\n * `useTreeItem` needs it for level/set-size/expanded metadata.\n */\nfunction withGetChildren<T>(state: TreeState<T>): TreeState<T> {\n const collection = state.collection;\n if (typeof (collection as any).getChildren === 'function') return state;\n\n const patched = Object.create(collection);\n patched.getChildren = (key: Key) => {\n const node = collection.getItem(key);\n return node ? Array.from(node.childNodes) : [];\n };\n\n return { ...state, collection: patched };\n}\n\nexport function useTableTreeState<T>(\n options: UseTableTreeStateOptions<T>,\n): TableTreeStateResult<T> {\n const {\n roots,\n allNodesByKey,\n expandedKeys: controlledExpandedKeys,\n defaultExpandedKeys,\n forcedExpandedKeys,\n disabledKeys,\n getTextValue,\n onExpand,\n ariaLabel,\n } = options;\n const { t } = useI18n();\n\n const controlledSet =\n controlledExpandedKeys === undefined\n ? undefined\n : new Set<Key>(controlledExpandedKeys);\n const defaultSet = new Set<Key>(defaultExpandedKeys ?? []);\n const [baseExpandedKeys, setBaseExpandedKeys] = useControlledState<Set<Key>>(\n controlledSet as Set<Key>,\n defaultSet,\n );\n\n const effectiveExpandedKeys = new Set(baseExpandedKeys);\n forcedExpandedKeys?.forEach((key) => effectiveExpandedKeys.add(key));\n\n const handleExpandedChange = useEvent((next: Set<Key>) => {\n let toggledKey: Key | null = null;\n let expanded = false;\n\n for (const key of next) {\n if (!effectiveExpandedKeys.has(key)) {\n toggledKey = key;\n expanded = true;\n break;\n }\n }\n\n if (toggledKey == null) {\n for (const key of effectiveExpandedKeys) {\n if (!next.has(key)) {\n toggledKey = key;\n expanded = false;\n break;\n }\n }\n }\n\n if (toggledKey == null) return;\n\n // Search-owned expansions are derived and cannot be collapsed until the\n // search clears. Crucially, they never leak into the consumer's state.\n if (!expanded && forcedExpandedKeys?.has(toggledKey)) return;\n\n const nextBase = new Set(baseExpandedKeys);\n if (expanded) nextBase.add(toggledKey);\n else nextBase.delete(toggledKey);\n setBaseExpandedKeys(nextBase);\n\n const node = allNodesByKey.get(toggledKey);\n if (!node) return;\n\n onExpand?.([...nextBase], {\n row: node.row,\n rowKey: node.key,\n level: node.level,\n parentKey: node.parentKey,\n expanded,\n });\n });\n\n const renderItem = useEvent(\n (node: TableTreeNode<T>): ReactElement => (\n <Item\n key={node.key}\n textValue={getTextValue(node)}\n childItems={node.children}\n >\n {getTextValue(node)}\n </Item>\n ),\n );\n\n const ariaProps = {\n items: roots,\n children: renderItem as any,\n selectionMode: 'none' as const,\n expandedKeys: effectiveExpandedKeys,\n onExpandedChange: handleExpandedChange,\n disabledKeys,\n disabledBehavior: 'all' as const,\n // Prevent `useTreeItem` from treating a row press as an implicit toggle.\n // Tables keep row activation and expansion as separate interactions.\n onAction: () => {},\n 'aria-label': ariaLabel ?? t('itemTable.table', 'Table'),\n };\n\n const baseState = useTreeState<TableTreeNode<T>>(ariaProps);\n const state = withGetChildren(baseState);\n\n const visibleNodes = Array.from(state.collection.getKeys(), (key) =>\n state.collection.getItem(key),\n ).filter((node): node is Node<TableTreeNode<T>> => node?.type === 'item');\n\n const visibleEntries = visibleNodes\n .map((node) => node.value)\n .filter((node): node is TableTreeNode<T> => node != null);\n\n return {\n state,\n ariaProps,\n visibleNodes,\n visibleEntries,\n expandedKeys: effectiveExpandedKeys,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useFocus as useFocus$1 } from "../../../utils/react/interactions.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { castNullableArrayValue } from "../../../utils/react/nullableValue.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { ItemActionProvider } from "../../actions/ItemActionContext.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { _Text } from "../../content/Text.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { parseColor, toHex } from "../color/color.js";
|
|
4
4
|
import { c } from "react-compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
4
4
|
import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|