This is an automated email from the ASF dual-hosted git repository.

vatsrahul1001 pushed a commit to branch v3-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-4-test by this push:
     new 8c885416574 [v3-4-test] Reveal selected Dag folders when names contain 
pipes (#75196) (#75319)
8c885416574 is described below

commit 8c8854165748b0a766d8ac335d528a7c5ce17993
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Oct 23 15:42:56 2026 +0530

    [v3-4-test] Reveal selected Dag folders when names contain pipes (#75196) 
(#75319)
    
    Distinct bundle and folder selections can share a delimiter-joined key, 
leaving the selected folder hidden during navigation.
    (cherry picked from commit 57aedbf8c971913962feaebd7358813162088122)
    
    Co-authored-by: Himanshu Chawla <[email protected]>
    Co-authored-by: Himanshu Chawla 
<[email protected]>
---
 .../DagsList/DagFolderTree/DagFolderTree.test.tsx  | 29 ++++++++++++++++++++++
 .../pages/DagsList/DagFolderTree/DagFolderTree.tsx |  2 +-
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git 
a/airflow-core/src/airflow/ui/src/pages/DagsList/DagFolderTree/DagFolderTree.test.tsx
 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagFolderTree/DagFolderTree.test.tsx
index ad3e26a73a3..344307f93d9 100644
--- 
a/airflow-core/src/airflow/ui/src/pages/DagsList/DagFolderTree/DagFolderTree.test.tsx
+++ 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagFolderTree/DagFolderTree.test.tsx
@@ -397,3 +397,32 @@ it("selects the correct bundle when names and folder paths 
contain colons", asyn
   fireEvent.click(screen.getByTitle("c"), { button: 0 });
   await waitFor(() => expect(onSelectFolder).toHaveBeenCalledWith({ 
bundleName: "a:b", folder: "c" }));
 });
+
+it("reveals the selected folder when bundle and folder names contain pipes", 
async () => {
+  const folders = [
+    { bundle_name: "a|b", folder: "c" },
+    { bundle_name: "a", folder: "b|c" },
+  ];
+  const onSelectFolder = vi.fn();
+  const { rerender } = render(
+    <DagFolderTree
+      folders={folders}
+      onSelectFolder={onSelectFolder}
+      selectedBundle="a|b"
+      selectedFolder="c"
+    />,
+    { wrapper: BaseWrapper },
+  );
+
+  rerender(
+    <DagFolderTree
+      folders={folders}
+      onSelectFolder={onSelectFolder}
+      selectedBundle="a"
+      selectedFolder="b|c"
+    />,
+  );
+
+  expect(node("b|c")).toHaveAttribute("aria-selected", "true");
+  await waitFor(() => expect(screen.getByTitle("b|c")).toBeVisible());
+});
diff --git 
a/airflow-core/src/airflow/ui/src/pages/DagsList/DagFolderTree/DagFolderTree.tsx
 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagFolderTree/DagFolderTree.tsx
index 5f537b99874..acc564b68f4 100644
--- 
a/airflow-core/src/airflow/ui/src/pages/DagsList/DagFolderTree/DagFolderTree.tsx
+++ 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagFolderTree/DagFolderTree.tsx
@@ -133,7 +133,7 @@ export const DagFolderTree = ({
   // Folders arrive asynchronously, so the first render has no nodes to expand 
yet: re-apply the
   // auto-expansion whenever the selection resolves to different nodes (on 
load, or when the user
   // lands on a URL that already points at a nested folder). Manual expansions 
are kept.
-  const selectionKey = `${nodeBundle ?? ""}|${selectedFolder ?? 
""}|${isMultiBundle}`;
+  const selectionKey = JSON.stringify([nodeBundle, selectedFolder, 
isMultiBundle]);
   const [appliedSelectionKey, setAppliedSelectionKey] = useState(selectionKey);
 
   if (appliedSelectionKey !== selectionKey) {

Reply via email to