@mui/x-tree-view 8.27.1 → 9.0.0-alpha.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/CHANGELOG.md +204 -5
- package/RichTreeView/RichTreeView.js +32 -19
- package/RichTreeView/RichTreeView.types.d.ts +2 -5
- package/RichTreeView/useExtractRichTreeViewParameters.js +9 -5
- package/SimpleTreeView/SimpleTreeView.js +5 -0
- package/SimpleTreeView/useExtractSimpleTreeViewParameters.js +6 -4
- package/TreeItem/TreeItem.d.ts +1 -1
- package/TreeItem/TreeItem.js +3 -2
- package/TreeItemIcon/TreeItemIcon.js +2 -2
- package/esm/RichTreeView/RichTreeView.js +32 -19
- package/esm/RichTreeView/RichTreeView.types.d.ts +2 -5
- package/esm/RichTreeView/useExtractRichTreeViewParameters.js +9 -5
- package/esm/SimpleTreeView/SimpleTreeView.js +5 -0
- package/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.js +6 -4
- package/esm/TreeItem/TreeItem.d.ts +1 -1
- package/esm/TreeItem/TreeItem.js +2 -1
- package/esm/TreeItemIcon/TreeItemIcon.js +1 -1
- package/esm/index.js +1 -1
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +10 -6
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +1 -1
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +2 -2
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +14 -1
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.js +2 -1
- package/esm/internals/TreeViewProvider/index.d.ts +1 -0
- package/esm/internals/TreeViewProvider/index.js +2 -1
- package/esm/internals/components/RichTreeViewItems.d.ts +29 -5
- package/esm/internals/components/RichTreeViewItems.js +25 -7
- package/esm/internals/hooks/useTreeViewRootProps.d.ts +2 -1
- package/esm/internals/index.d.ts +3 -3
- package/esm/internals/index.js +2 -2
- package/esm/internals/plugins/items/selectors.d.ts +6 -1
- package/esm/internals/plugins/items/selectors.js +5 -1
- package/esm/models/domStructure.d.ts +1 -0
- package/esm/models/domStructure.js +1 -0
- package/esm/models/index.d.ts +1 -0
- package/esm/models/index.js +1 -0
- package/esm/useTreeItem/useTreeItem.js +3 -0
- package/index.js +1 -1
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +10 -6
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +1 -1
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +2 -2
- package/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +14 -1
- package/internals/RichTreeViewStore/RichTreeViewStore.utils.js +2 -1
- package/internals/TreeViewProvider/index.d.ts +1 -0
- package/internals/TreeViewProvider/index.js +8 -1
- package/internals/components/RichTreeViewItems.d.ts +29 -5
- package/internals/components/RichTreeViewItems.js +25 -6
- package/internals/hooks/useTreeViewRootProps.d.ts +2 -1
- package/internals/index.d.ts +3 -3
- package/internals/index.js +12 -0
- package/internals/plugins/items/selectors.d.ts +6 -1
- package/internals/plugins/items/selectors.js +5 -1
- package/models/domStructure.d.ts +1 -0
- package/models/domStructure.js +5 -0
- package/models/index.d.ts +1 -0
- package/models/index.js +11 -0
- package/package.json +4 -4
- package/useTreeItem/useTreeItem.js +3 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Theme } from '@mui/material/styles';
|
|
3
3
|
import { SxProps } from '@mui/system/styleFunctionSx';
|
|
4
|
-
import { SlotComponentProps } from '@mui/utils/types';
|
|
5
4
|
import { RichTreeViewClasses } from "./richTreeViewClasses.js";
|
|
6
5
|
import { RichTreeViewItemsSlotProps, RichTreeViewItemsSlots } from "../internals/components/RichTreeViewItems.js";
|
|
7
6
|
import { TreeViewSlotProps, TreeViewSlots } from "../internals/TreeViewProvider/TreeViewStyleContext.js";
|
|
@@ -9,16 +8,14 @@ import { RichTreeViewStore } from "../internals/RichTreeViewStore/index.js";
|
|
|
9
8
|
import { TreeViewValidItem } from "../models/items.js";
|
|
10
9
|
import { UseTreeViewStoreParameters } from "../internals/hooks/useTreeViewStore.js";
|
|
11
10
|
import { TreeViewPublicAPI } from "../internals/models/index.js";
|
|
12
|
-
export interface RichTreeViewSlots extends TreeViewSlots, RichTreeViewItemsSlots {
|
|
11
|
+
export interface RichTreeViewSlots extends TreeViewSlots, Omit<RichTreeViewItemsSlots, 'root'> {
|
|
13
12
|
/**
|
|
14
13
|
* Element rendered at the root.
|
|
15
14
|
* @default RichTreeViewRoot
|
|
16
15
|
*/
|
|
17
16
|
root?: React.ElementType;
|
|
18
17
|
}
|
|
19
|
-
export interface RichTreeViewSlotProps<R extends {}, Multiple extends boolean | undefined> extends TreeViewSlotProps, RichTreeViewItemsSlotProps {
|
|
20
|
-
root?: SlotComponentProps<'ul', {}, RichTreeViewProps<R, Multiple>>;
|
|
21
|
-
}
|
|
18
|
+
export interface RichTreeViewSlotProps<R extends {}, Multiple extends boolean | undefined> extends TreeViewSlotProps, RichTreeViewItemsSlotProps<RichTreeViewProps<R, Multiple>> {}
|
|
22
19
|
export type RichTreeViewApiRef<R extends TreeViewValidItem<R> = any, Multiple extends boolean | undefined = any> = React.RefObject<Partial<TreeViewPublicAPI<RichTreeViewStore<R, Multiple>>> | undefined>;
|
|
23
20
|
export interface RichTreeViewPropsBase extends React.HTMLAttributes<HTMLUListElement> {
|
|
24
21
|
className?: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
|
-
const _excluded = ["apiRef", "slots", "slotProps", "disabledItemsFocusable", "items", "isItemDisabled", "isItemSelectionDisabled", "getItemLabel", "getItemChildren", "getItemId", "onItemClick", "itemChildrenIndentation", "id", "expandedItems", "defaultExpandedItems", "onExpandedItemsChange", "onItemExpansionToggle", "expansionTrigger", "disableSelection", "selectedItems", "defaultSelectedItems", "multiSelect", "checkboxSelection", "selectionPropagation", "onSelectedItemsChange", "onItemSelectionToggle", "onItemFocus", "onItemLabelChange", "isItemEditable"];
|
|
2
|
+
const _excluded = ["apiRef", "slots", "slotProps", "disabledItemsFocusable", "items", "isItemDisabled", "isItemSelectionDisabled", "getItemLabel", "getItemChildren", "getItemId", "onItemClick", "itemChildrenIndentation", "id", "expandedItems", "defaultExpandedItems", "onExpandedItemsChange", "onItemExpansionToggle", "expansionTrigger", "disableSelection", "selectedItems", "defaultSelectedItems", "multiSelect", "checkboxSelection", "selectionPropagation", "onSelectedItemsChange", "onItemSelectionToggle", "onItemFocus", "itemHeight", "onItemLabelChange", "isItemEditable", "domStructure"];
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
export function useExtractRichTreeViewParameters(props) {
|
|
5
5
|
const {
|
|
@@ -32,9 +32,11 @@ export function useExtractRichTreeViewParameters(props) {
|
|
|
32
32
|
onSelectedItemsChange,
|
|
33
33
|
onItemSelectionToggle,
|
|
34
34
|
onItemFocus,
|
|
35
|
+
itemHeight,
|
|
35
36
|
// RichTreeViewStore parameters
|
|
36
37
|
onItemLabelChange,
|
|
37
|
-
isItemEditable
|
|
38
|
+
isItemEditable,
|
|
39
|
+
domStructure
|
|
38
40
|
|
|
39
41
|
// Forwarded props
|
|
40
42
|
} = props,
|
|
@@ -65,14 +67,16 @@ export function useExtractRichTreeViewParameters(props) {
|
|
|
65
67
|
onSelectedItemsChange,
|
|
66
68
|
onItemSelectionToggle,
|
|
67
69
|
onItemFocus,
|
|
70
|
+
itemHeight,
|
|
68
71
|
// RichTreeViewStore parameters
|
|
69
72
|
onItemLabelChange,
|
|
70
|
-
isItemEditable
|
|
73
|
+
isItemEditable,
|
|
74
|
+
domStructure
|
|
71
75
|
}), [
|
|
72
76
|
// Shared parameters
|
|
73
|
-
disabledItemsFocusable, items, isItemDisabled, isItemSelectionDisabled, getItemLabel, getItemChildren, getItemId, onItemClick, itemChildrenIndentation, id, expandedItems, defaultExpandedItems, onExpandedItemsChange, onItemExpansionToggle, expansionTrigger, disableSelection, selectedItems, defaultSelectedItems, multiSelect, checkboxSelection, selectionPropagation, onSelectedItemsChange, onItemSelectionToggle, onItemFocus,
|
|
77
|
+
disabledItemsFocusable, items, isItemDisabled, isItemSelectionDisabled, getItemLabel, getItemChildren, getItemId, onItemClick, itemChildrenIndentation, id, expandedItems, defaultExpandedItems, onExpandedItemsChange, onItemExpansionToggle, expansionTrigger, disableSelection, selectedItems, defaultSelectedItems, multiSelect, checkboxSelection, selectionPropagation, onSelectedItemsChange, onItemSelectionToggle, onItemFocus, itemHeight,
|
|
74
78
|
// RichTreeViewStore parameters
|
|
75
|
-
onItemLabelChange, isItemEditable]);
|
|
79
|
+
onItemLabelChange, isItemEditable, domStructure]);
|
|
76
80
|
return {
|
|
77
81
|
apiRef,
|
|
78
82
|
slots,
|
|
@@ -185,6 +185,11 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
185
185
|
* @default 12px
|
|
186
186
|
*/
|
|
187
187
|
itemChildrenIndentation: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
188
|
+
/**
|
|
189
|
+
* Sets the height in pixel of an item.
|
|
190
|
+
* If not provided, no height restriction is applied to the tree item content element.
|
|
191
|
+
*/
|
|
192
|
+
itemHeight: PropTypes.number,
|
|
188
193
|
/**
|
|
189
194
|
* Whether multiple items can be selected.
|
|
190
195
|
* @default false
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
|
-
const _excluded = ["apiRef", "slots", "slotProps", "disabledItemsFocusable", "onItemClick", "itemChildrenIndentation", "id", "expandedItems", "defaultExpandedItems", "onExpandedItemsChange", "onItemExpansionToggle", "expansionTrigger", "disableSelection", "selectedItems", "defaultSelectedItems", "multiSelect", "checkboxSelection", "selectionPropagation", "onSelectedItemsChange", "onItemSelectionToggle", "onItemFocus"];
|
|
2
|
+
const _excluded = ["apiRef", "slots", "slotProps", "disabledItemsFocusable", "onItemClick", "itemChildrenIndentation", "id", "expandedItems", "defaultExpandedItems", "onExpandedItemsChange", "onItemExpansionToggle", "expansionTrigger", "disableSelection", "selectedItems", "defaultSelectedItems", "multiSelect", "checkboxSelection", "selectionPropagation", "onSelectedItemsChange", "onItemSelectionToggle", "onItemFocus", "itemHeight"];
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
export function useExtractSimpleTreeViewParameters(props) {
|
|
5
5
|
const {
|
|
@@ -25,7 +25,8 @@ export function useExtractSimpleTreeViewParameters(props) {
|
|
|
25
25
|
selectionPropagation,
|
|
26
26
|
onSelectedItemsChange,
|
|
27
27
|
onItemSelectionToggle,
|
|
28
|
-
onItemFocus
|
|
28
|
+
onItemFocus,
|
|
29
|
+
itemHeight
|
|
29
30
|
|
|
30
31
|
// SimpleTreeViewStore parameters
|
|
31
32
|
|
|
@@ -51,12 +52,13 @@ export function useExtractSimpleTreeViewParameters(props) {
|
|
|
51
52
|
selectionPropagation,
|
|
52
53
|
onSelectedItemsChange,
|
|
53
54
|
onItemSelectionToggle,
|
|
54
|
-
onItemFocus
|
|
55
|
+
onItemFocus,
|
|
56
|
+
itemHeight
|
|
55
57
|
|
|
56
58
|
// SimpleTreeViewStore parameters
|
|
57
59
|
}), [
|
|
58
60
|
// Shared parameters
|
|
59
|
-
disabledItemsFocusable, onItemClick, itemChildrenIndentation, id, expandedItems, defaultExpandedItems, onExpandedItemsChange, onItemExpansionToggle, expansionTrigger, disableSelection, selectedItems, defaultSelectedItems, multiSelect, checkboxSelection, selectionPropagation, onSelectedItemsChange, onItemSelectionToggle, onItemFocus
|
|
61
|
+
disabledItemsFocusable, onItemClick, itemChildrenIndentation, id, expandedItems, defaultExpandedItems, onExpandedItemsChange, onItemExpansionToggle, expansionTrigger, disableSelection, selectedItems, defaultSelectedItems, multiSelect, checkboxSelection, selectionPropagation, onSelectedItemsChange, onItemSelectionToggle, onItemFocus, itemHeight
|
|
60
62
|
|
|
61
63
|
// SimpleTreeViewStore parameters
|
|
62
64
|
]);
|
|
@@ -15,7 +15,7 @@ export declare const TreeItemErrorContainer: import("@emotion/styled").StyledCom
|
|
|
15
15
|
export declare const TreeItemLoadingContainer: import("@emotion/styled").StyledComponent<Pick<import("@mui/material/CircularProgress").CircularProgressProps, keyof import("@mui/material/CircularProgress").CircularProgressProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
16
16
|
export declare const TreeItemCheckbox: import("@emotion/styled").StyledComponent<Pick<Omit<CheckboxProps & {
|
|
17
17
|
visible?: boolean;
|
|
18
|
-
}, "ref"> & React.RefAttributes<HTMLButtonElement>, "form" | "slot" | "style" | "title" | "aria-expanded" | "aria-disabled" | "onDoubleClick" | "aria-hidden" | "content" | "disabled" | "slots" | "slotProps" | "className" | "classes" | "color" | "sx" | "suppressHydrationWarning" | "id" | "lang" | "name" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-dropeffect" | "aria-errormessage" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "icon" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "action" | "checked" | "visible" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "hidden" | "
|
|
18
|
+
}, "ref"> & React.RefAttributes<HTMLButtonElement>, "form" | "slot" | "style" | "title" | "aria-expanded" | "aria-disabled" | "onDoubleClick" | "aria-hidden" | "content" | "disabled" | "slots" | "slotProps" | "className" | "classes" | "color" | "sx" | "suppressHydrationWarning" | "id" | "lang" | "name" | "nonce" | "part" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-dropeffect" | "aria-errormessage" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "icon" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "action" | "checked" | "visible" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "hidden" | "spellCheck" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "popover" | "popoverTargetAction" | "popoverTarget" | "inert" | "inputMode" | "is" | "exportparts" | "indeterminate" | "readOnly" | "required" | "size" | "component" | "checkedIcon" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "inputProps" | "inputRef" | "indeterminateIcon" | keyof React.RefAttributes<HTMLButtonElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
19
19
|
type TreeItemComponent = ((props: TreeItemProps & React.RefAttributes<HTMLLIElement>) => React.JSX.Element) & {
|
|
20
20
|
propTypes?: any;
|
|
21
21
|
};
|
package/esm/TreeItem/TreeItem.js
CHANGED
|
@@ -22,7 +22,7 @@ import { TreeItemIcon } from "../TreeItemIcon/index.js";
|
|
|
22
22
|
import { TreeItemDragAndDropOverlay } from "../TreeItemDragAndDropOverlay/index.js";
|
|
23
23
|
import { TreeItemProvider } from "../TreeItemProvider/index.js";
|
|
24
24
|
import { TreeItemLabelInput } from "../TreeItemLabelInput/index.js";
|
|
25
|
-
import { useTreeViewStyleContext } from "../internals/TreeViewProvider/
|
|
25
|
+
import { useTreeViewStyleContext } from "../internals/TreeViewProvider/index.js";
|
|
26
26
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
27
27
|
const useThemeProps = createUseThemeProps('MuiTreeItem');
|
|
28
28
|
export const TreeItemRoot = styled('li', {
|
|
@@ -45,6 +45,7 @@ export const TreeItemContent = styled('div', {
|
|
|
45
45
|
paddingLeft: `calc(${theme.spacing(1)} + var(--TreeView-itemChildrenIndentation) * var(--TreeView-itemDepth))`,
|
|
46
46
|
borderRadius: theme.shape.borderRadius,
|
|
47
47
|
width: '100%',
|
|
48
|
+
height: 'var(--TreeView-itemHeight, unset)',
|
|
48
49
|
boxSizing: 'border-box',
|
|
49
50
|
// prevent width + padding to overflow
|
|
50
51
|
position: 'relative',
|
|
@@ -7,7 +7,7 @@ import * as React from 'react';
|
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
9
9
|
import useSlotProps from '@mui/utils/useSlotProps';
|
|
10
|
-
import { useTreeViewStyleContext } from "../internals/TreeViewProvider/
|
|
10
|
+
import { useTreeViewStyleContext } from "../internals/TreeViewProvider/index.js";
|
|
11
11
|
import { TreeViewCollapseIcon, TreeViewExpandIcon } from "../icons/index.js";
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
13
|
function pickIcon(treeItemIcon, treeViewIcon, fallback) {
|
package/esm/index.js
CHANGED
|
@@ -36,12 +36,6 @@ export interface MinimalTreeViewState<R extends TreeViewValidItem<R>, Multiple e
|
|
|
36
36
|
[itemId: string]: number;
|
|
37
37
|
};
|
|
38
38
|
};
|
|
39
|
-
/**
|
|
40
|
-
* When equal to 'flat', the tree is rendered as a flat list (children are rendered as siblings of their parents).
|
|
41
|
-
* When equal to 'nested', the tree is rendered with nested children (children are rendered inside the groupTransition slot of their children).
|
|
42
|
-
* Nested DOM structure is not compatible with collapse / expansion animations.
|
|
43
|
-
*/
|
|
44
|
-
domStructure: 'flat' | 'nested';
|
|
45
39
|
/**
|
|
46
40
|
* Horizontal indentation between an item and its children.
|
|
47
41
|
* Examples: 24, "24px", "2rem", "2em".
|
|
@@ -87,6 +81,11 @@ export interface MinimalTreeViewState<R extends TreeViewValidItem<R>, Multiple e
|
|
|
87
81
|
* The id of the currently focused item.
|
|
88
82
|
*/
|
|
89
83
|
focusedItemId: TreeViewItemId | null;
|
|
84
|
+
/**
|
|
85
|
+
* The default height of each item in the tree view.
|
|
86
|
+
* If not provided, no height restriction is applied to the tree item content element.
|
|
87
|
+
*/
|
|
88
|
+
itemHeight: number | null;
|
|
90
89
|
}
|
|
91
90
|
export interface MinimalTreeViewParameters<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined> {
|
|
92
91
|
/**
|
|
@@ -249,6 +248,11 @@ export interface MinimalTreeViewParameters<R extends TreeViewValidItem<R>, Multi
|
|
|
249
248
|
* @param {TreeViewItemId} itemId The id of the focused item.
|
|
250
249
|
*/
|
|
251
250
|
onItemFocus?: (event: React.SyntheticEvent | null, itemId: TreeViewItemId) => void;
|
|
251
|
+
/**
|
|
252
|
+
* Sets the height in pixel of an item.
|
|
253
|
+
* If not provided, no height restriction is applied to the tree item content element.
|
|
254
|
+
*/
|
|
255
|
+
itemHeight?: number;
|
|
252
256
|
}
|
|
253
257
|
/**
|
|
254
258
|
* Mapper between a Tree View instance's state and parameters.
|
|
@@ -8,7 +8,6 @@ export declare function deriveStateFromParameters<R extends TreeViewValidItem<R>
|
|
|
8
8
|
isItemEditable?: any;
|
|
9
9
|
}): {
|
|
10
10
|
disabledItemsFocusable: boolean;
|
|
11
|
-
domStructure: "nested";
|
|
12
11
|
itemChildrenIndentation: string | number;
|
|
13
12
|
providedTreeId: string | undefined;
|
|
14
13
|
expansionTrigger: "content" | "iconContainer";
|
|
@@ -16,6 +15,7 @@ export declare function deriveStateFromParameters<R extends TreeViewValidItem<R>
|
|
|
16
15
|
multiSelect: boolean | NonNullable<Multiple>;
|
|
17
16
|
checkboxSelection: boolean;
|
|
18
17
|
selectionPropagation: Readonly<{}>;
|
|
18
|
+
itemHeight: number | null;
|
|
19
19
|
};
|
|
20
20
|
export declare function createMinimalInitialState<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined>(parameters: MinimalTreeViewParameters<R, Multiple>): MinimalTreeViewState<R, Multiple>;
|
|
21
21
|
export declare const createTreeViewDefaultId: () => string;
|
|
@@ -10,7 +10,6 @@ import { TreeViewItemsPlugin } from "../plugins/items/index.js";
|
|
|
10
10
|
export function deriveStateFromParameters(parameters) {
|
|
11
11
|
return {
|
|
12
12
|
disabledItemsFocusable: parameters.disabledItemsFocusable ?? false,
|
|
13
|
-
domStructure: 'nested',
|
|
14
13
|
itemChildrenIndentation: parameters.itemChildrenIndentation ?? '12px',
|
|
15
14
|
providedTreeId: parameters.id,
|
|
16
15
|
// TODO: Fix
|
|
@@ -21,7 +20,8 @@ export function deriveStateFromParameters(parameters) {
|
|
|
21
20
|
disableSelection: parameters.disableSelection ?? false,
|
|
22
21
|
multiSelect: parameters.multiSelect ?? false,
|
|
23
22
|
checkboxSelection: parameters.checkboxSelection ?? false,
|
|
24
|
-
selectionPropagation: parameters.selectionPropagation ?? EMPTY_OBJECT
|
|
23
|
+
selectionPropagation: parameters.selectionPropagation ?? EMPTY_OBJECT,
|
|
24
|
+
itemHeight: parameters.itemHeight ?? null
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
27
|
function applyModelInitialValue(controlledValue, defaultValue, fallback) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TreeViewItemId, TreeViewValidItem } from "../../models/index.js";
|
|
1
|
+
import { TreeViewDOMStructure, TreeViewItemId, TreeViewValidItem } from "../../models/index.js";
|
|
2
2
|
import { MinimalTreeViewParameters, MinimalTreeViewState } from "../MinimalTreeViewStore/index.js";
|
|
3
3
|
import { RichTreeViewLazyLoadedItemsStatus } from "../plugins/lazyLoading/index.js";
|
|
4
4
|
export interface RichTreeViewState<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined> extends MinimalTreeViewState<R, Multiple> {
|
|
@@ -15,6 +15,12 @@ export interface RichTreeViewState<R extends TreeViewValidItem<R>, Multiple exte
|
|
|
15
15
|
* Is null if lazy loading is not enabled.
|
|
16
16
|
*/
|
|
17
17
|
lazyLoadedItems: RichTreeViewLazyLoadedItemsStatus | null;
|
|
18
|
+
/**
|
|
19
|
+
* When equal to 'flat', the tree is rendered as a flat list (children are rendered as siblings of their parents).
|
|
20
|
+
* When equal to 'nested', the tree is rendered with nested children (children are rendered inside the groupTransition slot of their children).
|
|
21
|
+
* Nested DOM structure is not compatible with collapse / expansion animations.
|
|
22
|
+
*/
|
|
23
|
+
domStructure: TreeViewDOMStructure;
|
|
18
24
|
}
|
|
19
25
|
export interface RichTreeViewStoreParameters<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined> extends MinimalTreeViewParameters<R, Multiple> {
|
|
20
26
|
/**
|
|
@@ -31,4 +37,11 @@ export interface RichTreeViewStoreParameters<R extends TreeViewValidItem<R>, Mul
|
|
|
31
37
|
* @default () => false
|
|
32
38
|
*/
|
|
33
39
|
isItemEditable?: boolean | ((item: R) => boolean);
|
|
40
|
+
/**
|
|
41
|
+
* When equal to 'flat', the tree is rendered as a flat list (children are rendered as siblings of their parents).
|
|
42
|
+
* When equal to 'nested', the tree is rendered with nested children (children are rendered inside the groupTransition slot of their children).
|
|
43
|
+
* Nested DOM structure is not compatible with collapse / expansion animations.
|
|
44
|
+
* @default 'nested'
|
|
45
|
+
*/
|
|
46
|
+
domStructure?: TreeViewDOMStructure;
|
|
34
47
|
}
|
|
@@ -5,7 +5,8 @@ const deriveStateFromParameters = parameters => ({
|
|
|
5
5
|
export const parametersToStateMapper = {
|
|
6
6
|
getInitialState: (minimalInitialState, parameters) => _extends({}, minimalInitialState, deriveStateFromParameters(parameters), {
|
|
7
7
|
editedItemId: null,
|
|
8
|
-
lazyLoadedItems: null
|
|
8
|
+
lazyLoadedItems: null,
|
|
9
|
+
domStructure: parameters.domStructure ?? 'nested'
|
|
9
10
|
}),
|
|
10
11
|
updateStateFromParameters: (newMinimalState, parameters) => {
|
|
11
12
|
const newState = _extends({}, newMinimalState, deriveStateFromParameters(parameters));
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { TreeViewProvider } from "./TreeViewProvider.js";
|
|
2
2
|
export { useTreeViewContext } from "./TreeViewContext.js";
|
|
3
|
+
export { useTreeViewStyleContext } from "./TreeViewStyleContext.js";
|
|
3
4
|
export type { TreeViewProviderProps, TreeViewContextValue, TreeViewItemPluginsRunner, TreeViewStoreInContext } from "./TreeViewProvider.types.js";
|
|
@@ -2,31 +2,55 @@ import * as React from 'react';
|
|
|
2
2
|
import { SlotComponentProps } from '@mui/utils/types';
|
|
3
3
|
import { TreeItem, TreeItemProps } from "../../TreeItem/index.js";
|
|
4
4
|
import { TreeViewItemId } from "../../models/index.js";
|
|
5
|
-
export declare
|
|
5
|
+
export declare const RichTreeViewItem: React.NamedExoticComponent<RichTreeViewItemProps>;
|
|
6
|
+
export declare function RichTreeViewItems<TProps extends object>(props: RichTreeViewItemsProps<TProps>): import("react/jsx-runtime").JSX.Element;
|
|
6
7
|
interface RichTreeViewItemsOwnerState {
|
|
7
8
|
itemId: TreeViewItemId;
|
|
8
9
|
label: string;
|
|
9
10
|
}
|
|
10
11
|
export interface RichTreeViewItemsSlots {
|
|
12
|
+
/**
|
|
13
|
+
* Element rendered at the root.
|
|
14
|
+
* @default RichTreeViewProRoot
|
|
15
|
+
*/
|
|
16
|
+
root: React.ElementType;
|
|
11
17
|
/**
|
|
12
18
|
* Custom component to render a Tree Item.
|
|
13
19
|
* @default TreeItem.
|
|
14
20
|
*/
|
|
15
21
|
item?: React.JSXElementConstructor<TreeItemProps>;
|
|
16
22
|
}
|
|
17
|
-
export interface RichTreeViewItemsSlotProps {
|
|
23
|
+
export interface RichTreeViewItemsSlotProps<TProps extends object> {
|
|
18
24
|
item?: SlotComponentProps<typeof TreeItem, {}, RichTreeViewItemsOwnerState>;
|
|
25
|
+
root?: SlotComponentProps<'ul', {}, TProps>;
|
|
19
26
|
}
|
|
20
|
-
export interface RichTreeViewItemsProps {
|
|
27
|
+
export interface RichTreeViewItemsProps<TProps extends object> {
|
|
21
28
|
/**
|
|
22
29
|
* Overridable component slots.
|
|
23
30
|
* @default {}
|
|
24
31
|
*/
|
|
25
|
-
slots
|
|
32
|
+
slots: RichTreeViewItemsSlots;
|
|
26
33
|
/**
|
|
27
34
|
* The props used for each component slot.
|
|
28
35
|
* @default {}
|
|
29
36
|
*/
|
|
30
|
-
slotProps?: RichTreeViewItemsSlotProps
|
|
37
|
+
slotProps?: RichTreeViewItemsSlotProps<TProps>;
|
|
38
|
+
/**
|
|
39
|
+
* Owner state applied to the root slot component.
|
|
40
|
+
*/
|
|
41
|
+
ownerState: TProps;
|
|
42
|
+
/**
|
|
43
|
+
* Props provided to the component and applied to the root element.
|
|
44
|
+
*/
|
|
45
|
+
forwardedProps: React.HTMLAttributes<HTMLUListElement>;
|
|
46
|
+
/**
|
|
47
|
+
* Ref forwarded to the root element.
|
|
48
|
+
*/
|
|
49
|
+
rootRef: React.Ref<HTMLUListElement>;
|
|
50
|
+
}
|
|
51
|
+
interface RichTreeViewItemProps extends Pick<TreeItemProps, 'id' | 'itemId' | 'children'> {
|
|
52
|
+
itemSlot: React.JSXElementConstructor<TreeItemProps> | undefined;
|
|
53
|
+
itemSlotProps: SlotComponentProps<typeof TreeItem, {}, RichTreeViewItemsOwnerState> | undefined;
|
|
54
|
+
skipChildren: boolean;
|
|
31
55
|
}
|
|
32
56
|
export {};
|
|
@@ -10,14 +10,15 @@ import useSlotProps from '@mui/utils/useSlotProps';
|
|
|
10
10
|
import { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';
|
|
11
11
|
import { TreeItem } from "../../TreeItem/index.js";
|
|
12
12
|
import { itemsSelectors } from "../plugins/items/index.js";
|
|
13
|
-
import { useTreeViewContext } from "../TreeViewProvider/index.js";
|
|
13
|
+
import { useTreeViewContext, useTreeViewStyleContext } from "../TreeViewProvider/index.js";
|
|
14
14
|
import { expansionSelectors } from "../plugins/expansion/index.js";
|
|
15
|
+
import { useTreeViewRootProps } from "../hooks/useTreeViewRootProps.js";
|
|
15
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
17
|
const RichTreeViewItemsContext = /*#__PURE__*/React.createContext(null);
|
|
17
18
|
if (process.env.NODE_ENV !== "production") RichTreeViewItemsContext.displayName = "RichTreeViewItemsContext";
|
|
18
19
|
const selectorNoChildren = () => EMPTY_ARRAY;
|
|
19
20
|
const selectorChildrenIdsNull = state => itemsSelectors.itemOrderedChildrenIds(state, null);
|
|
20
|
-
const
|
|
21
|
+
export const RichTreeViewItem = /*#__PURE__*/React.memo(function RichTreeViewItem({
|
|
21
22
|
itemSlot,
|
|
22
23
|
itemSlotProps,
|
|
23
24
|
itemId,
|
|
@@ -45,25 +46,40 @@ const WrappedTreeItem = /*#__PURE__*/React.memo(function WrappedTreeItem({
|
|
|
45
46
|
}),
|
|
46
47
|
itemProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded);
|
|
47
48
|
return /*#__PURE__*/_jsx(Item, _extends({}, itemProps, {
|
|
48
|
-
children: children?.map(renderItemForRichTreeView)
|
|
49
|
+
children: renderItemForRichTreeView ? children?.map(renderItemForRichTreeView) : null
|
|
49
50
|
}));
|
|
50
51
|
}, fastObjectShallowCompare);
|
|
51
|
-
if (process.env.NODE_ENV !== "production")
|
|
52
|
+
if (process.env.NODE_ENV !== "production") RichTreeViewItem.displayName = "RichTreeViewItem";
|
|
52
53
|
export function RichTreeViewItems(props) {
|
|
53
54
|
const {
|
|
54
55
|
slots,
|
|
55
|
-
slotProps
|
|
56
|
+
slotProps,
|
|
57
|
+
ownerState,
|
|
58
|
+
forwardedProps,
|
|
59
|
+
rootRef
|
|
56
60
|
} = props;
|
|
57
61
|
const {
|
|
58
62
|
store
|
|
59
63
|
} = useTreeViewContext();
|
|
64
|
+
const {
|
|
65
|
+
classes
|
|
66
|
+
} = useTreeViewStyleContext();
|
|
60
67
|
const itemSlot = slots?.item;
|
|
61
68
|
const itemSlotProps = slotProps?.item;
|
|
62
69
|
const domStructure = useStore(store, itemsSelectors.domStructure);
|
|
63
70
|
const items = useStore(store, domStructure === 'flat' ? expansionSelectors.flatList : selectorChildrenIdsNull);
|
|
71
|
+
const getRootProps = useTreeViewRootProps(store, forwardedProps, rootRef);
|
|
72
|
+
const Root = slots.root;
|
|
73
|
+
const rootProps = useSlotProps({
|
|
74
|
+
elementType: Root,
|
|
75
|
+
externalSlotProps: slotProps?.root,
|
|
76
|
+
className: classes.root,
|
|
77
|
+
getSlotProps: getRootProps,
|
|
78
|
+
ownerState
|
|
79
|
+
});
|
|
64
80
|
const skipChildren = domStructure === 'flat';
|
|
65
81
|
const renderItem = React.useCallback(itemId => {
|
|
66
|
-
return /*#__PURE__*/_jsx(
|
|
82
|
+
return /*#__PURE__*/_jsx(RichTreeViewItem, {
|
|
67
83
|
itemSlot: itemSlot,
|
|
68
84
|
itemSlotProps: itemSlotProps,
|
|
69
85
|
itemId: itemId,
|
|
@@ -72,6 +88,8 @@ export function RichTreeViewItems(props) {
|
|
|
72
88
|
}, [itemSlot, itemSlotProps, skipChildren]);
|
|
73
89
|
return /*#__PURE__*/_jsx(RichTreeViewItemsContext.Provider, {
|
|
74
90
|
value: renderItem,
|
|
75
|
-
children:
|
|
91
|
+
children: /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {
|
|
92
|
+
children: items.map(renderItem)
|
|
93
|
+
}))
|
|
76
94
|
});
|
|
77
95
|
}
|
|
@@ -2,7 +2,8 @@ import * as React from 'react';
|
|
|
2
2
|
import { EventHandlers } from '@mui/utils/types';
|
|
3
3
|
import { TreeViewCancellableEvent } from "../../models/index.js";
|
|
4
4
|
import { TreeViewAnyStore } from "../models/index.js";
|
|
5
|
-
|
|
5
|
+
import { TreeViewStoreInContext } from "../TreeViewProvider/index.js";
|
|
6
|
+
export declare function useTreeViewRootProps<TStore extends TreeViewAnyStore>(store: TreeViewStoreInContext<TStore>, forwardedProps: React.HTMLAttributes<HTMLUListElement>, ref: React.Ref<HTMLUListElement | null> | undefined): (otherHandlers: EventHandlers) => {
|
|
6
7
|
style: React.CSSProperties;
|
|
7
8
|
onFocus: (event: React.FocusEvent<HTMLUListElement> & TreeViewCancellableEvent) => void;
|
|
8
9
|
onBlur: (event: React.FocusEvent<HTMLUListElement> & TreeViewCancellableEvent) => void;
|
package/esm/internals/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { TreeViewProvider, useTreeViewContext } from "./TreeViewProvider/index.js";
|
|
2
|
-
export { RichTreeViewItems } from "./components/RichTreeViewItems.js";
|
|
3
|
-
export type { RichTreeViewItemsSlots, RichTreeViewItemsSlotProps } from "./components/RichTreeViewItems.js";
|
|
1
|
+
export { TreeViewProvider, useTreeViewContext, useTreeViewStyleContext } from "./TreeViewProvider/index.js";
|
|
2
|
+
export { RichTreeViewItems, RichTreeViewItem } from "./components/RichTreeViewItems.js";
|
|
3
|
+
export type { RichTreeViewItemsProps, RichTreeViewItemsSlots, RichTreeViewItemsSlotProps } from "./components/RichTreeViewItems.js";
|
|
4
4
|
export { useTreeViewRootProps } from "./hooks/useTreeViewRootProps.js";
|
|
5
5
|
export { useTreeViewStore } from "./hooks/useTreeViewStore.js";
|
|
6
6
|
export type { UseTreeViewStoreParameters } from "./hooks/useTreeViewStore.js";
|
package/esm/internals/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { TreeViewProvider, useTreeViewContext } from "./TreeViewProvider/index.js";
|
|
2
|
-
export { RichTreeViewItems } from "./components/RichTreeViewItems.js";
|
|
1
|
+
export { TreeViewProvider, useTreeViewContext, useTreeViewStyleContext } from "./TreeViewProvider/index.js";
|
|
2
|
+
export { RichTreeViewItems, RichTreeViewItem } from "./components/RichTreeViewItems.js";
|
|
3
3
|
export { useTreeViewRootProps } from "./hooks/useTreeViewRootProps.js";
|
|
4
4
|
export { useTreeViewStore } from "./hooks/useTreeViewStore.js";
|
|
5
5
|
// Plugins
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { TreeViewItemMeta } from "../../models/index.js";
|
|
2
2
|
import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
|
|
3
|
+
import { RichTreeViewState } from "../../RichTreeViewStore/index.js";
|
|
3
4
|
export declare const itemsSelectors: {
|
|
4
5
|
/**
|
|
5
6
|
* Gets the DOM structure of the Tree View.
|
|
6
7
|
*/
|
|
7
|
-
domStructure: (state:
|
|
8
|
+
domStructure: (state: RichTreeViewState<any, any>) => import("../../../index.js").TreeViewDOMStructure;
|
|
8
9
|
/**
|
|
9
10
|
* Checks whether the disabled items are focusable.
|
|
10
11
|
*/
|
|
@@ -57,4 +58,8 @@ export declare const itemsSelectors: {
|
|
|
57
58
|
* Gets the identation between an item and its children.
|
|
58
59
|
*/
|
|
59
60
|
itemChildrenIndentation: (state: MinimalTreeViewState<any, any>) => string | number;
|
|
61
|
+
/**
|
|
62
|
+
* Gets the height of an individual item.
|
|
63
|
+
*/
|
|
64
|
+
itemHeight: (state: MinimalTreeViewState<any, any>) => number | null;
|
|
60
65
|
};
|
|
@@ -60,5 +60,9 @@ export const itemsSelectors = {
|
|
|
60
60
|
/**
|
|
61
61
|
* Gets the identation between an item and its children.
|
|
62
62
|
*/
|
|
63
|
-
itemChildrenIndentation: createSelector(state => state.itemChildrenIndentation)
|
|
63
|
+
itemChildrenIndentation: createSelector(state => state.itemChildrenIndentation),
|
|
64
|
+
/**
|
|
65
|
+
* Gets the height of an individual item.
|
|
66
|
+
*/
|
|
67
|
+
itemHeight: createSelector(state => state.itemHeight)
|
|
64
68
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type TreeViewDOMStructure = 'flat' | 'nested';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/esm/models/index.d.ts
CHANGED
package/esm/models/index.js
CHANGED
|
@@ -58,6 +58,7 @@ export const useTreeItem = parameters => {
|
|
|
58
58
|
const isCheckboxSelectionEnabled = useStore(store, selectionSelectors.isCheckboxSelectionEnabled);
|
|
59
59
|
const idAttribute = useStore(store, idSelectors.treeItemIdAttribute, itemId, id);
|
|
60
60
|
const shouldBeAccessibleWithTab = useStore(store, focusSelectors.isItemTheDefaultFocusableItem, itemId);
|
|
61
|
+
const itemHeight = useStore(store, itemsSelectors.itemHeight);
|
|
61
62
|
const sharedPropsEnhancerParams = {
|
|
62
63
|
rootRefObject,
|
|
63
64
|
contentRefObject,
|
|
@@ -153,6 +154,8 @@ export const useTreeItem = parameters => {
|
|
|
153
154
|
}, externalProps, {
|
|
154
155
|
style: _extends({}, externalProps.style ?? {}, {
|
|
155
156
|
'--TreeView-itemDepth': depth
|
|
157
|
+
}, itemHeight == null ? {} : {
|
|
158
|
+
'--TreeView-itemHeight': `${itemHeight}px`
|
|
156
159
|
}),
|
|
157
160
|
onFocus: createRootHandleFocus(externalEventHandlers),
|
|
158
161
|
onBlur: createRootHandleBlur(externalEventHandlers),
|
package/index.js
CHANGED
|
@@ -36,12 +36,6 @@ export interface MinimalTreeViewState<R extends TreeViewValidItem<R>, Multiple e
|
|
|
36
36
|
[itemId: string]: number;
|
|
37
37
|
};
|
|
38
38
|
};
|
|
39
|
-
/**
|
|
40
|
-
* When equal to 'flat', the tree is rendered as a flat list (children are rendered as siblings of their parents).
|
|
41
|
-
* When equal to 'nested', the tree is rendered with nested children (children are rendered inside the groupTransition slot of their children).
|
|
42
|
-
* Nested DOM structure is not compatible with collapse / expansion animations.
|
|
43
|
-
*/
|
|
44
|
-
domStructure: 'flat' | 'nested';
|
|
45
39
|
/**
|
|
46
40
|
* Horizontal indentation between an item and its children.
|
|
47
41
|
* Examples: 24, "24px", "2rem", "2em".
|
|
@@ -87,6 +81,11 @@ export interface MinimalTreeViewState<R extends TreeViewValidItem<R>, Multiple e
|
|
|
87
81
|
* The id of the currently focused item.
|
|
88
82
|
*/
|
|
89
83
|
focusedItemId: TreeViewItemId | null;
|
|
84
|
+
/**
|
|
85
|
+
* The default height of each item in the tree view.
|
|
86
|
+
* If not provided, no height restriction is applied to the tree item content element.
|
|
87
|
+
*/
|
|
88
|
+
itemHeight: number | null;
|
|
90
89
|
}
|
|
91
90
|
export interface MinimalTreeViewParameters<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined> {
|
|
92
91
|
/**
|
|
@@ -249,6 +248,11 @@ export interface MinimalTreeViewParameters<R extends TreeViewValidItem<R>, Multi
|
|
|
249
248
|
* @param {TreeViewItemId} itemId The id of the focused item.
|
|
250
249
|
*/
|
|
251
250
|
onItemFocus?: (event: React.SyntheticEvent | null, itemId: TreeViewItemId) => void;
|
|
251
|
+
/**
|
|
252
|
+
* Sets the height in pixel of an item.
|
|
253
|
+
* If not provided, no height restriction is applied to the tree item content element.
|
|
254
|
+
*/
|
|
255
|
+
itemHeight?: number;
|
|
252
256
|
}
|
|
253
257
|
/**
|
|
254
258
|
* Mapper between a Tree View instance's state and parameters.
|