Fix Toaster in Plugin in Edge UI#55641
Conversation
0e30e30 to
104551a
Compare
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 5 days if no further activity occurs. Thank you for your contributions. |
|
Up |
104551a to
770c74f
Compare
|
up for ~1200 commits :-D |
770c74f to
f976a86
Compare
|
up for ~720 commits :-D (again) |
|
@pierrejeambrun Interesting, still do not understand the root cause why a toaster is not working on Plugins pages but what I noticed in the browser is that there is a This one is missing on the Plugins page - and don't know if this helps in trigaing - but noticed when navigating to Admin -> Configs (url: |
pierrejeambrun
left a comment
There was a problem hiding this comment.
I would have to investigate. But my guess is that Chakra UI handles the toaster via 'portals' into a specific unique dom element that is global. So basically any toaster will render in that shared toast-group element.
Then there might be some sort of conflict, the plugin toast can't find the proper host element to portal the toast to.
I'm sorry for the delay and not finding time to look at this yet.
f976a86 to
525a1cb
Compare
|
up by 700 commits |
bbovenzi
left a comment
There was a problem hiding this comment.
I gave you pseudo code. Here is exactly what you need:
toaster.tsx:
import { Toaster as ChakraToaster, Portal, Spinner, Stack, Toast, createToaster } from "@chakra-ui/react";
import type { RefObject } from "react";
export const toaster = createToaster({
pauseOnPageIdle: true,
placement: "bottom-end",
});
export const Toaster = ({ containerRef }: { containerRef: RefObject<HTMLDivElement | null> }) => (
<Portal container={containerRef}>
<ChakraToaster toaster={toaster} insetInline={{ mdDown: "4" }}>
{(toast) => (
<Toast.Root width={{ md: "sm" }}>
{toast.type === "loading" ? <Spinner size="sm" color="blue.solid" /> : <Toast.Indicator />}
<Stack gap="1" flex="1" maxWidth="100%">
{toast.title && <Toast.Title>{toast.title}</Toast.Title>}
{toast.description && <Toast.Description>{toast.description}</Toast.Description>}
</Stack>
{toast.action && <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>}
{toast.closable && <Toast.CloseTrigger />}
</Toast.Root>
)}
</ChakraToaster>
</Portal>
);
EdgeLayout.tsx:
import { Box } from "@chakra-ui/react";
import { useRef } from "react";
import { Navigate, Route, Routes } from "react-router-dom";
import { Toaster } from "src/components/ui";
import { JobsPage } from "src/pages/JobsPage";
import { WorkerPage } from "src/pages/WorkerPage";
import { NavTabs } from "./NavTabs";
export const EdgeLayout = () => {
const containerRef = useRef<HTMLDivElement>(null);
const tabs = [
{ label: "Edge Worker", value: "worker" },
{ label: "Edge Jobs", value: "jobs" },
];
return (
<Box ref={containerRef} p={2} /* Compensate for parent padding from ExternalView */>
<NavTabs tabs={tabs} />
<Routes>
<Route index element={<Navigate to="worker" replace />} />
<Route path="worker" element={<WorkerPage />} />
<Route path="jobs" element={<JobsPage />} />
</Routes>
<Toaster containerRef={containerRef} />
</Box>
);
};
* Attempt to fix Toaster in Plugin * Attempt to fix via proposal * Revert testing of toaster open * Fix toaster using hints from Brent

With hints from @bbovenzi this PR now fixes the Toaster display in Edge Executor UI! Thanks! That was a longer endeavor.
This is how it looks now after the fix... toaster content/logic was in all the time already...
edge-toaster-fix-2026-03-01_21.59.59.mp4
Previous PR Intro:
There is a teething problem that the Chakra "Toast" component is not working in Edge React UI. I need some React Expertise to fix it seems.
@shubhamraj-git / @bbovenzi / @pierrejeambrun HELP :-D
To make this reprodicible I made two toasters:
1 in the Navbar and one in te Edge UI plugin.
How to see the error:
breeze start-airflow --python 3.12 --backend postgres --executor EdgeExecutor --load-example-dagsIs this a limitation of the plugin concept or a bug in my Plugin? How can the Toaster be made working?