@mui/x-tree-view 8.0.0-alpha.13 → 8.0.0-alpha.14

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 (120) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/RichTreeView/RichTreeView.js +24 -5
  3. package/SimpleTreeView/SimpleTreeView.js +8 -6
  4. package/TreeItem/TreeItem.d.ts +2 -0
  5. package/TreeItem/TreeItem.js +46 -5
  6. package/TreeItem/TreeItem.types.d.ts +14 -0
  7. package/TreeItemIcon/TreeItemIcon.js +2 -0
  8. package/esm/RichTreeView/RichTreeView.js +24 -5
  9. package/esm/SimpleTreeView/SimpleTreeView.js +8 -6
  10. package/esm/TreeItem/TreeItem.d.ts +2 -0
  11. package/esm/TreeItem/TreeItem.js +45 -4
  12. package/esm/TreeItem/TreeItem.types.d.ts +14 -0
  13. package/esm/TreeItemIcon/TreeItemIcon.js +2 -0
  14. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -2
  15. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +21 -9
  16. package/esm/hooks/useTreeViewApiRef.d.ts +1 -1
  17. package/esm/index.js +1 -1
  18. package/esm/internals/index.d.ts +6 -1
  19. package/esm/internals/index.js +4 -1
  20. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -12
  21. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +4 -0
  22. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +40 -16
  23. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +157 -16
  24. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +172 -0
  25. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +13 -0
  26. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +49 -0
  27. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +2 -2
  28. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +16 -7
  29. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -1
  30. package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
  31. package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
  32. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +249 -0
  33. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +27 -0
  34. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +83 -0
  35. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +1 -0
  36. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -4
  37. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +12 -12
  38. package/esm/internals/utils/selectors.d.ts +7 -0
  39. package/esm/internals/utils/selectors.js +9 -0
  40. package/esm/useTreeItem/useTreeItem.d.ts +1 -1
  41. package/esm/useTreeItem/useTreeItem.js +13 -0
  42. package/esm/useTreeItem/useTreeItem.types.d.ts +21 -0
  43. package/esm/utils/cache.d.ts +38 -0
  44. package/esm/utils/cache.js +31 -0
  45. package/esm/utils/index.d.ts +1 -0
  46. package/esm/utils/index.js +1 -0
  47. package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -2
  48. package/hooks/useTreeItemUtils/useTreeItemUtils.js +22 -10
  49. package/hooks/useTreeViewApiRef.d.ts +1 -1
  50. package/index.js +1 -1
  51. package/internals/index.d.ts +6 -1
  52. package/internals/index.js +33 -0
  53. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -12
  54. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +4 -0
  55. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +40 -16
  56. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +157 -16
  57. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +172 -0
  58. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +14 -1
  59. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +49 -0
  60. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +1 -1
  61. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +16 -7
  62. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -1
  63. package/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
  64. package/internals/plugins/useTreeViewLazyLoading/index.js +5 -0
  65. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +249 -0
  66. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +33 -0
  67. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +83 -0
  68. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +5 -0
  69. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -4
  70. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +12 -12
  71. package/internals/utils/selectors.d.ts +7 -0
  72. package/internals/utils/selectors.js +9 -0
  73. package/modern/RichTreeView/RichTreeView.js +24 -5
  74. package/modern/SimpleTreeView/SimpleTreeView.js +8 -6
  75. package/modern/TreeItem/TreeItem.d.ts +2 -0
  76. package/modern/TreeItem/TreeItem.js +45 -4
  77. package/modern/TreeItem/TreeItem.types.d.ts +14 -0
  78. package/modern/TreeItemIcon/TreeItemIcon.js +2 -0
  79. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -2
  80. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +21 -9
  81. package/modern/hooks/useTreeViewApiRef.d.ts +1 -1
  82. package/modern/index.js +1 -1
  83. package/modern/internals/index.d.ts +6 -1
  84. package/modern/internals/index.js +4 -1
  85. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -12
  86. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +4 -0
  87. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +40 -16
  88. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +157 -16
  89. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +172 -0
  90. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +13 -0
  91. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +49 -0
  92. package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +2 -2
  93. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +16 -7
  94. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -1
  95. package/modern/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
  96. package/modern/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
  97. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +249 -0
  98. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +27 -0
  99. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +83 -0
  100. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +1 -0
  101. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -4
  102. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +12 -12
  103. package/modern/internals/utils/selectors.d.ts +7 -0
  104. package/modern/internals/utils/selectors.js +9 -0
  105. package/modern/useTreeItem/useTreeItem.d.ts +1 -1
  106. package/modern/useTreeItem/useTreeItem.js +13 -0
  107. package/modern/useTreeItem/useTreeItem.types.d.ts +21 -0
  108. package/modern/utils/cache.d.ts +38 -0
  109. package/modern/utils/cache.js +31 -0
  110. package/modern/utils/index.d.ts +1 -0
  111. package/modern/utils/index.js +1 -0
  112. package/package.json +1 -1
  113. package/tsconfig.build.tsbuildinfo +1 -1
  114. package/useTreeItem/useTreeItem.d.ts +1 -1
  115. package/useTreeItem/useTreeItem.js +13 -0
  116. package/useTreeItem/useTreeItem.types.d.ts +21 -0
  117. package/utils/cache.d.ts +38 -0
  118. package/utils/cache.js +38 -0
  119. package/utils/index.d.ts +1 -0
  120. package/utils/index.js +16 -0
@@ -235,6 +235,17 @@ export const useTreeItem = parameters => {
235
235
  onClick: createIconContainerHandleClick(externalEventHandlers)
236
236
  });
237
237
  };
238
+ const getErrorContainerProps = (externalProps = {}) => {
239
+ const externalEventHandlers = extractEventHandlers(externalProps);
240
+ return _extends({}, externalEventHandlers, externalProps);
241
+ };
242
+ const getLoadingContainerProps = (externalProps = {}) => {
243
+ const externalEventHandlers = extractEventHandlers(externalProps);
244
+ return _extends({
245
+ size: '12px',
246
+ thickness: 6
247
+ }, externalEventHandlers, externalProps);
248
+ };
238
249
  const getGroupTransitionProps = (externalProps = {}) => {
239
250
  const externalEventHandlers = extractEventHandlers(externalProps);
240
251
  const response = _extends({}, externalEventHandlers, {
@@ -263,6 +274,8 @@ export const useTreeItem = parameters => {
263
274
  getLabelProps,
264
275
  getLabelInputProps,
265
276
  getDragAndDropOverlayProps,
277
+ getErrorContainerProps,
278
+ getLoadingContainerProps,
266
279
  rootRef: handleRootRef,
267
280
  status,
268
281
  publicAPI
@@ -78,6 +78,11 @@ export interface UseTreeItemCheckboxSlotOwnProps {
78
78
  ref: React.RefObject<HTMLButtonElement | null>;
79
79
  }
80
80
  export type UseTreeItemCheckboxSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemCheckboxSlotOwnProps;
81
+ export type UseTreeItemErrorContainerSlotProps<ExternalProps = {}> = ExternalProps & {};
82
+ export type UseTreeItemLoadingContainerSlotProps<ExternalProps = {}> = ExternalProps & {
83
+ size: string;
84
+ thickness: number;
85
+ };
81
86
  export interface UseTreeItemGroupTransitionSlotOwnProps {
82
87
  unmountOnExit: boolean;
83
88
  in: boolean;
@@ -96,6 +101,8 @@ export interface UseTreeItemStatus {
96
101
  disabled: boolean;
97
102
  editing: boolean;
98
103
  editable: boolean;
104
+ loading: boolean;
105
+ error: boolean;
99
106
  }
100
107
  export interface UseTreeItemReturnValue<TSignatures extends UseTreeItemMinimalPlugins, TOptionalSignatures extends UseTreeItemOptionalPlugins> {
101
108
  /**
@@ -152,6 +159,20 @@ export interface UseTreeItemReturnValue<TSignatures extends UseTreeItemMinimalPl
152
159
  * @returns {UseTreeItemDragAndDropOverlaySlotProps<ExternalProps>} Props that should be spread on the DragAndDropOverlay slot.
153
160
  */
154
161
  getDragAndDropOverlayProps: <ExternalProps extends Record<string, any> = {}>(externalProps?: ExternalProps) => UseTreeItemDragAndDropOverlaySlotProps<ExternalProps>;
162
+ /**
163
+ * Resolver for the ErrorIcon slot's props.
164
+ * Warning: This slot is only useful when using the `<RichTreeView />` component when lazy loading is enabled.
165
+ * @param {ExternalProps} externalProps Additional props for the ErrorIcon slot.
166
+ * @returns {UseTreeItemErrorContainerSlotProps<ExternalProps>} Props that should be spread on the ErrorIcon slot.
167
+ */
168
+ getErrorContainerProps: <ExternalProps extends Record<string, any> = {}>(externalProps?: ExternalProps) => UseTreeItemErrorContainerSlotProps<ExternalProps>;
169
+ /**
170
+ * Resolver for the LoadingIcon slot's props.
171
+ * Warning: This slot is only useful when using the `<RichTreeView />` component when lazy loading is enabled.
172
+ * @param {ExternalProps} externalProps Additional props for the LoadingIcon slot.
173
+ * @returns {UseTreeItemLoadingContainerSlotProps<ExternalProps>} Props that should be spread on the LoadingIcon slot.
174
+ */
175
+ getLoadingContainerProps: <ExternalProps extends Record<string, any> = {}>(externalProps?: ExternalProps) => UseTreeItemLoadingContainerSlotProps<ExternalProps>;
155
176
  /**
156
177
  * A ref to the component's root DOM element.
157
178
  */
@@ -0,0 +1,38 @@
1
+ import { TreeViewItemMeta } from "../internals/models/index.js";
2
+ type DataSourceCacheDefaultConfig = {
3
+ /**
4
+ * Time To Live for each cache entry in milliseconds.
5
+ * After this time the cache entry will become stale and the next query will result in cache miss.
6
+ * @default 300000 (5 minutes)
7
+ */
8
+ ttl?: number;
9
+ };
10
+ export interface DataSourceCache {
11
+ /**
12
+ * Set the cache entry for the given key.
13
+ * @param {string} key The key of type `string`
14
+ * @param {TreeViewItemMeta[]} value The value to be stored in the cache
15
+ */
16
+ set: (key: string, value: TreeViewItemMeta[]) => void;
17
+ /**
18
+ * Get the cache entry for the given key.
19
+ * @param {string} key The key of type `string`
20
+ * @returns {TreeViewItemMeta[]} The value stored in the cache
21
+ */
22
+ get: (key: string) => TreeViewItemMeta[] | undefined | -1;
23
+ /**
24
+ * Clear the cache.
25
+ */
26
+ clear: () => void;
27
+ }
28
+ export declare class DataSourceCacheDefault {
29
+ private cache;
30
+ private ttl;
31
+ constructor({
32
+ ttl
33
+ }: DataSourceCacheDefaultConfig);
34
+ set(key: string, value: TreeViewItemMeta[]): void;
35
+ get(key: string): TreeViewItemMeta[] | undefined | -1;
36
+ clear(): void;
37
+ }
38
+ export {};
@@ -0,0 +1,31 @@
1
+ export class DataSourceCacheDefault {
2
+ constructor({
3
+ ttl = 300000
4
+ }) {
5
+ this.cache = void 0;
6
+ this.ttl = void 0;
7
+ this.cache = {};
8
+ this.ttl = ttl;
9
+ }
10
+ set(key, value) {
11
+ const expiry = Date.now() + this.ttl;
12
+ this.cache[key] = {
13
+ value,
14
+ expiry
15
+ };
16
+ }
17
+ get(key) {
18
+ const entry = this.cache[key];
19
+ if (!entry) {
20
+ return undefined;
21
+ }
22
+ if (Date.now() > entry.expiry) {
23
+ delete this.cache[key];
24
+ return -1;
25
+ }
26
+ return entry.value;
27
+ }
28
+ clear() {
29
+ this.cache = {};
30
+ }
31
+ }
@@ -0,0 +1 @@
1
+ export * from "./cache.js";
@@ -0,0 +1 @@
1
+ export * from "./cache.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-tree-view",
3
- "version": "8.0.0-alpha.13",
3
+ "version": "8.0.0-alpha.14",
4
4
  "description": "The community edition of the Tree View components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./index.js",