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

jscheffl pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 32c2d7ad240 feat: persist Dag search query across navigation (#54059)
32c2d7ad240 is described below

commit 32c2d7ad2400998e42d740570a7377bf1de09c2d
Author: Yeonguk Choo <[email protected]>
AuthorDate: Mon Aug 4 05:55:14 2025 +0900

    feat: persist Dag search query across navigation (#54059)
    
    * feat: persist Dag search query across navigation
    
    * switch from localStorage to sessionStorage for Dag search pattern
---
 airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
index 7874008f6ad..f3f785218a5 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
@@ -31,7 +31,7 @@ import type { ColumnDef } from "@tanstack/react-table";
 import { useCallback, useState, useMemo } from "react";
 import { useTranslation } from "react-i18next";
 import { Link as RouterLink, useSearchParams } from "react-router-dom";
-import { useLocalStorage } from "usehooks-ts";
+import { useLocalStorage, useSessionStorage } from "usehooks-ts";
 
 import type { DagRunState, DAGWithLatestDagRunsResponse } from 
"openapi/requests/types.gen";
 import DeleteDagButton from "src/components/DagActions/DeleteDagButton";
@@ -203,8 +203,9 @@ export const DagsList = () => {
   const { setTableURLState, tableURLState } = useTableURLState();
 
   const { pagination, sorting } = tableURLState;
+  const [savedSearchPattern, setSavedSearchPattern] = 
useSessionStorage("dags_search_temp", "");
   const [dagDisplayNamePattern, setDagDisplayNamePattern] = useState(
-    searchParams.get(NAME_PATTERN) ?? undefined,
+    searchParams.get(NAME_PATTERN) ?? savedSearchPattern,
   );
 
   const [sort] = sorting;
@@ -213,6 +214,7 @@ export const DagsList = () => {
   const columns = useMemo(() => createColumns(translate), [translate]);
 
   const handleSearchChange = (value: string) => {
+    setSavedSearchPattern(value);
     if (value) {
       searchParams.set(NAME_PATTERN, value);
     } else {
@@ -244,7 +246,7 @@ export const DagsList = () => {
   }
 
   const { data, error, isLoading } = useDags({
-    dagDisplayNamePattern: Boolean(dagDisplayNamePattern) ? 
`${dagDisplayNamePattern}` : undefined,
+    dagDisplayNamePattern: Boolean(dagDisplayNamePattern) ? 
dagDisplayNamePattern : undefined,
     dagRunsLimit,
     isFavorite,
     lastDagRunState,
@@ -275,7 +277,7 @@ export const DagsList = () => {
       <VStack alignItems="none">
         <SearchBar
           buttonProps={{ disabled: true }}
-          defaultValue={dagDisplayNamePattern ?? ""}
+          defaultValue={dagDisplayNamePattern}
           onChange={handleSearchChange}
           placeHolder={translate("dags:search.dags")}
         />

Reply via email to