Skip to content

Commit 00c5b83

Browse files
benakansarakelvtanv
authored andcommitted
[Alerting v2] Fix rule preview error in alerting_v2 due to missing EUI theme context (elastic#261476)
Resolves elastic#260954 ### Summary - Fixes `Cannot read properties of undefined (reading 'font')` error when rendering the Lens chart in the alerting_v2 rule preview - Wraps both app mount functions with `coreStart.rendering.addContext()` to provide the EUI theme (and other Kibana global context) to the React tree ### Root Cause The alerting_v2 app mounts via ReactDOM.render() which creates a standalone React tree without any EUI ThemeProvider. When Lens renders its embeddable chart inside the rule preview, `lnsNumericFontStyles` reads `euiTheme.font.family` (PR: elastic#251576) from Emotion's theme context which is undefined without the provider, causing the error. ### Testing - Open alerting_v2 rule form and trigger a rule preview with an ES|QL query that renders a Lens chart - Verify the chart renders without errors - Verify notification policies page still loads correctly ### Screenshots <img width="1234" height="781" alt="Screenshot 2026-04-07 at 10 21 24 AM" src="https://github.com/user-attachments/assets/9375415e-8aae-493a-b8c3-006db48333ca" />
1 parent 303bc6d commit 00c5b83

2 files changed

Lines changed: 37 additions & 24 deletions

File tree

x-pack/platform/plugins/shared/alerting_v2/public/application/mount.tsx

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import React from 'react';
99
import ReactDOM from 'react-dom';
1010
import type { Container } from 'inversify';
1111
import type { AppMountParameters, AppUnmount } from '@kbn/core-application-browser';
12-
import type { ChromeBreadcrumb } from '@kbn/core/public';
12+
import type { ChromeBreadcrumb, CoreStart } from '@kbn/core/public';
1313
import { Context } from '@kbn/core-di-browser';
1414
import { Router } from '@kbn/shared-ux-router';
1515
import { I18nProvider } from '@kbn/i18n-react';
@@ -27,26 +27,30 @@ interface AlertingV2MountParams {
2727
export const mountAlertingV2App = ({
2828
params,
2929
container,
30+
coreStart,
3031
}: {
3132
params: AlertingV2MountParams;
3233
container: Container;
34+
coreStart: CoreStart;
3335
}): AppUnmount => {
3436
const { element, history, setBreadcrumbs } = params;
3537

3638
const queryClient = new QueryClient();
3739

3840
ReactDOM.render(
39-
<Context.Provider value={container}>
40-
<QueryClientProvider client={queryClient}>
41-
<BreadcrumbProvider setBreadcrumbs={setBreadcrumbs}>
42-
<I18nProvider>
43-
<Router history={history}>
44-
<RulesApp />
45-
</Router>
46-
</I18nProvider>
47-
</BreadcrumbProvider>
48-
</QueryClientProvider>
49-
</Context.Provider>,
41+
coreStart.rendering.addContext(
42+
<Context.Provider value={container}>
43+
<QueryClientProvider client={queryClient}>
44+
<BreadcrumbProvider setBreadcrumbs={setBreadcrumbs}>
45+
<I18nProvider>
46+
<Router history={history}>
47+
<RulesApp />
48+
</Router>
49+
</I18nProvider>
50+
</BreadcrumbProvider>
51+
</QueryClientProvider>
52+
</Context.Provider>
53+
),
5054
element
5155
);
5256

@@ -56,26 +60,30 @@ export const mountAlertingV2App = ({
5660
export const mountNotificationPoliciesApp = ({
5761
params,
5862
container,
63+
coreStart,
5964
}: {
6065
params: AlertingV2MountParams;
6166
container: Container;
67+
coreStart: CoreStart;
6268
}): AppUnmount => {
6369
const { element, history, setBreadcrumbs } = params;
6470

6571
const queryClient = new QueryClient();
6672

6773
ReactDOM.render(
68-
<Context.Provider value={container}>
69-
<QueryClientProvider client={queryClient}>
70-
<BreadcrumbProvider setBreadcrumbs={setBreadcrumbs}>
71-
<I18nProvider>
72-
<Router history={history}>
73-
<NotificationPoliciesApp />
74-
</Router>
75-
</I18nProvider>
76-
</BreadcrumbProvider>
77-
</QueryClientProvider>
78-
</Context.Provider>,
74+
coreStart.rendering.addContext(
75+
<Context.Provider value={container}>
76+
<QueryClientProvider client={queryClient}>
77+
<BreadcrumbProvider setBreadcrumbs={setBreadcrumbs}>
78+
<I18nProvider>
79+
<Router history={history}>
80+
<NotificationPoliciesApp />
81+
</Router>
82+
</I18nProvider>
83+
</BreadcrumbProvider>
84+
</QueryClientProvider>
85+
</Context.Provider>
86+
),
7987
element
8088
);
8189

x-pack/platform/plugins/shared/alerting_v2/public/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ export const module = new ContainerModule(({ bind }) => {
6464
async mount(params) {
6565
const [coreStart] = await getStartServices();
6666
const { mountAlertingV2App } = await import('./application/mount');
67-
return mountAlertingV2App({ params, container: coreStart.injection.getContainer() });
67+
return mountAlertingV2App({
68+
params,
69+
container: coreStart.injection.getContainer(),
70+
coreStart,
71+
});
6872
},
6973
});
7074

@@ -78,6 +82,7 @@ export const module = new ContainerModule(({ bind }) => {
7882
return mountNotificationPoliciesApp({
7983
params,
8084
container: coreStart.injection.getContainer(),
85+
coreStart,
8186
});
8287
},
8388
});

0 commit comments

Comments
 (0)