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) {