This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-3-test by this push:
new e9df63c2494 [v3-3-test] UI: Wrap long plugin source path in
import-error dialog (#69111) (#70737)
e9df63c2494 is described below
commit e9df63c2494c800da2f30da1dfa77df5464364ff
Author: Rahul Vats <[email protected]>
AuthorDate: Fri Jul 31 00:56:40 2026 +0530
[v3-3-test] UI: Wrap long plugin source path in import-error dialog
(#69111) (#70737)
---
.../Dashboard/Stats/PluginImportErrorsModal.tsx | 23 ++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git
a/airflow-core/src/airflow/ui/src/pages/Dashboard/Stats/PluginImportErrorsModal.tsx
b/airflow-core/src/airflow/ui/src/pages/Dashboard/Stats/PluginImportErrorsModal.tsx
index b5b35477937..99ee6934ed6 100644
---
a/airflow-core/src/airflow/ui/src/pages/Dashboard/Stats/PluginImportErrorsModal.tsx
+++
b/airflow-core/src/airflow/ui/src/pages/Dashboard/Stats/PluginImportErrorsModal.tsx
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { Heading, Text, HStack } from "@chakra-ui/react";
+import { Box, ClipboardRoot, Heading, Text, HStack } from "@chakra-ui/react";
import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { LuFileWarning } from "react-icons/lu";
@@ -24,7 +24,7 @@ import { PiFilePy } from "react-icons/pi";
import type { PluginImportErrorResponse } from "openapi/requests/types.gen";
import { SearchBar } from "src/components/SearchBar";
-import { Accordion, Dialog } from "src/components/ui";
+import { Accordion, ClipboardIconButton, Dialog } from "src/components/ui";
import { Pagination } from "src/components/ui/Pagination";
type PluginImportErrorsModalProps = {
@@ -84,10 +84,21 @@ export const PluginImportErrorsModal:
React.FC<PluginImportErrorsModalProps> = (
<Accordion.Root collapsible multiple size="md" variant="enclosed">
{visibleItems.map((importError) => (
<Accordion.Item key={importError.error}
value={importError.source}>
- <Accordion.ItemTrigger cursor="pointer">
- <PiFilePy />
- {importError.source}
- </Accordion.ItemTrigger>
+ <HStack align="stretch" gap={0} w="100%">
+ <Accordion.ItemTrigger cursor="pointer" flex="1">
+ <HStack alignItems="center" gap={2} minW={0} w="100%">
+ <PiFilePy />
+ <Text minW={0} overflowWrap="anywhere">
+ {importError.source}
+ </Text>
+ </HStack>
+ </Accordion.ItemTrigger>
+ <Box alignItems="center" display="flex" flexShrink={0}
pr={2}>
+ <ClipboardRoot value={importError.source}>
+ <ClipboardIconButton variant="outline" />
+ </ClipboardRoot>
+ </Box>
+ </HStack>
<Accordion.ItemContent>
<Text color="fg.error" fontSize="sm" whiteSpace="pre-wrap">
<code>{importError.error}</code>