@cube-dev/ui-kit 0.199.1 → 0.200.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +47 -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 +2 -2
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.d.ts +6 -4
- package/dist/components/GridProvider.js +14 -9
- package/dist/components/GridProvider.js.map +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +17 -17
- package/dist/components/Root.js.map +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 +7 -9
- package/dist/components/actions/Button/Button.js.map +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 +7 -12
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +35 -37
- 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 +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.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 +116 -127
- package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +4 -3
- package/dist/components/actions/Menu/SubMenuTrigger.js.map +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 +5 -4
- package/dist/components/actions/Menu/styled.js.map +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 +32 -23
- package/dist/components/actions/use-context-menu.js.map +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/Alert.js.map +1 -1
- package/dist/components/content/Alert/use-alert.js +24 -27
- package/dist/components/content/Alert/use-alert.js.map +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +6 -2
- package/dist/components/content/Badge/Badge.js.map +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 +3 -3
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +83 -87
- package/dist/components/content/CopySnippet/CopySnippet.js.map +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/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +6 -13
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.js +18 -18
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.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 +10 -14
- package/dist/components/content/Layout/Layout.js.map +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/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.js +18 -16
- package/dist/components/content/Layout/LayoutContent.js.map +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 +2 -2
- package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPane.js +35 -31
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +31 -27
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +23 -25
- 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/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js.map +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/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/content/Tag/Tag.js +6 -2
- package/dist/components/content/Tag/Tag.js.map +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +2 -5
- 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 +11 -21
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +7 -7
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/styled.js +31 -12
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/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/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 +2 -2
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
- package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.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/TableRow.js.map +1 -1
- package/dist/components/data/TableBase/TableView.js +4 -7
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js.map +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.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 +36 -29
- package/dist/components/data/TableBase/styled.js.map +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-menu.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-window.js +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 +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +3 -3
- package/dist/components/fields/Checkbox/Checkbox.js.map +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.d.ts +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +4 -4
- package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +12 -15
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +174 -183
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +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 +5 -9
- package/dist/components/fields/DatePicker/DateInputBase.js.map +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 +49 -39
- package/dist/components/fields/DatePicker/DatePickerSegment.js.map +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 +5 -3
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +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 +2 -2
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +6 -8
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +2 -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 +1 -1
- package/dist/components/fields/ListBox/ListBox.d.ts +1 -1
- package/dist/components/fields/ListBox/ListBox.js +49 -24
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +2 -2
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +2 -2
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +91 -96
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -2
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.d.ts +1 -1
- package/dist/components/fields/Select/Select.js +4 -4
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +3 -3
- 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 +4 -6
- package/dist/components/fields/Slider/SliderBase.js.map +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +5 -5
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +7 -6
- package/dist/components/fields/Slider/elements.js.map +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +3 -3
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TagInput/TagInput.d.ts +1 -1
- package/dist/components/fields/TagInput/TagInput.js +1 -1
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +3 -3
- package/dist/components/fields/TagInput/TagList.js.map +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.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 +3 -6
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/displayed-validation.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 +7 -7
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +4 -4
- package/dist/components/fields/color/channels.js.map +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/option-origin-press.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/field-description.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/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/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 +11 -8
- package/dist/components/form/Label.js.map +1 -1
- package/dist/components/form/field-chrome.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/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 +13 -38
- package/dist/components/layout/Panel.js.map +1 -1
- package/dist/components/layout/Prefix.js +16 -22
- package/dist/components/layout/Prefix.js.map +1 -1
- package/dist/components/layout/ResizablePanel.js +30 -25
- package/dist/components/layout/ResizablePanel.js.map +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +16 -22
- package/dist/components/layout/Suffix.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +2 -2
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +2 -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 +2 -2
- package/dist/components/navigation/Tabs/TabPanel.js.map +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +62 -68
- package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +6 -9
- 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/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +20 -17
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +6 -6
- package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +3 -3
- package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +6 -6
- package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +4 -4
- package/dist/components/other/Calendar/styled.js.map +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +3 -4
- package/dist/components/other/CubeLogo/CubeLogo.js.map +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/DialogTrigger.js.map +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/default-button-text.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/Dialog/use-dialog-open-sync.js +1 -1
- package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +3 -3
- package/dist/components/overlays/Modal/Modal.js.map +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/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +5 -6
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +2 -2
- package/dist/components/overlays/Modal/Underlay.js.map +1 -1
- package/dist/components/overlays/Modal/modal-containment.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 +28 -13
- 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 +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 +8 -6
- 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 +58 -57
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/Cube.js.map +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 +153 -188
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +2 -2
- package/dist/eslint-plugin/defaults.generated.js.map +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/namespace.js +1 -1
- package/dist/i18n/useFormatter.js +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 +25 -22
- package/dist/icons/DirectionIcon.js.map +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 +21 -38
- package/dist/icons/Icon.js.map +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 +7 -2
- package/dist/icons/PlayCircleIcon.js.map +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/navigation-url.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +1 -1
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +12 -2
- package/dist/tokens/base.js.map +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +4 -4
- package/dist/tokens/colors.js.map +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/palette.js.map +1 -1
- package/dist/tokens/resolve.js +1 -1
- package/dist/tokens/resolve.js.map +1 -1
- package/dist/tokens/shadows.d.ts +0 -1
- package/dist/tokens/shadows.js +2 -3
- package/dist/tokens/shadows.js.map +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/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/overlayKeyPropagation.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/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/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 +3 -3
- package/docs/BaseProperties.md +2 -0
- package/docs/ComplexLayout.md +1 -1
- package/docs/Usage.md +47 -2
- package/docs/Utilities.md +5 -2
- package/docs/components/GridProvider.md +3 -3
- package/docs/components/content/HotKeys.md +2 -2
- package/docs/components/content/InlineInput.md +2 -2
- package/docs/components/content/Item.md +5 -5
- package/docs/components/content/Layout.md +8 -8
- package/docs/components/content/Text.md +1 -1
- package/docs/components/fields/ComboBox.md +1 -1
- package/docs/components/fields/CommandTextArea.md +1 -1
- package/docs/components/fields/FilterListBox.md +1 -1
- package/docs/components/fields/FilterPicker.md +1 -1
- package/docs/components/fields/ListBox.md +2 -2
- package/docs/components/fields/Picker.md +1 -1
- package/docs/components/fields/SearchComboBox.md +1 -1
- package/docs/components/fields/Select.md +1 -1
- package/docs/components/fields/TagInput.md +1 -1
- package/docs/tasty/react-api.md +1 -1
- package/package.json +3 -3
- package/tasty.config.ts +206 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNode.js","names":["Children","memo","useMemo","useRef","useState","useHover","useTreeItem","useEvent","useI18n","DirectionIcon","LoadingIcon","MoreIcon","mergeProps","mergeRefs","allowOverlayKeysToPropagate","CubeItemActionProps","ItemAction","CubeMenuProps","Menu","MenuTrigger","useContextMenu","Checkbox","TreeNodeCheckboxWrapper","TreeNodeRow","TreeNodeToggle","TreeNodeTogglePlaceholder","TreeRowItem","Key","Node","Styles","CSSProperties","KeyboardEvent","MouseEvent","ReactNode","Ref","TreeState","CubeTreeNodeData","TreeContextMenu","TreeItemProps","TreeNodeState","isMenuEmpty","menu","undefined","toArray","length","TreeNodeProps","node","data","state","isCheckable","isExpanded","isIndeterminate","isChecked","isLoading","onToggleChecked","key","size","itemProps","rowStyles","virtualStyle","virtualRef","element","HTMLElement","virtualIndex","contextMenu","onAction","action","menuTriggerProps","Partial","menuProps","TreeNodeInner","props","t","treeMenu","treeContextMenu","treeOnAction","rowRef","HTMLDivElement","isLeaf","hasChildNodes","rowProps","gridCellProps","expandButtonProps","isPressed","hasChildItems","isDisabled","disabledKeys","has","isSelected","selectionManager","hoverProps","isHovered","isFocused","focusedKey","isRowCheckable","nodeState","effectiveMenuChildren","hasMenu","effectiveContextMenu","menuExposed","contextMenuOnly","isMenuOpen","setIsMenuOpen","handleMenuAction","actionStr","String","normalizedAction","startsWith","slice","rowContextMenu","placement","children","handleCheckboxChange","handleWrapperClick","e","stopPropagation","isCheckboxDisabled","target","closest","handleKeyDown","preventDefault","shiftKey","open","composedKeyDown","onKeyDown","sharedMods","checked","indeterminate","expanded","loading","leaf","rowMods","disabled","itemMods","focused","hovered","pressed","rowStyle","level","ariaChecked","finalRowProps","toggleNode","checkboxNode","title","resolvedItemProps","prefix","userPrefix","actions","userActions","restUserProps","composedPrefix","menuAction","composedActions","refs","list","push","targetRef","rendered","TreeNode","Menu","mergeProps","Checkbox","MenuTrigger"],"sources":["../../../../src/components/content/Tree/TreeNode.tsx"],"sourcesContent":["import { Children, memo, useMemo, useRef, useState } from 'react';\nimport { useHover, useTreeItem } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { MoreIcon } from '../../../icons/MoreIcon';\nimport { mergeProps, mergeRefs } from '../../../utils/react';\nimport { allowOverlayKeysToPropagate } from '../../../utils/react/overlayKeyPropagation';\nimport { CubeItemActionProps, ItemAction } from '../../actions/ItemAction';\nimport { CubeMenuProps, Menu, MenuTrigger } from '../../actions/Menu';\nimport { useContextMenu } from '../../actions/use-context-menu';\nimport { Checkbox } from '../../fields/Checkbox/Checkbox';\n\nimport {\n TreeNodeCheckboxWrapper,\n TreeNodeRow,\n TreeNodeToggle,\n TreeNodeTogglePlaceholder,\n TreeRowItem,\n} from './styled';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type {\n CSSProperties,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n} from 'react';\nimport type { TreeState } from 'react-stately';\nimport type {\n CubeTreeNodeData,\n TreeContextMenu,\n TreeItemProps,\n TreeNodeState,\n} from './types';\n\n/** Check whether a `menu` ReactNode actually contains anything. */\nfunction isMenuEmpty(menu: ReactNode): boolean {\n if (menu === null || menu === undefined || menu === false) return true;\n return Children.toArray(menu).length === 0;\n}\n\nexport interface TreeNodeProps {\n node: Node<CubeTreeNodeData>;\n /** The original `CubeTreeNodeData` for this row, looked up by key. */\n data: CubeTreeNodeData;\n state: TreeState<CubeTreeNodeData>;\n\n /** Whether the tree as a whole renders checkboxes. */\n isCheckable: boolean;\n /** Whether this row is currently expanded. */\n isExpanded: boolean;\n /** Whether the row is in an indeterminate (half-checked) state. */\n isIndeterminate: boolean;\n /** Whether the row is fully checked. */\n isChecked: boolean;\n /** Whether `loadData` is currently fetching this row's children. */\n isLoading: boolean;\n\n /** Toggle this row's checkbox (cascades). */\n onToggleChecked: (key: string) => void;\n\n /** Row size passed to the underlying Item. */\n size?: string;\n\n /** Per-node Item customization (static object or callback). */\n itemProps?:\n | TreeItemProps\n | ((data: CubeTreeNodeData, state: TreeNodeState) => TreeItemProps);\n\n /** Styles applied to the visible row (`TreeRowItem`). */\n rowStyles?: Styles;\n\n /** Inline style for virtualizer absolute positioning. */\n virtualStyle?: CSSProperties;\n /** Ref callback from `@tanstack/react-virtual` to measure row height. */\n virtualRef?: (element: HTMLElement | null) => void;\n /** Virtual index for `data-index` attribute. */\n virtualIndex?: number;\n\n /** Tree-wide menu default (resolved against `data.menu`). */\n menu?:\n | ReactNode\n | ((data: CubeTreeNodeData, state: TreeNodeState) => ReactNode | null);\n /** Tree-wide `contextMenu` default. */\n contextMenu?: TreeContextMenu;\n /** Tree-wide `onAction` callback. */\n onAction?: (action: string, key: Key) => void;\n /** Forwarded to every per-row `MenuTrigger`. */\n menuTriggerProps?: Partial<CubeItemActionProps>;\n /** Forwarded to every per-row `Menu`. */\n menuProps?: Partial<CubeMenuProps<object>>;\n}\n\nfunction TreeNodeInner(props: TreeNodeProps) {\n const { t } = useI18n();\n const {\n node,\n data,\n state,\n isCheckable,\n isExpanded,\n isIndeterminate,\n isChecked,\n isLoading,\n onToggleChecked,\n size,\n itemProps,\n rowStyles,\n virtualStyle,\n virtualRef,\n virtualIndex,\n menu: treeMenu,\n contextMenu: treeContextMenu,\n onAction: treeOnAction,\n menuTriggerProps,\n menuProps,\n } = props;\n\n const rowRef = useRef<HTMLDivElement>(null);\n\n // For lazy rows with no children yet, still render a toggle unless\n // explicitly marked as leaf.\n const isLeaf =\n data.isLeaf === true || (data.isLeaf !== false && !node.hasChildNodes);\n\n // React Aria counts a row as a parent only with more than one child (it\n // expects the row's content first). `hasChildItems` makes single-child and\n // lazy rows expandable: `aria-expanded` and arrow-key expansion.\n const { rowProps, gridCellProps, expandButtonProps, isPressed } = useTreeItem(\n { node, hasChildItems: !isLeaf },\n state,\n rowRef,\n );\n\n const isDisabled = state.disabledKeys.has(node.key);\n const isSelected = state.selectionManager.isSelected(node.key);\n\n // `useTreeItem` doesn't track hover; we need it for the `hovered` mod.\n const { hoverProps, isHovered } = useHover({ isDisabled });\n // React Aria's treegrid uses roving tabindex, so no `data-focused`\n // attribute lands on the row — mirror it as a mod manually.\n const isFocused =\n state.selectionManager.isFocused &&\n state.selectionManager.focusedKey === node.key;\n const isRowCheckable = isCheckable && data.isCheckable !== false;\n\n const nodeState: TreeNodeState = {\n isExpanded,\n isSelected,\n isChecked,\n isIndeterminate,\n isLeaf,\n };\n\n // ---- Menu resolution (per-node override > tree-level) --------------------\n\n const effectiveMenuChildren: ReactNode =\n data.menu === null\n ? null\n : data.menu !== undefined\n ? data.menu\n : typeof treeMenu === 'function'\n ? treeMenu(data, nodeState)\n : (treeMenu ?? null);\n const hasMenu = !isMenuEmpty(effectiveMenuChildren);\n\n const effectiveContextMenu: TreeContextMenu =\n data.contextMenu ?? treeContextMenu ?? false;\n // The menu is exposed only when the consumer opts in via\n // `contextMenu`. When `contextMenu` is `false` (default) we render\n // nothing, even if `menu` is provided — this matches the plan and\n // keeps default rows visually clean.\n const menuExposed =\n hasMenu &&\n (effectiveContextMenu === true || effectiveContextMenu === 'context-only');\n const contextMenuOnly = effectiveContextMenu === 'context-only';\n\n // Controlled state for menu trigger (enables keyboard opening with Shift+F10)\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const handleMenuAction = useEvent((action: Key) => {\n // Strip the \".$\" prefix that React adds via Children.toArray/map.\n const actionStr = String(action);\n const normalizedAction = actionStr.startsWith('.$')\n ? actionStr.slice(2)\n : actionStr;\n data.onAction?.(normalizedAction);\n treeOnAction?.(normalizedAction, node.key);\n // Forward to the consumer-supplied `menuProps.onAction` so users\n // who pass extra `Menu` props through `menuProps` still receive\n // the action stream alongside the tree-level callback.\n menuProps?.onAction?.(normalizedAction);\n });\n\n const rowContextMenu = useContextMenu<HTMLDivElement, CubeMenuProps<object>>(\n Menu,\n { placement: 'bottom start' },\n {\n ...menuProps,\n onAction: handleMenuAction,\n children: effectiveMenuChildren,\n },\n );\n\n // ---- Checkbox ------------------------------------------------------------\n\n const handleCheckboxChange = useEvent(() => {\n onToggleChecked(String(node.key));\n });\n\n const handleWrapperClick = useEvent((e: MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n if (isDisabled || data.isCheckboxDisabled) return;\n // The inner <Checkbox> label toggles on direct click; skip to avoid a double toggle.\n if ((e.target as HTMLElement).closest('[data-qa=\"CheckboxWrapper\"]'))\n return;\n onToggleChecked(String(node.key));\n });\n\n // ---- Keyboard ------------------------------------------------------------\n\n // Composed keydown handler. Runs BEFORE `rowProps.onKeyDown` from\n // `useTreeItem` so we can short-circuit the default react-aria\n // behavior for our own shortcuts (Shift+F10 menu open, Space\n // checkbox toggle). Returns `true` when the event was handled and\n // react-aria's keydown must NOT run; returns `false` to chain to\n // react-aria's handler.\n const handleKeyDown = useEvent((e: KeyboardEvent) => {\n // Space toggles the checkbox first when checkable. We DON'T claim\n // the event (return `false`) so react-aria's onKeyDown still runs\n // afterwards and the focused row also selects — matching the\n // pre-refactor behavior when handlers were chained via\n // `mergeProps`. `preventDefault` is kept to suppress page scroll.\n if (\n e.key === ' ' &&\n isRowCheckable &&\n !isDisabled &&\n !data.isCheckboxDisabled\n ) {\n e.preventDefault();\n onToggleChecked(String(node.key));\n return false;\n }\n\n // Shift+F10 opens the row menu (standard accessibility shortcut).\n if (e.key === 'F10' && e.shiftKey && menuExposed) {\n e.preventDefault();\n e.stopPropagation();\n if (contextMenuOnly) {\n rowContextMenu.open();\n } else {\n setIsMenuOpen(true);\n }\n return true;\n }\n\n return false;\n });\n\n // Wrapper that delegates to react-aria's default keydown only when\n // our handler did not claim the event. Replaces (rather than\n // chains with) `rowProps.onKeyDown` so the order of handlers is\n // strictly: our shortcuts → react-aria default.\n const composedKeyDown = useEvent((e: KeyboardEvent<HTMLDivElement>) => {\n if (handleKeyDown(e)) return;\n rowProps.onKeyDown?.(e);\n });\n\n // ---- Mods ----------------------------------------------------------------\n\n const sharedMods = useMemo(\n () => ({\n checked: isChecked,\n indeterminate: isIndeterminate,\n expanded: isExpanded,\n loading: isLoading,\n leaf: isLeaf,\n 'has-checkbox': isRowCheckable,\n 'has-menu': menuExposed,\n }),\n [\n isChecked,\n isIndeterminate,\n isExpanded,\n isLoading,\n isLeaf,\n isRowCheckable,\n menuExposed,\n ],\n );\n\n const rowMods = useMemo(\n () => ({ ...sharedMods, disabled: isDisabled }),\n [sharedMods, isDisabled],\n );\n\n const itemMods = useMemo(\n () => ({\n ...sharedMods,\n focused: isFocused,\n hovered: isHovered,\n pressed: isPressed,\n }),\n [sharedMods, isFocused, isHovered, isPressed],\n );\n\n const rowStyle = useMemo<CSSProperties>(\n () => ({\n ['--tree-level' as keyof CSSProperties]: String(node.level ?? 0),\n ...virtualStyle,\n }),\n [node.level, virtualStyle],\n );\n\n // Only emit `aria-checked` when the tree is in checkable mode.\n const ariaChecked: 'mixed' | 'true' | 'false' | undefined = isRowCheckable\n ? isIndeterminate\n ? 'mixed'\n : isChecked\n ? 'true'\n : 'false'\n : undefined;\n\n // ---- Compose row props ---------------------------------------------------\n\n // Merge react-aria + hover props but EXCLUDE `onKeyDown` from the\n // chain — `composedKeyDown` already wraps `rowProps.onKeyDown` and\n // must run first so our Shift+F10 / Space-checkbox shortcuts can\n // short-circuit the default react-aria behavior.\n const finalRowProps = {\n ...mergeProps(rowProps, hoverProps),\n 'aria-checked': ariaChecked,\n onKeyDown: composedKeyDown,\n };\n\n // ---- Toggle (chevron) and checkbox slots --------------------------------\n\n // Leaf rows get a placeholder so sibling indents align.\n const toggleNode = isLeaf ? (\n <TreeNodeTogglePlaceholder aria-hidden data-element=\"Toggle\" />\n ) : (\n <TreeNodeToggle {...expandButtonProps} tabIndex={-1} data-element=\"Toggle\">\n {isLoading ? (\n <LoadingIcon />\n ) : (\n <DirectionIcon to={isExpanded ? 'bottom' : 'right'} />\n )}\n </TreeNodeToggle>\n );\n\n const checkboxNode = isRowCheckable ? (\n <TreeNodeCheckboxWrapper\n data-element=\"Checkbox\"\n role=\"presentation\"\n onClick={handleWrapperClick}\n // Hold the checkbox's keys here, but let Escape and Tab reach the tree and\n // a surrounding overlay.\n onKeyDown={allowOverlayKeysToPropagate}\n >\n <Checkbox\n isBare\n isSelected={isChecked}\n isIndeterminate={isIndeterminate}\n isDisabled={isDisabled || data.isCheckboxDisabled}\n aria-label={\n typeof data.title === 'string' ? data.title : String(node.key)\n }\n onChange={handleCheckboxChange}\n />\n </TreeNodeCheckboxWrapper>\n ) : null;\n\n // ---- Resolve user-supplied per-node Item props --------------------------\n\n const resolvedItemProps =\n typeof itemProps === 'function' ? itemProps(data, nodeState) : itemProps;\n const {\n prefix: userPrefix,\n actions: userActions,\n ...restUserProps\n } = resolvedItemProps ?? {};\n\n const composedPrefix =\n checkboxNode || userPrefix ? (\n <>\n {checkboxNode}\n {userPrefix}\n </>\n ) : null;\n\n // ---- Built-in overflow `⋮` action ---------------------------------------\n\n const menuAction =\n menuExposed && !contextMenuOnly ? (\n <MenuTrigger isOpen={isMenuOpen} onOpenChange={setIsMenuOpen}>\n <ItemAction\n tabIndex={-1}\n icon={<MoreIcon />}\n aria-label={t('tree.actions', 'Actions')}\n {...menuTriggerProps}\n />\n <Menu {...menuProps} onAction={handleMenuAction}>\n {effectiveMenuChildren}\n </Menu>\n </MenuTrigger>\n ) : null;\n\n // Compose with user-supplied actions (user actions render first).\n const composedActions =\n userActions || menuAction ? (\n <>\n {userActions}\n {menuAction}\n </>\n ) : undefined;\n\n // ---- Refs / context-menu wiring -----------------------------------------\n\n // When the context menu is enabled for this row, attach the hook's\n // `targetRef` to the row so right-clicks land on the correct anchor.\n const refs = useMemo(() => {\n const list: Ref<HTMLDivElement>[] = [rowRef];\n if (virtualRef) list.push(virtualRef);\n if (menuExposed) list.push(rowContextMenu.targetRef);\n return mergeRefs(...list);\n }, [virtualRef, menuExposed, rowContextMenu.targetRef]);\n\n return (\n <TreeNodeRow\n {...finalRowProps}\n ref={refs}\n mods={rowMods}\n style={rowStyle}\n data-element=\"Row\"\n data-qa-key={String(node.key)}\n data-index={virtualIndex}\n >\n <TreeRowItem\n {...gridCellProps}\n {...restUserProps}\n size={size}\n isSelected={isSelected}\n isDisabled={isDisabled}\n mods={itemMods}\n icon={toggleNode}\n prefix={composedPrefix}\n actions={composedActions}\n styles={rowStyles}\n >\n {data.title}\n </TreeRowItem>\n {menuExposed && rowContextMenu.rendered}\n </TreeNodeRow>\n );\n}\n\nexport const TreeNode = memo(TreeNodeInner);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TreeNode.js","names":["Children","memo","useMemo","useRef","useState","useHover","useTreeItem","useEvent","useI18n","DirectionIcon","LoadingIcon","MoreIcon","mergeProps","mergeRefs","allowOverlayKeysToPropagate","CubeItemActionProps","ItemAction","CubeMenuProps","Menu","MenuTrigger","useContextMenu","Checkbox","TreeNodeCheckboxWrapper","TreeNodeRow","TreeNodeToggle","TreeNodeTogglePlaceholder","TreeRowItem","Key","Node","Styles","KeyboardEvent","MouseEvent","ReactNode","Ref","TreeState","CubeTreeNodeData","TreeContextMenu","TreeItemProps","TreeNodeState","isMenuEmpty","menu","undefined","toArray","length","TreeNodeProps","node","data","state","isCheckable","isExpanded","isIndeterminate","isChecked","isLoading","onToggleChecked","key","size","itemProps","rowStyles","virtualOffset","virtualRef","element","HTMLElement","virtualIndex","contextMenu","onAction","action","menuTriggerProps","Partial","menuProps","TreeNodeInner","props","t","treeMenu","treeContextMenu","treeOnAction","rowRef","HTMLDivElement","isLeaf","hasChildNodes","rowProps","gridCellProps","expandButtonProps","isPressed","hasChildItems","isDisabled","disabledKeys","has","isSelected","selectionManager","hoverProps","isHovered","isFocused","focusedKey","isRowCheckable","nodeState","effectiveMenuChildren","hasMenu","effectiveContextMenu","menuExposed","contextMenuOnly","isMenuOpen","setIsMenuOpen","handleMenuAction","actionStr","String","normalizedAction","startsWith","slice","rowContextMenu","placement","children","handleCheckboxChange","handleWrapperClick","e","stopPropagation","isCheckboxDisabled","target","closest","handleKeyDown","preventDefault","shiftKey","open","composedKeyDown","onKeyDown","sharedMods","checked","indeterminate","expanded","loading","leaf","rowMods","disabled","itemMods","focused","hovered","pressed","rowTokens","level","ariaChecked","finalRowProps","toggleNode","checkboxNode","title","resolvedItemProps","prefix","userPrefix","actions","userActions","restUserProps","composedPrefix","menuAction","composedActions","refs","list","push","targetRef","rendered","TreeNode","Menu","mergeProps","Checkbox","MenuTrigger"],"sources":["../../../../src/components/content/Tree/TreeNode.tsx"],"sourcesContent":["import { Children, memo, useMemo, useRef, useState } from 'react';\nimport { useHover, useTreeItem } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { MoreIcon } from '../../../icons/MoreIcon';\nimport { mergeProps, mergeRefs } from '../../../utils/react';\nimport { allowOverlayKeysToPropagate } from '../../../utils/react/overlayKeyPropagation';\nimport { CubeItemActionProps, ItemAction } from '../../actions/ItemAction';\nimport { CubeMenuProps, Menu, MenuTrigger } from '../../actions/Menu';\nimport { useContextMenu } from '../../actions/use-context-menu';\nimport { Checkbox } from '../../fields/Checkbox/Checkbox';\n\nimport {\n TreeNodeCheckboxWrapper,\n TreeNodeRow,\n TreeNodeToggle,\n TreeNodeTogglePlaceholder,\n TreeRowItem,\n} from './styled';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type { KeyboardEvent, MouseEvent, ReactNode, Ref } from 'react';\nimport type { TreeState } from 'react-stately';\nimport type {\n CubeTreeNodeData,\n TreeContextMenu,\n TreeItemProps,\n TreeNodeState,\n} from './types';\n\n/** Check whether a `menu` ReactNode actually contains anything. */\nfunction isMenuEmpty(menu: ReactNode): boolean {\n if (menu === null || menu === undefined || menu === false) return true;\n return Children.toArray(menu).length === 0;\n}\n\nexport interface TreeNodeProps {\n node: Node<CubeTreeNodeData>;\n /** The original `CubeTreeNodeData` for this row, looked up by key. */\n data: CubeTreeNodeData;\n state: TreeState<CubeTreeNodeData>;\n\n /** Whether the tree as a whole renders checkboxes. */\n isCheckable: boolean;\n /** Whether this row is currently expanded. */\n isExpanded: boolean;\n /** Whether the row is in an indeterminate (half-checked) state. */\n isIndeterminate: boolean;\n /** Whether the row is fully checked. */\n isChecked: boolean;\n /** Whether `loadData` is currently fetching this row's children. */\n isLoading: boolean;\n\n /** Toggle this row's checkbox (cascades). */\n onToggleChecked: (key: string) => void;\n\n /** Row size passed to the underlying Item. */\n size?: string;\n\n /** Per-node Item customization (static object or callback). */\n itemProps?:\n | TreeItemProps\n | ((data: CubeTreeNodeData, state: TreeNodeState) => TreeItemProps);\n\n /** Styles applied to the visible row (`TreeRowItem`). */\n rowStyles?: Styles;\n\n /** The row's offset from the list's top, in pixels, from the virtualizer. */\n virtualOffset?: number;\n /** Ref callback from `@tanstack/react-virtual` to measure row height. */\n virtualRef?: (element: HTMLElement | null) => void;\n /** Virtual index for `data-index` attribute. */\n virtualIndex?: number;\n\n /** Tree-wide menu default (resolved against `data.menu`). */\n menu?:\n | ReactNode\n | ((data: CubeTreeNodeData, state: TreeNodeState) => ReactNode | null);\n /** Tree-wide `contextMenu` default. */\n contextMenu?: TreeContextMenu;\n /** Tree-wide `onAction` callback. */\n onAction?: (action: string, key: Key) => void;\n /** Forwarded to every per-row `MenuTrigger`. */\n menuTriggerProps?: Partial<CubeItemActionProps>;\n /** Forwarded to every per-row `Menu`. */\n menuProps?: Partial<CubeMenuProps<object>>;\n}\n\nfunction TreeNodeInner(props: TreeNodeProps) {\n const { t } = useI18n();\n const {\n node,\n data,\n state,\n isCheckable,\n isExpanded,\n isIndeterminate,\n isChecked,\n isLoading,\n onToggleChecked,\n size,\n itemProps,\n rowStyles,\n virtualOffset,\n virtualRef,\n virtualIndex,\n menu: treeMenu,\n contextMenu: treeContextMenu,\n onAction: treeOnAction,\n menuTriggerProps,\n menuProps,\n } = props;\n\n const rowRef = useRef<HTMLDivElement>(null);\n\n // For lazy rows with no children yet, still render a toggle unless\n // explicitly marked as leaf.\n const isLeaf =\n data.isLeaf === true || (data.isLeaf !== false && !node.hasChildNodes);\n\n // React Aria counts a row as a parent only with more than one child (it\n // expects the row's content first). `hasChildItems` makes single-child and\n // lazy rows expandable: `aria-expanded` and arrow-key expansion.\n const { rowProps, gridCellProps, expandButtonProps, isPressed } = useTreeItem(\n { node, hasChildItems: !isLeaf },\n state,\n rowRef,\n );\n\n const isDisabled = state.disabledKeys.has(node.key);\n const isSelected = state.selectionManager.isSelected(node.key);\n\n // `useTreeItem` doesn't track hover; we need it for the `hovered` mod.\n const { hoverProps, isHovered } = useHover({ isDisabled });\n // React Aria's treegrid uses roving tabindex, so no `data-focused`\n // attribute lands on the row — mirror it as a mod manually.\n const isFocused =\n state.selectionManager.isFocused &&\n state.selectionManager.focusedKey === node.key;\n const isRowCheckable = isCheckable && data.isCheckable !== false;\n\n const nodeState: TreeNodeState = {\n isExpanded,\n isSelected,\n isChecked,\n isIndeterminate,\n isLeaf,\n };\n\n // ---- Menu resolution (per-node override > tree-level) --------------------\n\n const effectiveMenuChildren: ReactNode =\n data.menu === null\n ? null\n : data.menu !== undefined\n ? data.menu\n : typeof treeMenu === 'function'\n ? treeMenu(data, nodeState)\n : (treeMenu ?? null);\n const hasMenu = !isMenuEmpty(effectiveMenuChildren);\n\n const effectiveContextMenu: TreeContextMenu =\n data.contextMenu ?? treeContextMenu ?? false;\n // The menu is exposed only when the consumer opts in via\n // `contextMenu`. When `contextMenu` is `false` (default) we render\n // nothing, even if `menu` is provided — this matches the plan and\n // keeps default rows visually clean.\n const menuExposed =\n hasMenu &&\n (effectiveContextMenu === true || effectiveContextMenu === 'context-only');\n const contextMenuOnly = effectiveContextMenu === 'context-only';\n\n // Controlled state for menu trigger (enables keyboard opening with Shift+F10)\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const handleMenuAction = useEvent((action: Key) => {\n // Strip the \".$\" prefix that React adds via Children.toArray/map.\n const actionStr = String(action);\n const normalizedAction = actionStr.startsWith('.$')\n ? actionStr.slice(2)\n : actionStr;\n data.onAction?.(normalizedAction);\n treeOnAction?.(normalizedAction, node.key);\n // Forward to the consumer-supplied `menuProps.onAction` so users\n // who pass extra `Menu` props through `menuProps` still receive\n // the action stream alongside the tree-level callback.\n menuProps?.onAction?.(normalizedAction);\n });\n\n const rowContextMenu = useContextMenu<HTMLDivElement, CubeMenuProps<object>>(\n Menu,\n { placement: 'bottom start' },\n {\n ...menuProps,\n onAction: handleMenuAction,\n children: effectiveMenuChildren,\n },\n );\n\n // ---- Checkbox ------------------------------------------------------------\n\n const handleCheckboxChange = useEvent(() => {\n onToggleChecked(String(node.key));\n });\n\n const handleWrapperClick = useEvent((e: MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n if (isDisabled || data.isCheckboxDisabled) return;\n // The inner <Checkbox> label toggles on direct click; skip to avoid a double toggle.\n if ((e.target as HTMLElement).closest('[data-qa=\"CheckboxWrapper\"]'))\n return;\n onToggleChecked(String(node.key));\n });\n\n // ---- Keyboard ------------------------------------------------------------\n\n // Composed keydown handler. Runs BEFORE `rowProps.onKeyDown` from\n // `useTreeItem` so we can short-circuit the default react-aria\n // behavior for our own shortcuts (Shift+F10 menu open, Space\n // checkbox toggle). Returns `true` when the event was handled and\n // react-aria's keydown must NOT run; returns `false` to chain to\n // react-aria's handler.\n const handleKeyDown = useEvent((e: KeyboardEvent) => {\n // Space toggles the checkbox first when checkable. We DON'T claim\n // the event (return `false`) so react-aria's onKeyDown still runs\n // afterwards and the focused row also selects — matching the\n // pre-refactor behavior when handlers were chained via\n // `mergeProps`. `preventDefault` is kept to suppress page scroll.\n if (\n e.key === ' ' &&\n isRowCheckable &&\n !isDisabled &&\n !data.isCheckboxDisabled\n ) {\n e.preventDefault();\n onToggleChecked(String(node.key));\n return false;\n }\n\n // Shift+F10 opens the row menu (standard accessibility shortcut).\n if (e.key === 'F10' && e.shiftKey && menuExposed) {\n e.preventDefault();\n e.stopPropagation();\n if (contextMenuOnly) {\n rowContextMenu.open();\n } else {\n setIsMenuOpen(true);\n }\n return true;\n }\n\n return false;\n });\n\n // Wrapper that delegates to react-aria's default keydown only when\n // our handler did not claim the event. Replaces (rather than\n // chains with) `rowProps.onKeyDown` so the order of handlers is\n // strictly: our shortcuts → react-aria default.\n const composedKeyDown = useEvent((e: KeyboardEvent<HTMLDivElement>) => {\n if (handleKeyDown(e)) return;\n rowProps.onKeyDown?.(e);\n });\n\n // ---- Mods ----------------------------------------------------------------\n\n const sharedMods = useMemo(\n () => ({\n checked: isChecked,\n indeterminate: isIndeterminate,\n expanded: isExpanded,\n loading: isLoading,\n leaf: isLeaf,\n 'has-checkbox': isRowCheckable,\n 'has-menu': menuExposed,\n }),\n [\n isChecked,\n isIndeterminate,\n isExpanded,\n isLoading,\n isLeaf,\n isRowCheckable,\n menuExposed,\n ],\n );\n\n const rowMods = useMemo(\n () => ({ ...sharedMods, disabled: isDisabled }),\n [sharedMods, isDisabled],\n );\n\n const itemMods = useMemo(\n () => ({\n ...sharedMods,\n focused: isFocused,\n hovered: isHovered,\n pressed: isPressed,\n }),\n [sharedMods, isFocused, isHovered, isPressed],\n );\n\n const rowTokens = useMemo(\n () => ({\n '$tree-level': node.level ?? 0,\n '$tree-row-offset':\n virtualOffset == null ? undefined : `${virtualOffset}px`,\n }),\n [node.level, virtualOffset],\n );\n\n // Only emit `aria-checked` when the tree is in checkable mode.\n const ariaChecked: 'mixed' | 'true' | 'false' | undefined = isRowCheckable\n ? isIndeterminate\n ? 'mixed'\n : isChecked\n ? 'true'\n : 'false'\n : undefined;\n\n // ---- Compose row props ---------------------------------------------------\n\n // Merge react-aria + hover props but EXCLUDE `onKeyDown` from the\n // chain — `composedKeyDown` already wraps `rowProps.onKeyDown` and\n // must run first so our Shift+F10 / Space-checkbox shortcuts can\n // short-circuit the default react-aria behavior.\n const finalRowProps = {\n ...mergeProps(rowProps, hoverProps),\n 'aria-checked': ariaChecked,\n onKeyDown: composedKeyDown,\n };\n\n // ---- Toggle (chevron) and checkbox slots --------------------------------\n\n // Leaf rows get a placeholder so sibling indents align.\n const toggleNode = isLeaf ? (\n <TreeNodeTogglePlaceholder aria-hidden data-element=\"Toggle\" />\n ) : (\n <TreeNodeToggle {...expandButtonProps} tabIndex={-1} data-element=\"Toggle\">\n {isLoading ? (\n <LoadingIcon />\n ) : (\n <DirectionIcon to={isExpanded ? 'bottom' : 'right'} />\n )}\n </TreeNodeToggle>\n );\n\n const checkboxNode = isRowCheckable ? (\n <TreeNodeCheckboxWrapper\n data-element=\"Checkbox\"\n role=\"presentation\"\n onClick={handleWrapperClick}\n // Hold the checkbox's keys here, but let Escape and Tab reach the tree and\n // a surrounding overlay.\n onKeyDown={allowOverlayKeysToPropagate}\n >\n <Checkbox\n isBare\n isSelected={isChecked}\n isIndeterminate={isIndeterminate}\n isDisabled={isDisabled || data.isCheckboxDisabled}\n aria-label={\n typeof data.title === 'string' ? data.title : String(node.key)\n }\n onChange={handleCheckboxChange}\n />\n </TreeNodeCheckboxWrapper>\n ) : null;\n\n // ---- Resolve user-supplied per-node Item props --------------------------\n\n const resolvedItemProps =\n typeof itemProps === 'function' ? itemProps(data, nodeState) : itemProps;\n const {\n prefix: userPrefix,\n actions: userActions,\n ...restUserProps\n } = resolvedItemProps ?? {};\n\n const composedPrefix =\n checkboxNode || userPrefix ? (\n <>\n {checkboxNode}\n {userPrefix}\n </>\n ) : null;\n\n // ---- Built-in overflow `⋮` action ---------------------------------------\n\n const menuAction =\n menuExposed && !contextMenuOnly ? (\n <MenuTrigger isOpen={isMenuOpen} onOpenChange={setIsMenuOpen}>\n <ItemAction\n tabIndex={-1}\n icon={<MoreIcon />}\n aria-label={t('tree.actions', 'Actions')}\n {...menuTriggerProps}\n />\n <Menu {...menuProps} onAction={handleMenuAction}>\n {effectiveMenuChildren}\n </Menu>\n </MenuTrigger>\n ) : null;\n\n // Compose with user-supplied actions (user actions render first).\n const composedActions =\n userActions || menuAction ? (\n <>\n {userActions}\n {menuAction}\n </>\n ) : undefined;\n\n // ---- Refs / context-menu wiring -----------------------------------------\n\n // When the context menu is enabled for this row, attach the hook's\n // `targetRef` to the row so right-clicks land on the correct anchor.\n const refs = useMemo(() => {\n const list: Ref<HTMLDivElement>[] = [rowRef];\n if (virtualRef) list.push(virtualRef);\n if (menuExposed) list.push(rowContextMenu.targetRef);\n return mergeRefs(...list);\n }, [virtualRef, menuExposed, rowContextMenu.targetRef]);\n\n return (\n <TreeNodeRow\n {...finalRowProps}\n ref={refs}\n mods={rowMods}\n tokens={rowTokens}\n data-element=\"Row\"\n data-qa-key={String(node.key)}\n data-index={virtualIndex}\n >\n <TreeRowItem\n {...gridCellProps}\n {...restUserProps}\n size={size}\n isSelected={isSelected}\n isDisabled={isDisabled}\n mods={itemMods}\n icon={toggleNode}\n prefix={composedPrefix}\n actions={composedActions}\n styles={rowStyles}\n >\n {data.title}\n </TreeRowItem>\n {menuExposed && rowContextMenu.rendered}\n </TreeNodeRow>\n );\n}\n\nexport const TreeNode = memo(TreeNodeInner);\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { Item as _Item } from "../Item/Item.js";
|
|
3
3
|
import { Action } from "../../actions/Action/Action.js";
|
|
4
|
-
import { tasty } from "@tenphi/tasty";
|
|
4
|
+
import { mergeStyles, tasty } from "@tenphi/tasty";
|
|
5
5
|
//#region src/components/content/Tree/styled.ts
|
|
6
6
|
/**
|
|
7
7
|
* Tree root.
|
|
@@ -13,8 +13,11 @@ import { tasty } from "@tenphi/tasty";
|
|
|
13
13
|
* placed inside a normal block formatting context.
|
|
14
14
|
*
|
|
15
15
|
* Tree-wide modifiers (set on `TreeElement` itself):
|
|
16
|
-
* - `has-height` — paired with
|
|
16
|
+
* - `has-height` — paired with the `$tree-height` token
|
|
17
17
|
* when the consumer passes a numeric `height` prop.
|
|
18
|
+
*
|
|
19
|
+
* It also sets `$tree-padding`, the `containerPadding` that insets the
|
|
20
|
+
* rows (`TreeNodeRow`).
|
|
18
21
|
*/
|
|
19
22
|
const TreeElement = tasty({
|
|
20
23
|
qa: "Tree",
|
|
@@ -55,7 +58,7 @@ const TreeElement = tasty({
|
|
|
55
58
|
});
|
|
56
59
|
/**
|
|
57
60
|
* Inner scroll viewport. Block-level on purpose — placing the
|
|
58
|
-
* virtualizer's sizer (`
|
|
61
|
+
* virtualizer's sizer (`TreeSizer`) directly inside the
|
|
59
62
|
* flex `TreeElement` lets `flex-shrink: 1` collapse it, which makes
|
|
60
63
|
* the scroll area visibly grow as `@tanstack/react-virtual`
|
|
61
64
|
* re-measures rows during scroll.
|
|
@@ -74,18 +77,35 @@ const TreeScrollContainer = tasty({
|
|
|
74
77
|
}
|
|
75
78
|
});
|
|
76
79
|
/**
|
|
80
|
+
* The virtualizer's sizer: as tall as every row, measured or estimated
|
|
81
|
+
* (`$tree-content-height`), and the box the rows are placed in.
|
|
82
|
+
*/
|
|
83
|
+
const TreeSizer = tasty({
|
|
84
|
+
qa: "TreeSizer",
|
|
85
|
+
styles: {
|
|
86
|
+
position: "relative",
|
|
87
|
+
width: "100%",
|
|
88
|
+
height: "$tree-content-height"
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
77
92
|
* Per-row wrapper carrying `role="row"`, `rowProps` from
|
|
78
93
|
* `useTreeItem`, and the `--tree-level` CSS custom property used by
|
|
79
94
|
* `TreeRowItem` to compute its left padding.
|
|
80
95
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
96
|
+
* It places the row at the virtualizer's offset (`--tree-row-offset`),
|
|
97
|
+
* inset by `--tree-padding`. Otherwise it has no visual styles of its
|
|
98
|
+
* own — the row's appearance lives on the inner `TreeRowItem` (which
|
|
99
|
+
* extends `Item`).
|
|
83
100
|
*/
|
|
84
101
|
const TreeNodeRow = tasty({
|
|
85
102
|
qa: "TreeRow",
|
|
86
103
|
styles: {
|
|
87
104
|
display: "block",
|
|
88
|
-
outline: 0
|
|
105
|
+
outline: 0,
|
|
106
|
+
position: "absolute",
|
|
107
|
+
inset: "0 $tree-padding top dock",
|
|
108
|
+
transform: "translateY($tree-row-offset)"
|
|
89
109
|
}
|
|
90
110
|
});
|
|
91
111
|
/**
|
|
@@ -108,7 +128,7 @@ const TreeRowItem = tasty(_Item, {
|
|
|
108
128
|
* `Item` is `inline-grid` by default, which leaves baseline
|
|
109
129
|
* descender space below the row inside the block-level
|
|
110
130
|
* `TreeNodeRow` and visually inflates the gap between rows
|
|
111
|
-
* past the intended
|
|
131
|
+
* past the intended hairline. Force block-level grid here.
|
|
112
132
|
*/
|
|
113
133
|
display: "grid",
|
|
114
134
|
width: "100%",
|
|
@@ -164,8 +184,7 @@ const TOGGLE_BASE_STYLES = {
|
|
|
164
184
|
*/
|
|
165
185
|
const TreeNodeToggle = tasty(Action, {
|
|
166
186
|
qa: "TreeNodeToggle",
|
|
167
|
-
styles: {
|
|
168
|
-
...TOGGLE_BASE_STYLES,
|
|
187
|
+
styles: mergeStyles(TOGGLE_BASE_STYLES, {
|
|
169
188
|
color: {
|
|
170
189
|
"": "#dark-02",
|
|
171
190
|
":hover": "#dark"
|
|
@@ -174,7 +193,7 @@ const TreeNodeToggle = tasty(Action, {
|
|
|
174
193
|
"": "#clear",
|
|
175
194
|
":hover": "#dark.04"
|
|
176
195
|
}
|
|
177
|
-
}
|
|
196
|
+
})
|
|
178
197
|
});
|
|
179
198
|
/**
|
|
180
199
|
* Non-interactive placeholder that occupies the same footprint as
|
|
@@ -183,6 +202,6 @@ const TreeNodeToggle = tasty(Action, {
|
|
|
183
202
|
*/
|
|
184
203
|
const TreeNodeTogglePlaceholder = tasty({ styles: TOGGLE_BASE_STYLES });
|
|
185
204
|
//#endregion
|
|
186
|
-
export { TreeElement, TreeNodeCheckboxWrapper, TreeNodeRow, TreeNodeToggle, TreeNodeTogglePlaceholder, TreeRowItem, TreeScrollContainer };
|
|
205
|
+
export { TreeElement, TreeNodeCheckboxWrapper, TreeNodeRow, TreeNodeToggle, TreeNodeTogglePlaceholder, TreeRowItem, TreeScrollContainer, TreeSizer };
|
|
187
206
|
|
|
188
207
|
//# sourceMappingURL=styled.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","names":["Styles","tasty","Action","Item","TreeElement","qa","styles","display","flow","width","height","flexGrow","flexShrink","flexBasis","fill","color","transition","outline","padding","radius","border","TreeScrollContainer","overflow","scrollbar","TreeNodeRow","TreeRowItem","type","size","as","cursor","disabled","TreeNodeCheckboxWrapper","placeItems","placeContent","placeSelf","TOGGLE_BASE_STYLES","TreeNodeToggle","TreeNodeTogglePlaceholder","Item"],"sources":["../../../../src/components/content/Tree/styled.ts"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\n\nimport { Action } from '../../actions/Action/Action';\nimport { Item } from '../Item';\n\n/**\n * Tree root.\n *\n * Renders as `role=\"treegrid\"` (set on `gridProps` from `useTree`).\n * This element is the outer flex layout container; scrolling is\n * delegated to the inner `TreeScrollContainer` so the virtualized\n * sizer (a flex item here would be squashed by `flex-shrink: 1`) is\n * placed inside a normal block formatting context.\n *\n * Tree-wide modifiers (set on `TreeElement` itself):\n * - `has-height` — paired with
|
|
1
|
+
{"version":3,"file":"styled.js","names":["mergeStyles","Styles","tasty","Action","Item","TreeElement","qa","styles","display","flow","width","height","flexGrow","flexShrink","flexBasis","fill","color","transition","outline","padding","radius","border","TreeScrollContainer","overflow","scrollbar","TreeSizer","position","TreeNodeRow","inset","transform","TreeRowItem","type","size","as","cursor","disabled","TreeNodeCheckboxWrapper","placeItems","placeContent","placeSelf","TOGGLE_BASE_STYLES","TreeNodeToggle","TreeNodeTogglePlaceholder","Item"],"sources":["../../../../src/components/content/Tree/styled.ts"],"sourcesContent":["import { mergeStyles, Styles, tasty } from '@tenphi/tasty';\n\nimport { Action } from '../../actions/Action/Action';\nimport { Item } from '../Item';\n\n/**\n * Tree root.\n *\n * Renders as `role=\"treegrid\"` (set on `gridProps` from `useTree`).\n * This element is the outer flex layout container; scrolling is\n * delegated to the inner `TreeScrollContainer` so the virtualized\n * sizer (a flex item here would be squashed by `flex-shrink: 1`) is\n * placed inside a normal block formatting context.\n *\n * Tree-wide modifiers (set on `TreeElement` itself):\n * - `has-height` — paired with the `$tree-height` token\n * when the consumer passes a numeric `height` prop.\n *\n * It also sets `$tree-padding`, the `containerPadding` that insets the\n * rows (`TreeNodeRow`).\n */\nexport const TreeElement = tasty({\n qa: 'Tree',\n styles: {\n display: 'flex',\n flow: 'column',\n width: '100%',\n height: { '': 'min 0', 'has-height': '0 $tree-height $tree-height' },\n flexGrow: { '': 1, 'has-height': 0 },\n flexShrink: { '': 1, 'has-height': 0 },\n flexBasis: { '': 0, 'has-height': 'auto' },\n fill: '#clear',\n color: '#dark',\n transition: 'theme',\n outline: 0,\n padding: 0,\n radius: { '': 0, 'shape=card': '1cr' },\n border: { '': 0, 'shape=card': true },\n },\n});\n\n/**\n * Inner scroll viewport. Block-level on purpose — placing the\n * virtualizer's sizer (`TreeSizer`) directly inside the\n * flex `TreeElement` lets `flex-shrink: 1` collapse it, which makes\n * the scroll area visibly grow as `@tanstack/react-virtual`\n * re-measures rows during scroll.\n */\nexport const TreeScrollContainer = tasty({\n qa: 'TreeScrollContainer',\n styles: {\n display: 'block',\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 'auto',\n width: '0 100% initial',\n height: 'min 0',\n overflow: 'auto',\n scrollbar: 'thin',\n },\n});\n\n/**\n * The virtualizer's sizer: as tall as every row, measured or estimated\n * (`$tree-content-height`), and the box the rows are placed in.\n */\nexport const TreeSizer = tasty({\n qa: 'TreeSizer',\n styles: {\n position: 'relative',\n width: '100%',\n height: '$tree-content-height',\n },\n});\n\n/**\n * Per-row wrapper carrying `role=\"row\"`, `rowProps` from\n * `useTreeItem`, and the `--tree-level` CSS custom property used by\n * `TreeRowItem` to compute its left padding.\n *\n * It places the row at the virtualizer's offset (`--tree-row-offset`),\n * inset by `--tree-padding`. Otherwise it has no visual styles of its\n * own — the row's appearance lives on the inner `TreeRowItem` (which\n * extends `Item`).\n */\nexport const TreeNodeRow = tasty({\n qa: 'TreeRow',\n styles: {\n display: 'block',\n outline: 0,\n position: 'absolute',\n inset: '0 $tree-padding top dock',\n transform: 'translateY($tree-row-offset)',\n },\n});\n\n/**\n * The visible row: an `Item` extension that owns layout (full-width,\n * tree indent) only. Color treatment is delegated to the\n * `default.item` variant (see `DEFAULT_ITEM_STYLES` in\n * `data/item-themes.ts`) so the Tree row matches the canonical Item\n * look out of the box. `hovered` / `focused` / `pressed` mods are\n * propagated from `TreeNode` because react-aria's treegrid uses a\n * roving-tabindex \"virtual focus\" model and never sets those data\n * attributes itself.\n */\nexport const TreeRowItem = tasty(Item, {\n qa: 'TreeItem',\n type: 'item',\n size: 'medium',\n as: 'div',\n styles: {\n /**\n * `Item` is `inline-grid` by default, which leaves baseline\n * descender space below the row inside the block-level\n * `TreeNodeRow` and visually inflates the gap between rows\n * past the intended hairline. Force block-level grid here.\n */\n display: 'grid',\n width: '100%',\n /**\n * Per-level indent. `$tree-indent` is a local token that reads\n * `--tree-level` (set inline on the parent `TreeNodeRow`) with a\n * `0` fallback. Using `padding` shorthand (instead of\n * `paddingInlineStart`) so it overrides `Item`'s default\n * `padding: 0` reliably — a longhand override on a shorthand\n * loses to it in the cascade when both are emitted from the same\n * declaration block.\n */\n padding: 'left ($tree-indent * 1.5x)',\n '$tree-indent': '($tree-level, 0)',\n cursor: {\n '': 'pointer',\n disabled: 'not-allowed',\n },\n },\n});\n\n/**\n * Wraps the checkbox sitting in `Item`'s `prefix` slot. `Item`'s\n * built-in Prefix padding collapses to `0` whenever there's an icon\n * (which is always true for tree rows because the toggle/placeholder\n * occupies the icon slot). We re-introduce a small inline gap on\n * both sides so the checkbox isn't flush against the chevron and the\n * title.\n */\nexport const TreeNodeCheckboxWrapper = tasty({\n qa: 'TreeNodeCheckboxWrapper',\n styles: {\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n placeSelf: 'stretch',\n padding: '0 1x',\n },\n});\n\nconst TOGGLE_BASE_STYLES: Styles = {\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n width: '3x',\n height: '3x',\n radius: true,\n transition: 'theme',\n};\n\n/**\n * Chevron toggle button placed in `Item`'s `icon` slot. Spreads\n * `expandButtonProps` from `useTreeItem` (an AriaButtonProps) and\n * stops the press from bubbling to the row's selection handler via\n * React Aria's PressResponder.\n */\nexport const TreeNodeToggle = tasty(Action, {\n qa: 'TreeNodeToggle',\n styles: mergeStyles(TOGGLE_BASE_STYLES, {\n color: { '': '#dark-02', ':hover': '#dark' },\n fill: { '': '#clear', ':hover': '#dark.04' },\n }),\n});\n\n/**\n * Non-interactive placeholder that occupies the same footprint as\n * `TreeNodeToggle` so leaf rows visually align with siblings that\n * have a chevron.\n */\nexport const TreeNodeTogglePlaceholder = tasty({\n styles: TOGGLE_BASE_STYLES,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,MAAaK,cAAcH,MAAM;CAC/BI,IAAI;CACJC,QAAQ;EACNC,SAAS;EACTC,MAAM;EACNC,OAAO;EACPC,QAAQ;GAAE,IAAI;GAAS,cAAc;EAA8B;EACnEC,UAAU;GAAE,IAAI;GAAG,cAAc;EAAE;EACnCC,YAAY;GAAE,IAAI;GAAG,cAAc;EAAE;EACrCC,WAAW;GAAE,IAAI;GAAG,cAAc;EAAO;EACzCC,MAAM;EACNC,OAAO;EACPC,YAAY;EACZC,SAAS;EACTC,SAAS;EACTC,QAAQ;GAAE,IAAI;GAAG,cAAc;EAAM;EACrCC,QAAQ;GAAE,IAAI;GAAG,cAAc;EAAK;CACtC;AACF,CAAC;;;;;;;;AASD,MAAaC,sBAAsBpB,MAAM;CACvCI,IAAI;CACJC,QAAQ;EACNC,SAAS;EACTI,UAAU;EACVC,YAAY;EACZC,WAAW;EACXJ,OAAO;EACPC,QAAQ;EACRY,UAAU;EACVC,WAAW;CACb;AACF,CAAC;;;;;AAMD,MAAaC,YAAYvB,MAAM;CAC7BI,IAAI;CACJC,QAAQ;EACNmB,UAAU;EACVhB,OAAO;EACPC,QAAQ;CACV;AACF,CAAC;;;;;;;;;;;AAYD,MAAagB,cAAczB,MAAM;CAC/BI,IAAI;CACJC,QAAQ;EACNC,SAAS;EACTU,SAAS;EACTQ,UAAU;EACVE,OAAO;EACPC,WAAW;CACb;AACF,CAAC;;;;;;;;;;;AAYD,MAAaC,cAAc5B,MAAME,OAAM;CACrCE,IAAI;CACJyB,MAAM;CACNC,MAAM;CACNC,IAAI;CACJ1B,QAAQ;;;;;;;EAONC,SAAS;EACTE,OAAO;;;;;;;;;;EAUPS,SAAS;EACT,gBAAgB;EAChBe,QAAQ;GACN,IAAI;GACJC,UAAU;EACZ;CACF;AACF,CAAC;;;;;;;;;AAUD,MAAaC,0BAA0BlC,MAAM;CAC3CI,IAAI;CACJC,QAAQ;EACNC,SAAS;EACT6B,YAAY;EACZC,cAAc;EACdC,WAAW;EACXpB,SAAS;CACX;AACF,CAAC;AAED,MAAMqB,qBAA6B;CACjChC,SAAS;CACT6B,YAAY;CACZC,cAAc;CACd5B,OAAO;CACPC,QAAQ;CACRS,QAAQ;CACRH,YAAY;AACd;;;;;;;AAQA,MAAawB,iBAAiBvC,MAAMC,QAAQ;CAC1CG,IAAI;CACJC,QAAQP,YAAYwC,oBAAoB;EACtCxB,OAAO;GAAE,IAAI;GAAY,UAAU;EAAQ;EAC3CD,MAAM;GAAE,IAAI;GAAU,UAAU;EAAW;CAC7C,CAAC;AACH,CAAC;;;;;;AAOD,MAAa2B,4BAA4BxC,MAAM,EAC7CK,QAAQiC,mBACV,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { useState } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { isDevEnvOrTest } from "../../../utils/is-dev-env.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { TooltipProvider } from "../overlays/Tooltip/TooltipProvider.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { useEffect, useRef, useState } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles, mergeStyleLayers } from "../../../utils/styles.js";
|
|
3
3
|
import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles, mergeStyleLayers } from "../../../utils/styles.js";
|
|
3
3
|
import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { Text as _Text } from "../../content/Text.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { Text as _Text } from "../../content/Text.js";
|
|
3
3
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { Pagination as _Pagination } from "../../navigation/Pagination/Pagination.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
3
3
|
import { Button } from "../../actions/index.js";
|
|
4
4
|
import { ReloadIcon } from "../../../icons/ReloadIcon.js";
|
|
@@ -46,7 +46,7 @@ const ToolbarElement = tasty({
|
|
|
46
46
|
});
|
|
47
47
|
const SearchElement = tasty(SearchInput, {
|
|
48
48
|
qa: "ItemTableSearchInput",
|
|
49
|
-
styles: { width: "max
|
|
49
|
+
styles: { width: "max 37.5x" }
|
|
50
50
|
});
|
|
51
51
|
/** The table's search input, bound to the table's own state. */
|
|
52
52
|
function ItemTableSearch(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemTableToolbar.js","names":["tasty","createContext","useContext","useI18n","ReloadIcon","Button","SearchInput","Key","Styles","ReactNode","CubeItemTableChromeState","searchValue","setSearchValue","value","searchPlaceholder","isLoading","onRefresh","selectedKeys","selectedRows","T","selectedCount","clearSelection","ChromeContext","ItemTableChromeProvider","Provider","useItemTableChrome","component","context","Error","ToolbarElement","qa","as","styles","gridRow","display","flow","gap","placeItems","placeContent","padding","border","Start","$","width","End","SearchElement","ItemTableSearch","props","_c","t","t0","t1","t2","placeholder","t3","ItemTableToolbarProps","isSearchable","filters","actions","searchStyles","ItemTableToolbar","t4","t5","_c"],"sources":["../../../../src/components/data/ItemTable/ItemTableToolbar.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { createContext, useContext } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { ReloadIcon } from '../../../icons/ReloadIcon';\nimport { Button } from '../../actions';\nimport { SearchInput } from '../../fields/SearchInput';\n\nimport type { Key } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type { ReactNode } from 'react';\n\n/**\n * Lets `ItemTable.Search` (and future chrome pieces) read the table's state\n * without prop drilling, so a consumer can rebuild the toolbar from parts and\n * still have exactly one owner of the search term.\n */\nexport interface CubeItemTableChromeState<T = any> {\n searchValue: string;\n setSearchValue: (value: string) => void;\n searchPlaceholder?: string;\n isLoading: boolean;\n onRefresh?: () => void;\n /** `'all'` is the sentinel, so `selectedCount` is what the UI should show. */\n selectedKeys: Key[] | 'all';\n selectedRows: T[];\n selectedCount: number;\n clearSelection: () => void;\n}\n\nconst ChromeContext = createContext<CubeItemTableChromeState | null>(null);\n\nexport const ItemTableChromeProvider = ChromeContext.Provider;\n\nexport function useItemTableChrome(component: string) {\n const context = useContext(ChromeContext);\n\n if (!context) {\n throw new Error(\n `${component} must be rendered inside an ItemTable — it reads the table's search state from context.`,\n );\n }\n\n return context;\n}\n\nconst ToolbarElement = tasty({\n qa: 'ItemTableToolbar',\n as: 'div',\n styles: {\n gridRow: 1,\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n placeContent: 'space-between',\n padding: '1x',\n border: '1bw #border bottom',\n\n // Left group: search, then filters.\n Start: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n width: 'min 0',\n },\n // Right group: arbitrary consumer actions, then refresh.\n End: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n },\n },\n});\n\nconst SearchElement = tasty(SearchInput, {\n qa: 'ItemTableSearchInput',\n styles: { width: 'max
|
|
1
|
+
{"version":3,"file":"ItemTableToolbar.js","names":["tasty","createContext","useContext","useI18n","ReloadIcon","Button","SearchInput","Key","Styles","ReactNode","CubeItemTableChromeState","searchValue","setSearchValue","value","searchPlaceholder","isLoading","onRefresh","selectedKeys","selectedRows","T","selectedCount","clearSelection","ChromeContext","ItemTableChromeProvider","Provider","useItemTableChrome","component","context","Error","ToolbarElement","qa","as","styles","gridRow","display","flow","gap","placeItems","placeContent","padding","border","Start","$","width","End","SearchElement","ItemTableSearch","props","_c","t","t0","t1","t2","placeholder","t3","ItemTableToolbarProps","isSearchable","filters","actions","searchStyles","ItemTableToolbar","t4","t5","_c"],"sources":["../../../../src/components/data/ItemTable/ItemTableToolbar.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { createContext, useContext } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { ReloadIcon } from '../../../icons/ReloadIcon';\nimport { Button } from '../../actions';\nimport { SearchInput } from '../../fields/SearchInput';\n\nimport type { Key } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type { ReactNode } from 'react';\n\n/**\n * Lets `ItemTable.Search` (and future chrome pieces) read the table's state\n * without prop drilling, so a consumer can rebuild the toolbar from parts and\n * still have exactly one owner of the search term.\n */\nexport interface CubeItemTableChromeState<T = any> {\n searchValue: string;\n setSearchValue: (value: string) => void;\n searchPlaceholder?: string;\n isLoading: boolean;\n onRefresh?: () => void;\n /** `'all'` is the sentinel, so `selectedCount` is what the UI should show. */\n selectedKeys: Key[] | 'all';\n selectedRows: T[];\n selectedCount: number;\n clearSelection: () => void;\n}\n\nconst ChromeContext = createContext<CubeItemTableChromeState | null>(null);\n\nexport const ItemTableChromeProvider = ChromeContext.Provider;\n\nexport function useItemTableChrome(component: string) {\n const context = useContext(ChromeContext);\n\n if (!context) {\n throw new Error(\n `${component} must be rendered inside an ItemTable — it reads the table's search state from context.`,\n );\n }\n\n return context;\n}\n\nconst ToolbarElement = tasty({\n qa: 'ItemTableToolbar',\n as: 'div',\n styles: {\n gridRow: 1,\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n placeContent: 'space-between',\n padding: '1x',\n border: '1bw #border bottom',\n\n // Left group: search, then filters.\n Start: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n width: 'min 0',\n },\n // Right group: arbitrary consumer actions, then refresh.\n End: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n },\n },\n});\n\nconst SearchElement = tasty(SearchInput, {\n qa: 'ItemTableSearchInput',\n styles: { width: 'max 37.5x' },\n});\n\n/** The table's search input, bound to the table's own state. */\nexport function ItemTableSearch(props: {\n placeholder?: string;\n styles?: Styles;\n qa?: string;\n}) {\n const { searchValue, setSearchValue, searchPlaceholder } =\n useItemTableChrome('ItemTable.Search');\n const { t } = useI18n();\n\n return (\n <SearchElement\n isBare\n qa={props.qa}\n size=\"small\"\n isClearable\n aria-label={t('itemTable.search', 'Search')}\n placeholder={\n props.placeholder ??\n searchPlaceholder ??\n t('itemTable.searchPlaceholder', 'Search...')\n }\n value={searchValue}\n styles={props.styles}\n onChange={setSearchValue}\n />\n );\n}\n\nexport interface ItemTableToolbarProps {\n isSearchable?: boolean;\n filters?: ReactNode;\n actions?: ReactNode;\n onRefresh?: () => void;\n isLoading?: boolean;\n styles?: Styles;\n searchStyles?: Styles;\n}\n\nexport function ItemTableToolbar({\n isSearchable,\n filters,\n actions,\n onRefresh,\n isLoading,\n styles,\n searchStyles,\n}: ItemTableToolbarProps) {\n const { t } = useI18n();\n\n return (\n <ToolbarElement styles={styles} role=\"toolbar\">\n <div data-element=\"Start\">\n {isSearchable ? <ItemTableSearch styles={searchStyles} /> : null}\n {filters}\n </div>\n <div data-element=\"End\">\n {actions}\n {onRefresh ? (\n <Button\n qa=\"ItemTableRefreshButton\"\n size=\"small\"\n icon={<ReloadIcon />}\n isLoading={isLoading}\n aria-label={t('itemTable.refresh', 'Refresh')}\n onPress={onRefresh}\n />\n ) : null}\n </div>\n </ToolbarElement>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { freezeColumnWidths, useTableColumns } from "../TableBase/use-table-columns.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { isTableTreeDescendant } from "../TableBase/table-tree.js";
|
|
4
4
|
import { ItemTableDragPreview } from "./ItemTableDragPreview.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { clampPage, getPageInfo } from "../../navigation/Pagination/use-pagination.js";
|
|
4
4
|
import { reindexTableTree } from "../TableBase/table-tree.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { flattenTableTree } from "../TableBase/table-tree.js";
|
|
3
3
|
import { useTableSelection } from "../TableBase/use-table-selection.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { sortTableTree } from "../TableBase/table-tree.js";
|
|
4
4
|
import { compareByColumn, useTableSort } from "../TableBase/use-table-sort.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useWarn } from "../../../_internal/hooks/use-warn.js";
|
|
3
3
|
import { buildTableTree } from "../TableBase/table-tree.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | 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 { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { useEffect, useRef, useState } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRow.js","names":["useRef","useDraggableItem","useDropIndicator","useTreeItem","mergeProps","mergeRefs","Key","Node","ReactNode","Ref","DraggableCollectionState","DroppableCollectionState","TreeState","TableTreeNode","TableRowTreeProps","state","T","node","entry","isVirtualized","TableRowProps","rowKey","rowProps","Record","height","measureRef","HTMLTableRowElement","rowRef","index","dragState","dropState","tree","children","treeItemAria","ReturnType","Row","props","$","_c","extra","t0","t1","undefined","t2","t3","DraggableRow","key","dragResult","onRef","target","type","dropPosition","isDropTarget","isOnTarget","dragProps","isDragging","t4","t5","t6","TreeRow","length","hasChildItems","treeItemOptions","level","siblingCount","siblingIndex","next","TableRow","TableRowDropIndicatorProps","columnCount","TableRowDropIndicator","ref","dropIndicatorProps","isHidden","Math","max","_c","mergeProps","treeItemOptions"],"sources":["../../../../src/components/data/TableBase/TableRow.tsx"],"sourcesContent":["import { useRef } from 'react';\nimport { useDraggableItem, useDropIndicator, useTreeItem } from 'react-aria';\n\nimport { mergeProps, mergeRefs } from '../../../utils/react';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { ReactNode, Ref } from 'react';\nimport type {\n DraggableCollectionState,\n DroppableCollectionState,\n TreeState,\n} from 'react-stately';\nimport type { TableTreeNode } from './table-tree';\n\nexport interface TableRowTreeProps<T = any> {\n state: TreeState<TableTreeNode<T>>;\n node: Node<TableTreeNode<T>>;\n entry: TableTreeNode<T>;\n isVirtualized: boolean;\n}\n\nexport interface TableRowProps<T = any> {\n rowKey: Key;\n /** Everything the renderer already computed: mods, ARIA, handlers. */\n rowProps: Record<string, any>;\n height?: number;\n /** Set on the virtualized path so the virtualizer can measure the row. */\n measureRef?: Ref<HTMLTableRowElement>;\n /** Internal React Aria row ref in tree mode. */\n rowRef?: Ref<HTMLTableRowElement>;\n index?: number;\n dragState?: DraggableCollectionState;\n dropState?: DroppableCollectionState;\n tree?: TableRowTreeProps<T>;\n children:\n | ReactNode\n | ((treeItemAria: ReturnType<typeof useTreeItem> | undefined) => ReactNode);\n}\n\nfunction Row(\n props: TableRowProps & {\n extra?: Record<string, any>;\n rowRef?: Ref<HTMLTableRowElement>;\n },\n) {\n const { rowProps, height, measureRef, rowRef, index, extra, children } =\n props;\n\n return (\n <tr\n {...rowProps}\n {...extra}\n ref={mergeRefs(measureRef, rowRef)}\n data-index={index}\n style={height != null ? { height } : undefined}\n >\n {typeof children === 'function' ? children(undefined) : children}\n </tr>\n );\n}\n\n/**\n * A row inside a collection that accepts drags.\n *\n * Split from the plain row so the drag hooks can be called unconditionally —\n * they are hooks, and whether a table is draggable is a prop.\n */\nfunction DraggableRow(props: TableRowProps) {\n const { rowKey, dragState, dropState } = props;\n\n const dragResult = useDraggableItem(\n { key: rowKey },\n dragState as DraggableCollectionState,\n );\n\n /**\n * Whether a drop would land *on* this row.\n *\n * `useDropIndicator` rather than asking `dropState.isDropTarget` directly:\n * the state object's identity never changes as the pointer moves, so a plain\n * read is computed once and never updates. The hook subscribes, which is what\n * makes the highlight follow the cursor.\n */\n const onRef = useRef<HTMLDivElement>(null);\n const { isDropTarget: isOnTarget } = useDropIndicator(\n { target: { type: 'item', key: rowKey, dropPosition: 'on' } },\n dropState as DroppableCollectionState,\n onRef,\n );\n\n return (\n <Row\n {...props}\n extra={{\n ...mergeProps(props.rowProps, dragResult.dragProps),\n 'data-draggable': '',\n 'data-dragging': dragState!.isDragging(rowKey) ? '' : undefined,\n 'data-drop-target': isOnTarget ? '' : undefined,\n }}\n />\n );\n}\n\nfunction TreeRow<T>(props: TableRowProps<T>) {\n const { tree } = props;\n const rowRef = useRef<HTMLTableRowElement>(null);\n const treeItemOptions = {\n node: tree!.node,\n hasChildItems: tree!.entry.children.length > 0,\n isVirtualized: tree!.isVirtualized,\n };\n const treeItemAria = useTreeItem(treeItemOptions, tree!.state, rowRef);\n\n const rowProps = mergeProps(treeItemAria.rowProps, props.rowProps);\n\n // Table geometry and ItemTable selection are separate from React Aria's\n // internal focus-only selection manager, so the renderer's values win.\n if (props.rowProps['aria-rowindex'] !== undefined) {\n rowProps['aria-rowindex'] = props.rowProps['aria-rowindex'];\n }\n if (props.rowProps['aria-selected'] !== undefined) {\n rowProps['aria-selected'] = props.rowProps['aria-selected'];\n }\n rowProps['aria-level'] = tree!.entry.level + 1;\n rowProps['aria-posinset'] = tree!.entry.siblingIndex + 1;\n rowProps['aria-setsize'] = tree!.entry.siblingCount;\n\n const children =\n typeof props.children === 'function'\n ? props.children(treeItemAria)\n : props.children;\n const next = { ...props, rowProps, rowRef, children };\n\n return props.dragState && props.dropState ? (\n <DraggableRow {...next} />\n ) : (\n <Row {...next} />\n );\n}\n\nexport function TableRow<T>(props: TableRowProps<T>) {\n if (props.tree) return <TreeRow {...props} />;\n\n return props.dragState && props.dropState ? (\n <DraggableRow {...props} />\n ) : (\n <Row {...props} />\n );\n}\n\nexport interface TableRowDropIndicatorProps {\n rowKey: Key;\n dropPosition: 'before' | 'after';\n dropState: DroppableCollectionState;\n columnCount: number;\n}\n\n/**\n * The line showing where a dragged row would land.\n *\n * Its own `<tr>`, because a native table cannot hold an arbitrary element\n * between two rows — the same shape `ListBox` uses with `<li>`. It renders\n * nothing at all unless a drag is in flight, so the table's normal structure is\n * untouched the rest of the time.\n */\nexport function TableRowDropIndicator(props: TableRowDropIndicatorProps) {\n const { rowKey, dropPosition, dropState, columnCount } = props;\n const ref = useRef<HTMLDivElement>(null);\n const { dropIndicatorProps, isHidden, isDropTarget } = useDropIndicator(\n { target: { type: 'item', key: rowKey, dropPosition } },\n dropState,\n ref,\n );\n\n if (isHidden) return null;\n\n return (\n <tr data-element=\"DropIndicatorRow\">\n <td data-element=\"DropIndicatorCell\" colSpan={Math.max(columnCount, 1)}>\n <div\n {...dropIndicatorProps}\n ref={ref}\n data-element=\"DropIndicator\"\n data-drop-target={isDropTarget ? '' : undefined}\n />\n </td>\n </tr>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableRow.js","names":["useRef","useDraggableItem","useDropIndicator","useTreeItem","mergeProps","mergeRefs","Key","Node","ReactNode","Ref","DraggableCollectionState","DroppableCollectionState","TreeState","TableTreeNode","TableRowTreeProps","state","T","node","entry","isVirtualized","TableRowProps","rowKey","rowProps","Record","height","measureRef","HTMLTableRowElement","rowRef","index","dragState","dropState","tree","children","treeItemAria","ReturnType","Row","props","$","_c","extra","t0","t1","undefined","t2","t3","DraggableRow","key","dragResult","onRef","target","type","dropPosition","isDropTarget","isOnTarget","dragProps","isDragging","t4","t5","t6","TreeRow","length","hasChildItems","treeItemOptions","level","siblingCount","siblingIndex","next","TableRow","TableRowDropIndicatorProps","columnCount","TableRowDropIndicator","ref","dropIndicatorProps","isHidden","Math","max","_c","mergeProps","treeItemOptions"],"sources":["../../../../src/components/data/TableBase/TableRow.tsx"],"sourcesContent":["import { useRef } from 'react';\nimport { useDraggableItem, useDropIndicator, useTreeItem } from 'react-aria';\n\nimport { mergeProps, mergeRefs } from '../../../utils/react';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { ReactNode, Ref } from 'react';\nimport type {\n DraggableCollectionState,\n DroppableCollectionState,\n TreeState,\n} from 'react-stately';\nimport type { TableTreeNode } from './table-tree';\n\nexport interface TableRowTreeProps<T = any> {\n state: TreeState<TableTreeNode<T>>;\n node: Node<TableTreeNode<T>>;\n entry: TableTreeNode<T>;\n isVirtualized: boolean;\n}\n\nexport interface TableRowProps<T = any> {\n rowKey: Key;\n /** Everything the renderer already computed: mods, ARIA, handlers. */\n rowProps: Record<string, any>;\n height?: number;\n /** Set on the virtualized path so the virtualizer can measure the row. */\n measureRef?: Ref<HTMLTableRowElement>;\n /** Internal React Aria row ref in tree mode. */\n rowRef?: Ref<HTMLTableRowElement>;\n index?: number;\n dragState?: DraggableCollectionState;\n dropState?: DroppableCollectionState;\n tree?: TableRowTreeProps<T>;\n children:\n | ReactNode\n | ((treeItemAria: ReturnType<typeof useTreeItem> | undefined) => ReactNode);\n}\n\nfunction Row(\n props: TableRowProps & {\n extra?: Record<string, any>;\n rowRef?: Ref<HTMLTableRowElement>;\n },\n) {\n const { rowProps, height, measureRef, rowRef, index, extra, children } =\n props;\n\n return (\n <tr\n {...rowProps}\n {...extra}\n ref={mergeRefs(measureRef, rowRef)}\n data-index={index}\n // oxlint-disable-next-line tasty/no-style-prop -- a native row styled by `TableElement`; carries the virtualizer's measured height\n style={height != null ? { height } : undefined}\n >\n {typeof children === 'function' ? children(undefined) : children}\n </tr>\n );\n}\n\n/**\n * A row inside a collection that accepts drags.\n *\n * Split from the plain row so the drag hooks can be called unconditionally —\n * they are hooks, and whether a table is draggable is a prop.\n */\nfunction DraggableRow(props: TableRowProps) {\n const { rowKey, dragState, dropState } = props;\n\n const dragResult = useDraggableItem(\n { key: rowKey },\n dragState as DraggableCollectionState,\n );\n\n /**\n * Whether a drop would land *on* this row.\n *\n * `useDropIndicator` rather than asking `dropState.isDropTarget` directly:\n * the state object's identity never changes as the pointer moves, so a plain\n * read is computed once and never updates. The hook subscribes, which is what\n * makes the highlight follow the cursor.\n */\n const onRef = useRef<HTMLDivElement>(null);\n const { isDropTarget: isOnTarget } = useDropIndicator(\n { target: { type: 'item', key: rowKey, dropPosition: 'on' } },\n dropState as DroppableCollectionState,\n onRef,\n );\n\n return (\n <Row\n {...props}\n extra={{\n ...mergeProps(props.rowProps, dragResult.dragProps),\n 'data-draggable': '',\n 'data-dragging': dragState!.isDragging(rowKey) ? '' : undefined,\n 'data-drop-target': isOnTarget ? '' : undefined,\n }}\n />\n );\n}\n\nfunction TreeRow<T>(props: TableRowProps<T>) {\n const { tree } = props;\n const rowRef = useRef<HTMLTableRowElement>(null);\n const treeItemOptions = {\n node: tree!.node,\n hasChildItems: tree!.entry.children.length > 0,\n isVirtualized: tree!.isVirtualized,\n };\n const treeItemAria = useTreeItem(treeItemOptions, tree!.state, rowRef);\n\n const rowProps = mergeProps(treeItemAria.rowProps, props.rowProps);\n\n // Table geometry and ItemTable selection are separate from React Aria's\n // internal focus-only selection manager, so the renderer's values win.\n if (props.rowProps['aria-rowindex'] !== undefined) {\n rowProps['aria-rowindex'] = props.rowProps['aria-rowindex'];\n }\n if (props.rowProps['aria-selected'] !== undefined) {\n rowProps['aria-selected'] = props.rowProps['aria-selected'];\n }\n rowProps['aria-level'] = tree!.entry.level + 1;\n rowProps['aria-posinset'] = tree!.entry.siblingIndex + 1;\n rowProps['aria-setsize'] = tree!.entry.siblingCount;\n\n const children =\n typeof props.children === 'function'\n ? props.children(treeItemAria)\n : props.children;\n const next = { ...props, rowProps, rowRef, children };\n\n return props.dragState && props.dropState ? (\n <DraggableRow {...next} />\n ) : (\n <Row {...next} />\n );\n}\n\nexport function TableRow<T>(props: TableRowProps<T>) {\n if (props.tree) return <TreeRow {...props} />;\n\n return props.dragState && props.dropState ? (\n <DraggableRow {...props} />\n ) : (\n <Row {...props} />\n );\n}\n\nexport interface TableRowDropIndicatorProps {\n rowKey: Key;\n dropPosition: 'before' | 'after';\n dropState: DroppableCollectionState;\n columnCount: number;\n}\n\n/**\n * The line showing where a dragged row would land.\n *\n * Its own `<tr>`, because a native table cannot hold an arbitrary element\n * between two rows — the same shape `ListBox` uses with `<li>`. It renders\n * nothing at all unless a drag is in flight, so the table's normal structure is\n * untouched the rest of the time.\n */\nexport function TableRowDropIndicator(props: TableRowDropIndicatorProps) {\n const { rowKey, dropPosition, dropState, columnCount } = props;\n const ref = useRef<HTMLDivElement>(null);\n const { dropIndicatorProps, isHidden, isDropTarget } = useDropIndicator(\n { target: { type: 'item', key: rowKey, dropPosition } },\n dropState,\n ref,\n );\n\n if (isHidden) return null;\n\n return (\n <tr data-element=\"DropIndicatorRow\">\n <td data-element=\"DropIndicatorCell\" colSpan={Math.max(columnCount, 1)}>\n <div\n {...dropIndicatorProps}\n ref={ref}\n data-element=\"DropIndicator\"\n data-drop-target={isDropTarget ? '' : undefined}\n />\n </td>\n </tr>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useSlotProps } from "../../../utils/react/Slots.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
|
|
@@ -1092,18 +1092,15 @@ function TableView(props) {
|
|
|
1092
1092
|
pinnedBottomRows?.map((row, index) => renderPinnedRow(row, index, "bottom")),
|
|
1093
1093
|
isLoadingMore ? renderSkeletonRows(loadMoreSkeletonCount, "load-more") : null,
|
|
1094
1094
|
onLoadMore && hasRows ? /* @__PURE__ */ jsx("tr", {
|
|
1095
|
+
"data-element": "SentinelRow",
|
|
1095
1096
|
"data-sentinel": "",
|
|
1096
1097
|
"aria-hidden": "true",
|
|
1097
1098
|
children: /* @__PURE__ */ jsx("td", {
|
|
1099
|
+
"data-element": "SentinelCell",
|
|
1098
1100
|
colSpan: Math.max(columnCount, 1),
|
|
1099
|
-
style: {
|
|
1100
|
-
height: 1,
|
|
1101
|
-
padding: 0,
|
|
1102
|
-
border: 0
|
|
1103
|
-
},
|
|
1104
1101
|
children: /* @__PURE__ */ jsx("div", {
|
|
1105
1102
|
ref: sentinelRef,
|
|
1106
|
-
|
|
1103
|
+
"data-element": "Sentinel"
|
|
1107
1104
|
})
|
|
1108
1105
|
})
|
|
1109
1106
|
}) : null
|