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>

Reply via email to