diff --git a/packages/frontend-plugin-api/report.api.md b/packages/frontend-plugin-api/report.api.md index 571ce51c86..9d7856b98d 100644 --- a/packages/frontend-plugin-api/report.api.md +++ b/packages/frontend-plugin-api/report.api.md @@ -1717,6 +1717,8 @@ export interface OverridableFrontendPlugin< // (undocumented) withOverrides(options: { extensions: Array; + title?: string; + icon?: IconComponent; info?: FrontendPluginInfoOptions; }): OverridableFrontendPlugin; } diff --git a/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.ts b/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.ts index 8fa32f6ccd..2a80824f70 100644 --- a/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.ts +++ b/packages/frontend-plugin-api/src/wiring/createFrontendPlugin.ts @@ -113,7 +113,17 @@ export interface OverridableFrontendPlugin< id: TId, ): OverridableExtensionDefinition; withOverrides(options: { - extensions: Array; + extensions?: Array; + + /** + * Overrides the display title of the plugin. + */ + title?: string; + + /** + * Overrides the display icon of the plugin. + */ + icon?: IconComponent; /** * Overrides the original info loaders of the plugin one by one. @@ -296,8 +306,9 @@ export function createFrontendPlugin< return `Plugin{id=${pluginId}}`; }, withOverrides(overrides) { + const overrideExtensions = overrides.extensions ?? []; const overriddenExtensionIds = new Set( - overrides.extensions.map( + overrideExtensions.map( e => resolveExtensionDefinition(e, { namespace: pluginId }).id, ), ); @@ -310,7 +321,9 @@ export function createFrontendPlugin< return createFrontendPlugin({ ...options, pluginId, - extensions: [...nonOverriddenExtensions, ...overrides.extensions], + title: overrides.title ?? options.title, + icon: overrides.icon ?? options.icon, + extensions: [...nonOverriddenExtensions, ...overrideExtensions], info: { ...options.info, ...overrides.info,