Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions airflow-core/src/airflow/ui/src/layouts/Nav/Nav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
import { Box, Flex, VStack } from "@chakra-ui/react";

/* eslint-disable i18next/no-literal-string */
import { Box, Button, Flex, VStack } from "@chakra-ui/react";
import { useTranslation } from "react-i18next";
import { FiDatabase, FiHome } from "react-icons/fi";
import { Link } from "react-router-dom";
Expand All @@ -29,6 +31,7 @@ import {
import type { ExternalViewResponse } from "openapi/requests/types.gen";
import { AirflowPin } from "src/assets/AirflowPin";
import { DagIcon } from "src/assets/DagIcon";
import { toaster } from "src/components/ui";
import type { NavItemResponse } from "src/utils/types";

import { AdminButton } from "./AdminButton";
Expand All @@ -39,6 +42,16 @@ import { PluginMenus } from "./PluginMenus";
import { SecurityButton } from "./SecurityButton";
import { UserSettingsButton } from "./UserSettingsButton";

const onToasterTestClick = () => {
console.log("Nav onToasterTestClick");
toaster.create({
description: `Toaster from Nav via imported toaster.`,
title: "Test Toaster Imported",
type: "success",
});
console.log("Nav onToasterTestClick DONE");
};

// Define existing button categories to filter out
const existingCategories = ["user", "docs", "admin", "browse"];

Expand Down Expand Up @@ -183,7 +196,8 @@ export const Nav = () => {
<SecurityButton />
<PluginMenus navItems={navItemsWithLegacy} />
</Flex>
<Flex flexDir="column" gap={1}>
<Flex flexDir="column">
<Button onClick={onToasterTestClick}>Toaster</Button>
<DocsButton
externalViews={docsItems}
showAPI={authLinks?.authorized_menu_items.includes("Docs")}
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

export * from "./Alert";
export * from "./CloseButton";
export * from "./createToaster";
export * from "./InputGroup";
export * from "./toaster";
export * from "./ScrollToAnchor";
export * from "./Select";
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,29 @@
* specific language governing permissions and limitations
* under the License.
*/
import { createToaster } from "@chakra-ui/react";
import { Toaster as ChakraToaster, Portal, Spinner, Stack, Toast, createToaster } from "@chakra-ui/react";

export const toaster = createToaster({
pauseOnPageIdle: true,
placement: "bottom-end",
});

export const Toaster = () => {
return (
<Portal>
<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>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
import { Box, Code, HStack, Link, List, Table, Text, type SelectValueChangeDetails } from "@chakra-ui/react";
import { Box, Button, Code, HStack, Link, List, Table, Text, type SelectValueChangeDetails } from "@chakra-ui/react";
import { useState, useCallback } from "react";
import { useUiServiceWorker } from "openapi/queries";
import { LuExternalLink } from "react-icons/lu";
Expand All @@ -26,7 +26,7 @@ import { ErrorAlert } from "src/components/ErrorAlert";
import { SearchBar } from "src/components/SearchBar";
import { WorkerOperations } from "src/components/WorkerOperations";
import { WorkerStateBadge } from "src/components/WorkerStateBadge";
import { ScrollToAnchor, Select } from "src/components/ui";
import { ScrollToAnchor, Select, toaster } from "src/components/ui";
import { workerStateOptions } from "src/constants";
import { autoRefreshInterval } from "src/utils";
import type { EdgeWorkerState } from "openapi/requests/types.gen";
Expand All @@ -50,6 +50,15 @@ export const WorkerPage = () => {
refetchInterval: autoRefreshInterval,
},
);
const onToasterTestClick = () => {
console.log("Nav onToasterTestClick");
toaster.create({
description: `Toaster from Plugin.`,
title: "Test Toaster",
type: "success",
});
console.log("Nav onToasterTestClick DONE");
};

const handleWorkerSearchChange = (value: string) => {
setWorkerNamePattern(value);
Expand All @@ -76,7 +85,6 @@ export const WorkerPage = () => {
// Add links with filter to see jobs on worker
// Add time zone support for time display
// Translation?

return (
<Box p={2}>
<HStack gap={4} mb={4}>
Expand Down Expand Up @@ -204,6 +212,7 @@ export const WorkerPage = () => {
</Table.Body>
</Table.Root>
<ScrollToAnchor />
<Button onClick={onToasterTestClick}>Open a Toaster in Plugin</Button>
</>
) : (
<Text as="div" pl={2} pt={1}>
Expand Down
2 changes: 1 addition & 1 deletion providers/edge3/www-hash.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
59d2cfc1e5e92248ce8fe9367b534344e86c15c2ebb57394b188566dd0ec70f3
4dbc222de076380a16fc867b967c5ca4d4af10ab608cfc9716e2298073d9b63b
Loading