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

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


The following commit(s) were added to refs/heads/v3-1-test by this push:
     new 883cd40c986 Manually backport fix reset pagination (#61169)
883cd40c986 is described below

commit 883cd40c9869e3416881e4358096c6e397c10e65
Author: Brent Bovenzi <[email protected]>
AuthorDate: Wed Jan 28 12:25:22 2026 -0500

    Manually backport fix reset pagination (#61169)
---
 .../src/airflow/ui/src/pages/AssetsList/AssetsList.tsx  | 11 ++++++-----
 .../airflow/ui/src/pages/Connections/Connections.tsx    | 11 +++++------
 .../ui/src/pages/Dag/Tasks/TaskFilters/TaskFilters.tsx  |  6 ++++--
 .../src/airflow/ui/src/pages/DagsList/DagsList.tsx      | 17 +++++++++++++----
 airflow-core/src/airflow/ui/src/pages/Pools/Pools.tsx   |  9 +++++----
 .../src/airflow/ui/src/pages/Variables/Variables.tsx    | 11 +++++------
 6 files changed, 38 insertions(+), 27 deletions(-)

diff --git a/airflow-core/src/airflow/ui/src/pages/AssetsList/AssetsList.tsx 
b/airflow-core/src/airflow/ui/src/pages/AssetsList/AssetsList.tsx
index f45520c765a..669708397fb 100644
--- a/airflow-core/src/airflow/ui/src/pages/AssetsList/AssetsList.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/AssetsList/AssetsList.tsx
@@ -31,7 +31,7 @@ import { ExpandCollapseButtons } from 
"src/components/ExpandCollapseButtons";
 import RenderedJsonField from "src/components/RenderedJsonField";
 import { SearchBar } from "src/components/SearchBar";
 import Time from "src/components/Time";
-import { SearchParamsKeys } from "src/constants/searchParams";
+import { SearchParamsKeys, type SearchParamsKeysType } from 
"src/constants/searchParams";
 import { CreateAssetEvent } from "src/pages/Asset/CreateAssetEvent";
 
 import { DependencyPopover } from "./DependencyPopover";
@@ -112,13 +112,13 @@ const createColumns = (
   },
 ];
 
-const NAME_PATTERN_PARAM = SearchParamsKeys.NAME_PATTERN;
+const { NAME_PATTERN, OFFSET }: SearchParamsKeysType = SearchParamsKeys;
 
 export const AssetsList = () => {
   const { t: translate } = useTranslation(["assets", "common"]);
   const [searchParams, setSearchParams] = useSearchParams();
 
-  const namePattern = searchParams.get(NAME_PATTERN_PARAM) ?? "";
+  const namePattern = searchParams.get(NAME_PATTERN) ?? "";
 
   const { setTableURLState, tableURLState } = useTableURLState();
   const { pagination, sorting } = tableURLState;
@@ -142,10 +142,11 @@ export const AssetsList = () => {
       sorting,
     });
     if (value) {
-      searchParams.set(NAME_PATTERN_PARAM, value);
+      searchParams.set(NAME_PATTERN, value);
     } else {
-      searchParams.delete(NAME_PATTERN_PARAM);
+      searchParams.delete(NAME_PATTERN);
     }
+    searchParams.delete(OFFSET);
     setSearchParams(searchParams);
   };
 
diff --git a/airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx 
b/airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx
index 2ce24264d89..f6a56708637 100644
--- a/airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx
@@ -127,10 +127,8 @@ export const Connections = () => {
   const { t: translate } = useTranslation(["admin", "common"]);
   const { setTableURLState, tableURLState } = useTableURLState();
   const [searchParams, setSearchParams] = useSearchParams();
-  const { NAME_PATTERN: NAME_PATTERN_PARAM }: SearchParamsKeysType = 
SearchParamsKeys;
-  const [connectionIdPattern, setConnectionIdPattern] = useState(
-    searchParams.get(NAME_PATTERN_PARAM) ?? undefined,
-  );
+  const { NAME_PATTERN, OFFSET }: SearchParamsKeysType = SearchParamsKeys;
+  const [connectionIdPattern, setConnectionIdPattern] = 
useState(searchParams.get(NAME_PATTERN) ?? undefined);
 
   useConnectionTypeMeta(); // Pre-fetch connection type metadata
   const { pagination, sorting } = tableURLState;
@@ -163,14 +161,15 @@ export const Connections = () => {
 
   const handleSearchChange = (value: string) => {
     if (value) {
-      searchParams.set(NAME_PATTERN_PARAM, value);
+      searchParams.set(NAME_PATTERN, value);
     } else {
-      searchParams.delete(NAME_PATTERN_PARAM);
+      searchParams.delete(NAME_PATTERN);
     }
     setTableURLState({
       pagination: { ...pagination, pageIndex: 0 },
       sorting,
     });
+    searchParams.delete(OFFSET);
     setSearchParams(searchParams);
     setConnectionIdPattern(value);
   };
diff --git 
a/airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskFilters/TaskFilters.tsx 
b/airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskFilters/TaskFilters.tsx
index 3abd8b9e238..a5cdcd8ad65 100644
--- 
a/airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskFilters/TaskFilters.tsx
+++ 
b/airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskFilters/TaskFilters.tsx
@@ -23,12 +23,13 @@ import { useSearchParams } from "react-router-dom";
 import type { TaskCollectionResponse } from "openapi/requests";
 import { SearchBar } from "src/components/SearchBar.tsx";
 import { ResetButton } from "src/components/ui";
-import { SearchParamsKeys } from "src/constants/searchParams.ts";
+import { SearchParamsKeys, type SearchParamsKeysType } from 
"src/constants/searchParams.ts";
 import { AttrSelectFilter } from 
"src/pages/Dag/Tasks/TaskFilters/AttrSelectFilter.tsx";
 import { AttrSelectFilterMulti } from 
"src/pages/Dag/Tasks/TaskFilters/AttrSelectFilterMulti.tsx";
 
 export const TaskFilters = ({ tasksData }: { readonly tasksData: 
TaskCollectionResponse | undefined }) => {
-  const { MAPPED, NAME_PATTERN, OPERATOR, RETRIES, TRIGGER_RULE } = 
SearchParamsKeys;
+  const { MAPPED, NAME_PATTERN, OFFSET, OPERATOR, RETRIES, TRIGGER_RULE }: 
SearchParamsKeysType =
+    SearchParamsKeys;
   const { t: translate } = useTranslation("tasks");
   const [searchParams, setSearchParams] = useSearchParams();
   const selectedOperators = searchParams.getAll(OPERATOR);
@@ -85,6 +86,7 @@ export const TaskFilters = ({ tasksData }: { readonly 
tasksData: TaskCollectionR
     } else {
       searchParams.delete(NAME_PATTERN);
     }
+    searchParams.delete(OFFSET);
     setSearchParams(searchParams);
   };
 
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 748cf5772bb..1855a32d421 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
@@ -45,7 +45,7 @@ import { NeedsReviewBadge } from 
"src/components/NeedsReviewBadge";
 import { SearchBar } from "src/components/SearchBar";
 import { TogglePause } from "src/components/TogglePause";
 import TriggerDAGButton from "src/components/TriggerDag/TriggerDAGButton";
-import { SearchParamsKeys } from "src/constants/searchParams";
+import { SearchParamsKeys, type SearchParamsKeysType } from 
"src/constants/searchParams";
 import { DagsLayout } from "src/layouts/DagsLayout";
 import { useConfig } from "src/queries/useConfig";
 import { useDags } from "src/queries/useDags";
@@ -181,8 +181,17 @@ const createColumns = (
   },
 ];
 
-const { FAVORITE, LAST_DAG_RUN_STATE, NAME_PATTERN, NEEDS_REVIEW, OWNERS, 
PAUSED, TAGS, TAGS_MATCH_MODE } =
-  SearchParamsKeys;
+const {
+  FAVORITE,
+  LAST_DAG_RUN_STATE,
+  NAME_PATTERN,
+  NEEDS_REVIEW,
+  OFFSET,
+  OWNERS,
+  PAUSED,
+  TAGS,
+  TAGS_MATCH_MODE,
+}: SearchParamsKeysType = SearchParamsKeys;
 
 const cardDef: CardDef<DAGWithLatestDagRunsResponse> = {
   card: ({ row }) => <DagCard dag={row} />,
@@ -231,7 +240,7 @@ export const DagsList = () => {
     } else {
       searchParams.delete(NAME_PATTERN);
     }
-    searchParams.delete("offset");
+    searchParams.delete(OFFSET);
     setSearchParams(searchParams);
   };
 
diff --git a/airflow-core/src/airflow/ui/src/pages/Pools/Pools.tsx 
b/airflow-core/src/airflow/ui/src/pages/Pools/Pools.tsx
index c72311ca2b4..6643e92f901 100644
--- a/airflow-core/src/airflow/ui/src/pages/Pools/Pools.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Pools/Pools.tsx
@@ -53,8 +53,8 @@ export const Pools = () => {
     ],
   });
   const [searchParams, setSearchParams] = useSearchParams();
-  const { NAME_PATTERN: NAME_PATTERN_PARAM }: SearchParamsKeysType = 
SearchParamsKeys;
-  const [poolNamePattern, setPoolNamePattern] = 
useState(searchParams.get(NAME_PATTERN_PARAM) ?? undefined);
+  const { NAME_PATTERN, OFFSET }: SearchParamsKeysType = SearchParamsKeys;
+  const [poolNamePattern, setPoolNamePattern] = 
useState(searchParams.get(NAME_PATTERN) ?? undefined);
 
   const { setTableURLState, tableURLState } = useTableURLState();
   const { pagination, sorting } = tableURLState;
@@ -70,10 +70,11 @@ export const Pools = () => {
 
   const handleSearchChange = (value: string) => {
     if (value) {
-      searchParams.set(NAME_PATTERN_PARAM, value);
+      searchParams.set(NAME_PATTERN, value);
     } else {
-      searchParams.delete(NAME_PATTERN_PARAM);
+      searchParams.delete(NAME_PATTERN);
     }
+    searchParams.delete(OFFSET);
     setSearchParams(searchParams);
     setPoolNamePattern(value);
   };
diff --git a/airflow-core/src/airflow/ui/src/pages/Variables/Variables.tsx 
b/airflow-core/src/airflow/ui/src/pages/Variables/Variables.tsx
index c6457fd50d1..fdea3be2383 100644
--- a/airflow-core/src/airflow/ui/src/pages/Variables/Variables.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Variables/Variables.tsx
@@ -117,10 +117,8 @@ export const Variables = () => {
     sorting: [{ desc: false, id: "key" }],
   }); // To make multiselection smooth
   const [searchParams, setSearchParams] = useSearchParams();
-  const { NAME_PATTERN: NAME_PATTERN_PARAM }: SearchParamsKeysType = 
SearchParamsKeys;
-  const [variableKeyPattern, setVariableKeyPattern] = useState(
-    searchParams.get(NAME_PATTERN_PARAM) ?? undefined,
-  );
+  const { NAME_PATTERN, OFFSET }: SearchParamsKeysType = SearchParamsKeys;
+  const [variableKeyPattern, setVariableKeyPattern] = 
useState(searchParams.get(NAME_PATTERN) ?? undefined);
   const [selectedVariables, setSelectedVariables] = useState<Record<string, 
string | undefined>>({});
   const { pagination, sorting } = tableURLState;
   const [sort] = sorting;
@@ -153,14 +151,15 @@ export const Variables = () => {
 
   const handleSearchChange = (value: string) => {
     if (value) {
-      searchParams.set(NAME_PATTERN_PARAM, value);
+      searchParams.set(NAME_PATTERN, value);
     } else {
-      searchParams.delete(NAME_PATTERN_PARAM);
+      searchParams.delete(NAME_PATTERN);
     }
     setTableURLState({
       pagination: { ...pagination, pageIndex: 0 },
       sorting,
     });
+    searchParams.delete(OFFSET);
     setSearchParams(searchParams);
     setVariableKeyPattern(value);
   };

Reply via email to