@mui/x-tree-view 8.0.0-beta.1 → 8.0.0-beta.2

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.
Files changed (111) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/RichTreeView/RichTreeView.js +17 -5
  3. package/RichTreeView/richTreeViewClasses.d.ts +2 -4
  4. package/RichTreeView/richTreeViewClasses.js +1 -1
  5. package/SimpleTreeView/SimpleTreeView.js +17 -5
  6. package/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
  7. package/SimpleTreeView/simpleTreeViewClasses.js +1 -1
  8. package/TreeItem/TreeItem.d.ts +1 -1
  9. package/TreeItem/TreeItem.js +45 -49
  10. package/TreeItem/index.d.ts +2 -1
  11. package/TreeItem/index.js +13 -21
  12. package/TreeItem/treeItemClasses.d.ts +40 -18
  13. package/TreeItem/treeItemClasses.js +3 -1
  14. package/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
  15. package/esm/RichTreeView/RichTreeView.js +17 -5
  16. package/esm/RichTreeView/richTreeViewClasses.d.ts +2 -4
  17. package/esm/RichTreeView/richTreeViewClasses.js +1 -1
  18. package/esm/SimpleTreeView/SimpleTreeView.js +17 -5
  19. package/esm/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
  20. package/esm/SimpleTreeView/simpleTreeViewClasses.js +1 -1
  21. package/esm/TreeItem/TreeItem.d.ts +1 -1
  22. package/esm/TreeItem/TreeItem.js +45 -49
  23. package/esm/TreeItem/index.d.ts +2 -1
  24. package/esm/TreeItem/index.js +1 -1
  25. package/esm/TreeItem/treeItemClasses.d.ts +40 -18
  26. package/esm/TreeItem/treeItemClasses.js +3 -1
  27. package/esm/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
  28. package/esm/index.js +1 -1
  29. package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  30. package/esm/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  31. package/esm/internals/TreeViewProvider/TreeViewContext.js +8 -1
  32. package/esm/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
  33. package/esm/internals/TreeViewProvider/TreeViewProvider.js +17 -5
  34. package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
  35. package/esm/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
  36. package/esm/internals/TreeViewProvider/TreeViewStyleContext.js +13 -0
  37. package/esm/internals/TreeViewProvider/index.d.ts +1 -1
  38. package/esm/internals/TreeViewProvider/index.js +1 -1
  39. package/esm/internals/index.d.ts +2 -1
  40. package/esm/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
  41. package/esm/internals/plugins/useTreeViewItemCustomization/index.js +1 -0
  42. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
  43. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +24 -0
  44. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
  45. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +1 -0
  46. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  47. package/esm/useTreeItem/useTreeItem.js +5 -0
  48. package/esm/useTreeItem/useTreeItem.types.d.ts +9 -0
  49. package/index.js +1 -1
  50. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
  51. package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  52. package/internals/TreeViewProvider/TreeViewContext.js +10 -2
  53. package/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
  54. package/internals/TreeViewProvider/TreeViewProvider.js +17 -5
  55. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
  56. package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
  57. package/internals/TreeViewProvider/TreeViewStyleContext.js +21 -0
  58. package/internals/TreeViewProvider/index.d.ts +1 -1
  59. package/internals/TreeViewProvider/index.js +2 -2
  60. package/internals/index.d.ts +2 -1
  61. package/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
  62. package/internals/plugins/useTreeViewItemCustomization/index.js +12 -0
  63. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
  64. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +32 -0
  65. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
  66. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +5 -0
  67. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  68. package/modern/RichTreeView/RichTreeView.js +17 -5
  69. package/modern/RichTreeView/richTreeViewClasses.d.ts +2 -4
  70. package/modern/RichTreeView/richTreeViewClasses.js +1 -1
  71. package/modern/SimpleTreeView/SimpleTreeView.js +17 -5
  72. package/modern/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
  73. package/modern/SimpleTreeView/simpleTreeViewClasses.js +1 -1
  74. package/modern/TreeItem/TreeItem.d.ts +1 -1
  75. package/modern/TreeItem/TreeItem.js +45 -49
  76. package/modern/TreeItem/index.d.ts +2 -1
  77. package/modern/TreeItem/index.js +1 -1
  78. package/modern/TreeItem/treeItemClasses.d.ts +40 -18
  79. package/modern/TreeItem/treeItemClasses.js +3 -1
  80. package/modern/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
  81. package/modern/index.js +1 -1
  82. package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  83. package/modern/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  84. package/modern/internals/TreeViewProvider/TreeViewContext.js +8 -1
  85. package/modern/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
  86. package/modern/internals/TreeViewProvider/TreeViewProvider.js +17 -5
  87. package/modern/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
  88. package/modern/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
  89. package/modern/internals/TreeViewProvider/TreeViewStyleContext.js +13 -0
  90. package/modern/internals/TreeViewProvider/index.d.ts +1 -1
  91. package/modern/internals/TreeViewProvider/index.js +1 -1
  92. package/modern/internals/index.d.ts +2 -1
  93. package/modern/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
  94. package/modern/internals/plugins/useTreeViewItemCustomization/index.js +1 -0
  95. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
  96. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +24 -0
  97. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
  98. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +1 -0
  99. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  100. package/modern/useTreeItem/useTreeItem.js +5 -0
  101. package/modern/useTreeItem/useTreeItem.types.d.ts +9 -0
  102. package/package.json +2 -2
  103. package/tsconfig.build.tsbuildinfo +1 -1
  104. package/useTreeItem/useTreeItem.js +5 -0
  105. package/useTreeItem/useTreeItem.types.d.ts +9 -0
  106. package/esm/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
  107. package/esm/internals/TreeViewProvider/useTreeViewContext.js +0 -9
  108. package/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
  109. package/internals/TreeViewProvider/useTreeViewContext.js +0 -17
  110. package/modern/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
  111. package/modern/internals/TreeViewProvider/useTreeViewContext.js +0 -9
@@ -17,10 +17,21 @@ const useUtilityClasses = ownerState => {
17
17
  const {
18
18
  classes
19
19
  } = ownerState;
20
- const slots = {
21
- root: ['root']
22
- };
23
- return composeClasses(slots, getSimpleTreeViewUtilityClass, classes);
20
+ return React.useMemo(() => {
21
+ const slots = {
22
+ root: ['root'],
23
+ item: ['item'],
24
+ itemContent: ['itemContent'],
25
+ itemGroupTransition: ['itemGroupTransition'],
26
+ itemIconContainer: ['itemIconContainer'],
27
+ itemLabel: ['itemLabel'],
28
+ // itemLabelInput: ['itemLabelInput'], => feature not available on this component
29
+ itemCheckbox: ['itemCheckbox']
30
+ // itemDragAndDropOverlay: ['itemDragAndDropOverlay'], => feature not available on this component
31
+ // itemErrorIcon: ['itemErrorIcon'], => feature not available on this component
32
+ };
33
+ return composeClasses(slots, getSimpleTreeViewUtilityClass, classes);
34
+ }, [classes]);
24
35
  };
25
36
  export const SimpleTreeViewRoot = styled('ul', {
26
37
  name: 'MuiSimpleTreeView',
@@ -80,7 +91,8 @@ const SimpleTreeView = /*#__PURE__*/React.forwardRef(function SimpleTreeView(inP
80
91
  ownerState
81
92
  });
82
93
  return /*#__PURE__*/_jsx(TreeViewProvider, {
83
- value: contextValue,
94
+ contextValue: contextValue,
95
+ classes: classes,
84
96
  children: /*#__PURE__*/_jsx(Root, _extends({}, rootProps))
85
97
  });
86
98
  });
@@ -1,7 +1,5 @@
1
- export interface SimpleTreeViewClasses {
2
- /** Styles applied to the root element. */
3
- root: string;
4
- }
1
+ import { TreeViewClasses } from "../internals/TreeViewProvider/TreeViewStyleContext.js";
2
+ export interface SimpleTreeViewClasses extends Omit<TreeViewClasses, 'itemDragAndDropOverlay' | 'itemLabelInput' | 'itemErrorIcon' | 'itemLoadingIcon'> {}
5
3
  export type SimpleTreeViewClassKey = keyof SimpleTreeViewClasses;
6
4
  export declare function getSimpleTreeViewUtilityClass(slot: string): string;
7
5
  export declare const simpleTreeViewClasses: SimpleTreeViewClasses;
@@ -3,4 +3,4 @@ import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
3
3
  export function getSimpleTreeViewUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiSimpleTreeView', slot);
5
5
  }
6
- export const simpleTreeViewClasses = generateUtilityClasses('MuiSimpleTreeView', ['root']);
6
+ export const simpleTreeViewClasses = generateUtilityClasses('MuiSimpleTreeView', ['root', 'item', 'itemContent', 'itemGroupTransition', 'itemIconContainer', 'itemLabel', 'itemCheckbox']);
@@ -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").CircularProgressProps, keyof import("@mui/material").CircularProgressProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
16
16
  export declare const TreeItemCheckbox: import("@emotion/styled").StyledComponent<Pick<Omit<CheckboxProps & {
17
17
  visible?: boolean;
18
- }, "ref"> & React.RefAttributes<HTMLButtonElement>, "hidden" | "visible" | "color" | "content" | "size" | "style" | "icon" | "translate" | "disabled" | "form" | "slot" | "title" | "action" | "checked" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "readOnly" | "required" | "value" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "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" | "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-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "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" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "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" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "sx" | "classes" | "component" | "slots" | "slotProps" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "checkedIcon" | "inputProps" | "inputRef" | "indeterminate" | "indeterminateIcon" | keyof React.RefAttributes<HTMLButtonElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
18
+ }, "ref"> & React.RefAttributes<HTMLButtonElement>, "hidden" | "visible" | "color" | "content" | "size" | "style" | "icon" | "translate" | "disabled" | "form" | "slot" | "title" | "action" | "checked" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "readOnly" | "required" | "value" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "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" | "part" | "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-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "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" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "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" | "sx" | "classes" | "component" | "slots" | "slotProps" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "checkedIcon" | "inputProps" | "inputRef" | "indeterminate" | "indeterminateIcon" | keyof React.RefAttributes<HTMLButtonElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
19
19
  type TreeItemComponent = ((props: TreeItemProps & React.RefAttributes<HTMLLIElement>) => React.JSX.Element) & {
20
20
  propTypes?: any;
21
21
  };
@@ -3,7 +3,7 @@
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  import _extends from "@babel/runtime/helpers/esm/extends";
5
5
  const _excluded = ["visible"],
6
- _excluded2 = ["id", "itemId", "label", "disabled", "children", "slots", "slotProps"];
6
+ _excluded2 = ["id", "itemId", "label", "disabled", "children", "slots", "slotProps", "classes"];
7
7
  import * as React from 'react';
8
8
  import PropTypes from 'prop-types';
9
9
  import clsx from 'clsx';
@@ -22,6 +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/TreeViewStyleContext.js";
25
26
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
26
27
  const useThemeProps = createUseThemeProps('MuiTreeItem');
27
28
  export const TreeItemRoot = styled('li', {
@@ -61,43 +62,26 @@ export const TreeItemContent = styled('div', {
61
62
  backgroundColor: 'transparent'
62
63
  }
63
64
  },
64
- variants: [{
65
- props: ({
66
- status
67
- }) => status.disabled,
68
- style: {
69
- opacity: (theme.vars || theme).palette.action.disabledOpacity,
70
- backgroundColor: 'transparent'
71
- }
72
- }, {
73
- props: ({
74
- status
75
- }) => status.focused,
76
- style: {
77
- backgroundColor: (theme.vars || theme).palette.action.focus
78
- }
79
- }, {
80
- props: ({
81
- status
82
- }) => status.selected,
83
- style: {
84
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
85
- '&:hover': {
86
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
87
- // Reset on touch devices, it doesn't add specificity
88
- '@media (hover: none)': {
89
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)
90
- }
65
+ '&[data-disabled]': {
66
+ opacity: (theme.vars || theme).palette.action.disabledOpacity,
67
+ backgroundColor: 'transparent'
68
+ },
69
+ '&[data-focused]': {
70
+ backgroundColor: (theme.vars || theme).palette.action.focus
71
+ },
72
+ '&[data-selected]': {
73
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
74
+ '&:hover': {
75
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
76
+ // Reset on touch devices, it doesn't add specificity
77
+ '@media (hover: none)': {
78
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)
91
79
  }
92
80
  }
93
- }, {
94
- props: ({
95
- status
96
- }) => status.selected && status.focused,
97
- style: {
98
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
99
- }
100
- }]
81
+ },
82
+ '&[data-selected][data-focused]': {
83
+ backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
84
+ }
101
85
  }));
102
86
  export const TreeItemLabel = styled('div', {
103
87
  name: 'MuiTreeItem',
@@ -183,19 +167,25 @@ export const TreeItemCheckbox = styled(/*#__PURE__*/React.forwardRef((props, ref
183
167
  })({
184
168
  padding: 0
185
169
  });
186
- const useUtilityClasses = ownerState => {
170
+ const useUtilityClasses = classesProp => {
187
171
  const {
188
- classes
189
- } = ownerState;
172
+ classes: classesFromTreeView
173
+ } = useTreeViewStyleContext();
174
+ const classes = _extends({}, classesProp, {
175
+ root: clsx(classesProp?.root, classesFromTreeView.root),
176
+ content: clsx(classesProp?.content, classesFromTreeView.itemContent),
177
+ iconContainer: clsx(classesProp?.iconContainer, classesFromTreeView.itemIconContainer),
178
+ checkbox: clsx(classesProp?.checkbox, classesFromTreeView.itemCheckbox),
179
+ label: clsx(classesProp?.label, classesFromTreeView.itemLabel),
180
+ groupTransition: clsx(classesProp?.groupTransition, classesFromTreeView.itemGroupTransition),
181
+ labelInput: clsx(classesProp?.labelInput, classesFromTreeView.itemLabelInput),
182
+ dragAndDropOverlay: clsx(classesProp?.dragAndDropOverlay, classesFromTreeView.itemDragAndDropOverlay),
183
+ errorIcon: clsx(classesProp?.errorIcon, classesFromTreeView.itemErrorIcon),
184
+ loadingIcon: clsx(classesProp?.loadingIcon, classesFromTreeView.itemLoadingIcon)
185
+ });
190
186
  const slots = {
191
187
  root: ['root'],
192
188
  content: ['content'],
193
- expanded: ['expanded'],
194
- editing: ['editing'],
195
- editable: ['editable'],
196
- selected: ['selected'],
197
- focused: ['focused'],
198
- disabled: ['disabled'],
199
189
  iconContainer: ['iconContainer'],
200
190
  checkbox: ['checkbox'],
201
191
  label: ['label'],
@@ -203,7 +193,13 @@ const useUtilityClasses = ownerState => {
203
193
  labelInput: ['labelInput'],
204
194
  dragAndDropOverlay: ['dragAndDropOverlay'],
205
195
  errorIcon: ['errorIcon'],
206
- loadingIcon: ['loadingIcon']
196
+ loadingIcon: ['loadingIcon'],
197
+ expanded: ['expanded'],
198
+ editing: ['editing'],
199
+ editable: ['editable'],
200
+ selected: ['selected'],
201
+ focused: ['focused'],
202
+ disabled: ['disabled']
207
203
  };
208
204
  return composeClasses(slots, getTreeItemUtilityClass, classes);
209
205
  };
@@ -229,7 +225,8 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
229
225
  disabled,
230
226
  children,
231
227
  slots = {},
232
- slotProps = {}
228
+ slotProps = {},
229
+ classes: classesProp
233
230
  } = props,
234
231
  other = _objectWithoutPropertiesLoose(props, _excluded2);
235
232
  const {
@@ -252,8 +249,7 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
252
249
  label,
253
250
  disabled
254
251
  });
255
- const ownerState = _extends({}, props, status);
256
- const classes = useUtilityClasses(ownerState);
252
+ const classes = useUtilityClasses(classesProp);
257
253
  const Root = slots.root ?? TreeItemRoot;
258
254
  const rootProps = useSlotProps({
259
255
  elementType: Root,
@@ -1,3 +1,4 @@
1
1
  export { TreeItem, TreeItemRoot, TreeItemContent, TreeItemIconContainer, TreeItemGroupTransition, TreeItemCheckbox, TreeItemLabel } from "./TreeItem.js";
2
2
  export type { TreeItemProps, TreeItemSlots, TreeItemSlotProps } from './TreeItem.types';
3
- export * from "./treeItemClasses.js";
3
+ export { getTreeItemUtilityClass, treeItemClasses } from "./treeItemClasses.js";
4
+ export type { TreeItemClassKey, TreeItemClasses } from './treeItemClasses';
@@ -1,2 +1,2 @@
1
1
  export { TreeItem, TreeItemRoot, TreeItemContent, TreeItemIconContainer, TreeItemGroupTransition, TreeItemCheckbox, TreeItemLabel } from "./TreeItem.js";
2
- export * from "./treeItemClasses.js";
2
+ export { getTreeItemUtilityClass, treeItemClasses } from "./treeItemClasses.js";
@@ -1,32 +1,54 @@
1
1
  export interface TreeItemClasses {
2
2
  /** Styles applied to the root element. */
3
3
  root: string;
4
- /** Styles applied to the transition component. */
5
- groupTransition: string;
6
4
  /** Styles applied to the content element. */
7
5
  content: string;
8
- /** State class applied to the content element when expanded. */
9
- expanded: string;
10
- /** State class applied to the content element when selected. */
11
- selected: string;
12
- /** State class applied to the content element when focused. */
13
- focused: string;
14
- /** State class applied to the element when disabled. */
15
- disabled: string;
16
- /** Styles applied to the Tree Item icon. */
6
+ /** Styles applied to the transition element. */
7
+ groupTransition: string;
8
+ /** Styles applied to the icon container element. */
17
9
  iconContainer: string;
18
10
  /** Styles applied to the label element. */
19
11
  label: string;
12
+ /** Styles applied to the label input element (visible only when editing is enabled). */
13
+ labelInput: string;
20
14
  /** Styles applied to the checkbox element. */
21
15
  checkbox: string;
22
- /** Styles applied to the input element that is visible when editing is enabled. */
23
- labelInput: string;
24
- /** Styles applied to the content element when editing is enabled. */
25
- editing: string;
26
- /** Styles applied to the content of the items that are editable. */
27
- editable: string;
28
- /** Styles applied to the drag and drop overlay. */
16
+ /** Styles applied to the drag and drop overlay element. */
29
17
  dragAndDropOverlay: string;
18
+ /** Styles applied to the error icon element */
19
+ errorIcon: string;
20
+ /** Styles applied to the loading icon element */
21
+ loadingIcon: string;
22
+ /**
23
+ * State class applied to the content element when the item is expanded.
24
+ * @deprecated Use the `data-expanded` attribute instead.
25
+ */
26
+ expanded: string;
27
+ /**
28
+ * State class applied to the content element when the item is selected.
29
+ * @deprecated Use the `data-selected` attribute instead.
30
+ */
31
+ selected: string;
32
+ /**
33
+ * State class applied to the content element when the item is focused.
34
+ * @deprecated Use the `data-focused` attribute instead.
35
+ */
36
+ focused: string;
37
+ /**
38
+ * State class applied to the content element when the item is disabled.
39
+ * @deprecated Use the `data-disabled` attribute instead.
40
+ */
41
+ disabled: string;
42
+ /**
43
+ * State class applied to the content element when the item is editable.
44
+ * @deprecated Use the `data-editable` attribute instead.
45
+ */
46
+ editable: string;
47
+ /**
48
+ * State class applied to the content element when the item is being edited.
49
+ * @deprecated Use the `data-editing` attribute instead.
50
+ */
51
+ editing: string;
30
52
  }
31
53
  export type TreeItemClassKey = keyof TreeItemClasses;
32
54
  export declare function getTreeItemUtilityClass(slot: string): string;
@@ -3,4 +3,6 @@ import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
3
3
  export function getTreeItemUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiTreeItem', slot);
5
5
  }
6
- export const treeItemClasses = generateUtilityClasses('MuiTreeItem', ['root', 'groupTransition', 'content', 'expanded', 'selected', 'focused', 'disabled', 'iconContainer', 'label', 'checkbox', 'labelInput', 'editable', 'editing', 'dragAndDropOverlay']);
6
+ export const treeItemClasses = generateUtilityClasses('MuiTreeItem', ['root', 'content', 'groupTransition', 'iconContainer', 'label', 'checkbox', 'labelInput', 'dragAndDropOverlay', 'errorIcon', 'loadingIcon',
7
+ // State classes, will be replaced by data-attrs in the next major
8
+ 'expanded', 'selected', 'focused', 'disabled', 'editable', 'editing']);
@@ -12,13 +12,13 @@ const TreeItemLabelInput = styled('input', {
12
12
  theme
13
13
  }) => _extends({}, theme.typography.body1, {
14
14
  width: '100%',
15
- backgroundColor: theme.palette.background.paper,
15
+ backgroundColor: (theme.vars || theme).palette.background.paper,
16
16
  borderRadius: theme.shape.borderRadius,
17
17
  border: 'none',
18
18
  padding: '0 2px',
19
19
  boxSizing: 'border-box',
20
20
  '&:focus': {
21
- outline: `1px solid ${theme.palette.primary.main}`
21
+ outline: `1px solid ${(theme.vars || theme).palette.primary.main}`
22
22
  }
23
23
  }));
24
24
  export { TreeItemLabelInput };
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-tree-view v8.0.0-beta.1
2
+ * @mui/x-tree-view v8.0.0-beta.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { useTreeViewContext } from "./useTreeViewContext.js";
3
+ import { useTreeViewContext } from "./TreeViewContext.js";
4
4
  import { escapeOperandAttributeSelector } from "../utils/utils.js";
5
5
  import { selectorItemOrderedChildrenIds } from "../plugins/useTreeViewItems/useTreeViewItems.selectors.js";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -1,6 +1,8 @@
1
1
  import * as React from 'react';
2
+ import { TreeViewAnyPluginSignature } from "../models/index.js";
2
3
  import { TreeViewContextValue } from "./TreeViewProvider.types.js";
3
4
  /**
4
5
  * @ignore - internal component.
5
6
  */
6
- export declare const TreeViewContext: React.Context<TreeViewContextValue<any> | null>;
7
+ export declare const TreeViewContext: React.Context<TreeViewContextValue<any> | null>;
8
+ export declare const useTreeViewContext: <TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []>() => TreeViewContextValue<TSignatures, TOptionalSignatures>;
@@ -5,4 +5,11 @@ import * as React from 'react';
5
5
  export const TreeViewContext = /*#__PURE__*/React.createContext(null);
6
6
  if (process.env.NODE_ENV !== 'production') {
7
7
  TreeViewContext.displayName = 'TreeViewContext';
8
- }
8
+ }
9
+ export const useTreeViewContext = () => {
10
+ const context = React.useContext(TreeViewContext);
11
+ if (context == null) {
12
+ throw new Error(['MUI X: Could not find the Tree View context.', 'It looks like you rendered your component outside of a SimpleTreeView or RichTreeView parent component.', 'This can also happen if you are bundling multiple versions of the Tree View.'].join('\n'));
13
+ }
14
+ return context;
15
+ };
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { TreeViewProviderProps } from "./TreeViewProvider.types.js";
3
3
  import { TreeViewAnyPluginSignature } from "../models/index.js";
4
4
  /**
5
- * Sets up the contexts for the underlying TreeItem components.
5
+ * Sets up the contexts for the underlying Tree Item components.
6
6
  *
7
7
  * @ignore - do not document.
8
8
  */
@@ -1,20 +1,32 @@
1
1
  import * as React from 'react';
2
2
  import { TreeViewContext } from "./TreeViewContext.js";
3
+ import { TreeViewStyleContext } from "./TreeViewStyleContext.js";
3
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
+ const EMPTY_OBJECT = {};
6
+
4
7
  /**
5
- * Sets up the contexts for the underlying TreeItem components.
8
+ * Sets up the contexts for the underlying Tree Item components.
6
9
  *
7
10
  * @ignore - do not document.
8
11
  */
9
12
  export function TreeViewProvider(props) {
10
13
  const {
11
- value,
14
+ contextValue,
15
+ classes = EMPTY_OBJECT,
12
16
  children
13
17
  } = props;
18
+
19
+ // TODO: Add the icons to this context and drop useTreeViewIcons
20
+ const styleContextValue = React.useMemo(() => ({
21
+ classes
22
+ }), [classes]);
14
23
  return /*#__PURE__*/_jsx(TreeViewContext.Provider, {
15
- value: value,
16
- children: value.wrapRoot({
17
- children
24
+ value: contextValue,
25
+ children: /*#__PURE__*/_jsx(TreeViewStyleContext.Provider, {
26
+ value: styleContextValue,
27
+ children: contextValue.wrapRoot({
28
+ children
29
+ })
18
30
  })
19
31
  });
20
32
  }
@@ -3,6 +3,7 @@ import { MergeSignaturesProperty, TreeItemWrapper, TreeRootWrapper, TreeViewAnyP
3
3
  import { TreeViewStore } from "../utils/TreeViewStore.js";
4
4
  import { TreeViewCorePluginSignatures } from "../corePlugins/index.js";
5
5
  import type { TreeItemProps } from '../../TreeItem/TreeItem.types';
6
+ import { TreeViewClasses } from "./TreeViewStyleContext.js";
6
7
  export type TreeViewItemPluginsRunner = (props: TreeItemProps) => Required<TreeViewItemPluginResponse>;
7
8
  export type TreeViewContextValue<TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []> = MergeSignaturesProperty<[...TreeViewCorePluginSignatures, ...TSignatures], 'contextValue'> & Partial<MergeSignaturesProperty<TOptionalSignatures, 'contextValue'>> & {
8
9
  instance: TreeViewInstance<TSignatures, TOptionalSignatures>;
@@ -14,6 +15,7 @@ export type TreeViewContextValue<TSignatures extends readonly TreeViewAnyPluginS
14
15
  runItemPlugins: TreeViewItemPluginsRunner;
15
16
  };
16
17
  export interface TreeViewProviderProps<TSignatures extends readonly TreeViewAnyPluginSignature[]> {
17
- value: TreeViewContextValue<TSignatures>;
18
+ contextValue: TreeViewContextValue<TSignatures>;
18
19
  children: React.ReactNode;
20
+ classes: Partial<TreeViewClasses> | undefined;
19
21
  }
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ export interface TreeViewClasses {
3
+ /** Styles applied to the root element. */
4
+ root: string;
5
+ /** Styles applied to the item's root element. */
6
+ item: string;
7
+ /** Styles applied to the item's content element. */
8
+ itemContent: string;
9
+ /** Styles applied to the item's transition element. */
10
+ itemGroupTransition: string;
11
+ /** Styles applied to the item's icon container element icon. */
12
+ itemIconContainer: string;
13
+ /** Styles applied to the item's label element. */
14
+ itemLabel: string;
15
+ /** Styles applied to the item's label input element (visible only when editing is enabled). */
16
+ itemLabelInput: string;
17
+ /** Styles applied to the item's checkbox element. */
18
+ itemCheckbox: string;
19
+ /** Styles applied to the item's drag and drop overlay element. */
20
+ itemDragAndDropOverlay: string;
21
+ /** Styles applied to the item's error icon element */
22
+ itemErrorIcon: string;
23
+ /** Styles applied to the item's loading icon element */
24
+ itemLoadingIcon: string;
25
+ }
26
+ export interface TreeViewStyleContextValue {
27
+ classes: Partial<TreeViewClasses>;
28
+ }
29
+ /**
30
+ * @ignore - internal component.
31
+ */
32
+ export declare const TreeViewStyleContext: React.Context<TreeViewStyleContextValue>;
33
+ export declare const useTreeViewStyleContext: () => TreeViewStyleContextValue;
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * @ignore - internal component.
4
+ */
5
+ export const TreeViewStyleContext = /*#__PURE__*/React.createContext({
6
+ classes: {}
7
+ });
8
+ if (process.env.NODE_ENV !== 'production') {
9
+ TreeViewStyleContext.displayName = 'TreeViewStyleContext';
10
+ }
11
+ export const useTreeViewStyleContext = () => {
12
+ return React.useContext(TreeViewStyleContext);
13
+ };
@@ -1,3 +1,3 @@
1
1
  export { TreeViewProvider } from "./TreeViewProvider.js";
2
- export { useTreeViewContext } from "./useTreeViewContext.js";
2
+ export { useTreeViewContext } from "./TreeViewContext.js";
3
3
  export type { TreeViewProviderProps, TreeViewContextValue, TreeViewItemPluginsRunner } from './TreeViewProvider.types';
@@ -1,2 +1,2 @@
1
1
  export { TreeViewProvider } from "./TreeViewProvider.js";
2
- export { useTreeViewContext } from "./useTreeViewContext.js";
2
+ export { useTreeViewContext } from "./TreeViewContext.js";
@@ -30,4 +30,5 @@ export { useTreeViewJSXItems } from "./plugins/useTreeViewJSXItems/index.js";
30
30
  export type { UseTreeViewJSXItemsSignature, UseTreeViewJSXItemsParameters } from './plugins/useTreeViewJSXItems';
31
31
  export { createSelector } from "./utils/selectors.js";
32
32
  export { isTargetInDescendants } from "./utils/tree.js";
33
- export { TreeViewStore } from "./utils/TreeViewStore.js";
33
+ export { TreeViewStore } from "./utils/TreeViewStore.js";
34
+ export type { TreeViewClasses } from './TreeViewProvider/TreeViewStyleContext';
@@ -0,0 +1,2 @@
1
+ export { useTreeViewItemCustomization } from "./useTreeViewItemCustomization.js";
2
+ export type { UseTreeViewItemCustomizationSignature, UseTreeViewItemCustomizationParameters, UseTreeViewItemCustomizationDefaultizedParameters } from './useTreeViewItemCustomization.types';
@@ -0,0 +1 @@
1
+ export { useTreeViewItemCustomization } from "./useTreeViewItemCustomization.js";
@@ -0,0 +1,3 @@
1
+ import { TreeViewPlugin } from "../../models/index.js";
2
+ import { UseTreeViewItemCustomizationSignature } from "./useTreeViewItemCustomization.types.js";
3
+ export declare const useTreeViewItemCustomization: TreeViewPlugin<UseTreeViewItemCustomizationSignature>;
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ export const useTreeViewItemCustomization = ({
3
+ slots,
4
+ slotProps
5
+ }) => {
6
+ const pluginContextValue = React.useMemo(() => ({
7
+ icons: {
8
+ slots: {
9
+ collapseIcon: slots.collapseIcon,
10
+ expandIcon: slots.expandIcon,
11
+ endIcon: slots.endIcon
12
+ },
13
+ slotProps: {
14
+ collapseIcon: slotProps.collapseIcon,
15
+ expandIcon: slotProps.expandIcon,
16
+ endIcon: slotProps.endIcon
17
+ }
18
+ }
19
+ }), [slots.collapseIcon, slots.expandIcon, slots.endIcon, slotProps.collapseIcon, slotProps.expandIcon, slotProps.endIcon]);
20
+ return {
21
+ contextValue: pluginContextValue
22
+ };
23
+ };
24
+ useTreeViewItemCustomization.params = {};
@@ -0,0 +1,42 @@
1
+ import * as React from 'react';
2
+ import { SlotComponentProps } from '@mui/utils/types';
3
+ import { TreeViewPluginSignature } from "../../models/index.js";
4
+ import { UseTreeViewItemsSignature } from "../useTreeViewItems/index.js";
5
+ import { UseTreeViewSelectionSignature } from "../useTreeViewSelection/index.js";
6
+ export interface UseTreeViewItemCustomizationParameters {}
7
+ export type UseTreeViewItemCustomizationDefaultizedParameters = UseTreeViewItemCustomizationParameters;
8
+ interface UseTreeViewItemCustomizationSlots {
9
+ /**
10
+ * The default icon used to collapse the item.
11
+ */
12
+ collapseIcon?: React.ElementType;
13
+ /**
14
+ * The default icon used to expand the item.
15
+ */
16
+ expandIcon?: React.ElementType;
17
+ /**
18
+ * The default icon displayed next to an end item.
19
+ * This is applied to all Tree Items and can be overridden by the TreeItem `icon` slot prop.
20
+ */
21
+ endIcon?: React.ElementType;
22
+ }
23
+ interface UseTreeViewItemCustomizationSlotProps {
24
+ collapseIcon?: SlotComponentProps<'svg', {}, {}>;
25
+ expandIcon?: SlotComponentProps<'svg', {}, {}>;
26
+ endIcon?: SlotComponentProps<'svg', {}, {}>;
27
+ }
28
+ interface UseTreeViewItemCustomizationContextValue {
29
+ icons: {
30
+ slots: UseTreeViewItemCustomizationSlots;
31
+ slotProps: UseTreeViewItemCustomizationSlotProps;
32
+ };
33
+ }
34
+ export type UseTreeViewItemCustomizationSignature = TreeViewPluginSignature<{
35
+ params: UseTreeViewItemCustomizationParameters;
36
+ defaultizedParams: UseTreeViewItemCustomizationDefaultizedParameters;
37
+ contextValue: UseTreeViewItemCustomizationContextValue;
38
+ slots: UseTreeViewItemCustomizationSlots;
39
+ slotProps: UseTreeViewItemCustomizationSlotProps;
40
+ dependencies: [UseTreeViewItemsSignature, UseTreeViewSelectionSignature];
41
+ }>;
42
+ export {};