@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
@@ -1,2 +1,2 @@
1
1
  import { UseTreeItemParameters, UseTreeItemReturnValue, UseTreeItemMinimalPlugins, UseTreeItemOptionalPlugins } from "./useTreeItem.types.js";
2
- export declare const useTreeItem: <TSignatures extends UseTreeItemMinimalPlugins = UseTreeItemMinimalPlugins, TOptionalSignatures extends UseTreeItemOptionalPlugins = readonly []>(parameters: UseTreeItemParameters) => UseTreeItemReturnValue<TSignatures, TOptionalSignatures>;
2
+ export declare const useTreeItem: <TSignatures extends UseTreeItemMinimalPlugins = UseTreeItemMinimalPlugins, TOptionalSignatures extends UseTreeItemOptionalPlugins = UseTreeItemOptionalPlugins>(parameters: UseTreeItemParameters) => UseTreeItemReturnValue<TSignatures, TOptionalSignatures>;
@@ -242,6 +242,17 @@ const useTreeItem = parameters => {
242
242
  onClick: createIconContainerHandleClick(externalEventHandlers)
243
243
  });
244
244
  };
245
+ const getErrorContainerProps = (externalProps = {}) => {
246
+ const externalEventHandlers = (0, _extractEventHandlers.default)(externalProps);
247
+ return (0, _extends2.default)({}, externalEventHandlers, externalProps);
248
+ };
249
+ const getLoadingContainerProps = (externalProps = {}) => {
250
+ const externalEventHandlers = (0, _extractEventHandlers.default)(externalProps);
251
+ return (0, _extends2.default)({
252
+ size: '12px',
253
+ thickness: 6
254
+ }, externalEventHandlers, externalProps);
255
+ };
245
256
  const getGroupTransitionProps = (externalProps = {}) => {
246
257
  const externalEventHandlers = (0, _extractEventHandlers.default)(externalProps);
247
258
  const response = (0, _extends2.default)({}, externalEventHandlers, {
@@ -270,6 +281,8 @@ const useTreeItem = parameters => {
270
281
  getLabelProps,
271
282
  getLabelInputProps,
272
283
  getDragAndDropOverlayProps,
284
+ getErrorContainerProps,
285
+ getLoadingContainerProps,
273
286
  rootRef: handleRootRef,
274
287
  status,
275
288
  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 {};
package/utils/cache.js ADDED
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DataSourceCacheDefault = void 0;
7
+ class DataSourceCacheDefault {
8
+ constructor({
9
+ ttl = 300000
10
+ }) {
11
+ this.cache = void 0;
12
+ this.ttl = void 0;
13
+ this.cache = {};
14
+ this.ttl = ttl;
15
+ }
16
+ set(key, value) {
17
+ const expiry = Date.now() + this.ttl;
18
+ this.cache[key] = {
19
+ value,
20
+ expiry
21
+ };
22
+ }
23
+ get(key) {
24
+ const entry = this.cache[key];
25
+ if (!entry) {
26
+ return undefined;
27
+ }
28
+ if (Date.now() > entry.expiry) {
29
+ delete this.cache[key];
30
+ return -1;
31
+ }
32
+ return entry.value;
33
+ }
34
+ clear() {
35
+ this.cache = {};
36
+ }
37
+ }
38
+ exports.DataSourceCacheDefault = DataSourceCacheDefault;
@@ -0,0 +1 @@
1
+ export * from "./cache.js";
package/utils/index.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _cache = require("./cache");
7
+ Object.keys(_cache).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _cache[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _cache[key];
14
+ }
15
+ });
16
+ });