diff --git a/packages/x-tree-view/src/internals/models/plugin.ts b/packages/x-tree-view/src/internals/models/plugin.ts index b9459acecf93..5cbe4e634f60 100644 --- a/packages/x-tree-view/src/internals/models/plugin.ts +++ b/packages/x-tree-view/src/internals/models/plugin.ts @@ -67,7 +67,9 @@ export type TreeViewPluginSignature< >; } : {}; - experimentalFeatures: T['experimentalFeatures']; + experimentalFeatures: T extends { experimentalFeatures: string } + ? { [key in T['experimentalFeatures']]?: boolean } + : {}; dependencies: T extends { dependencies: Array } ? T['dependencies'] : []; optionalDependencies: T extends { optionalDependencies: Array } ? T['optionalDependencies'] diff --git a/packages/x-tree-view/src/internals/models/treeView.ts b/packages/x-tree-view/src/internals/models/treeView.ts index a9b5e2452203..ad86ffeb39ac 100644 --- a/packages/x-tree-view/src/internals/models/treeView.ts +++ b/packages/x-tree-view/src/internals/models/treeView.ts @@ -38,4 +38,5 @@ export type TreeViewPublicAPI< export type TreeViewExperimentalFeatures< TSignatures extends readonly TreeViewAnyPluginSignature[], -> = { [key in MergeSignaturesProperty]?: boolean }; + TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = [], +> = MergeSignaturesProperty<[...TSignatures, ...TOptionalSignatures], 'experimentalFeatures'>; diff --git a/packages/x-tree-view/src/internals/useTreeView/extractPluginParamsFromProps.ts b/packages/x-tree-view/src/internals/useTreeView/extractPluginParamsFromProps.ts index d91f18fe1b4d..cc81cb92400e 100644 --- a/packages/x-tree-view/src/internals/useTreeView/extractPluginParamsFromProps.ts +++ b/packages/x-tree-view/src/internals/useTreeView/extractPluginParamsFromProps.ts @@ -71,6 +71,6 @@ export const extractPluginParamsFromProps = < pluginParams: defaultizedPluginParams, slots: slots ?? ({} as any), slotProps: slotProps ?? ({} as any), - experimentalFeatures: experimentalFeatures ?? {}, + experimentalFeatures: experimentalFeatures ?? ({} as any), }; };