From 81b8456ff06f43bdaaa29cb0dd5d350a97bd6958 Mon Sep 17 00:00:00 2001 From: Alban Bailly Date: Wed, 29 Oct 2025 12:01:02 +0100 Subject: [PATCH 1/3] UIE-9456 & UIE-9457 --- .../RolesTable/AssignSelectedRolesDrawer.tsx | 2 +- .../IAM/Roles/RolesTable/RolesTable.tsx | 25 +++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/manager/src/features/IAM/Roles/RolesTable/AssignSelectedRolesDrawer.tsx b/packages/manager/src/features/IAM/Roles/RolesTable/AssignSelectedRolesDrawer.tsx index 40fec42a1ea..9194cfd11b1 100644 --- a/packages/manager/src/features/IAM/Roles/RolesTable/AssignSelectedRolesDrawer.tsx +++ b/packages/manager/src/features/IAM/Roles/RolesTable/AssignSelectedRolesDrawer.tsx @@ -179,7 +179,7 @@ export const AssignSelectedRolesDrawer = ({ })} > - Users + User { const theme = useTheme(); - // Filter string for the search bar - const [filterString, setFilterString] = React.useState(''); + const navigate = useNavigate(); + const location = useLocation(); + const { query } = useSearch({ + strict: false, + }); + const [filterableEntityType, setFilterableEntityType] = useState(ALL_ROLES_OPTION); const [sort, setSort] = useState< @@ -94,10 +99,11 @@ export const RolesTable = ({ roles = [] }: Props) => { ); }; - const filteredRows = React.useMemo( - () => getFilteredRows(filterString, filterableEntityType?.value), - [roles, filterString, filterableEntityType] - ); + const filteredRows = React.useMemo(() => { + if (!query) return roles; + + return getFilteredRows(query, filterableEntityType?.value); + }, [roles, query, filterableEntityType]); // Get just the list of entity types from this list of roles, to be used in the selection filter const filterableOptions = React.useMemo(() => { @@ -137,7 +143,10 @@ export const RolesTable = ({ roles = [] }: Props) => { }; const handleTextFilter = (fs: string) => { - setFilterString(fs); + navigate({ + to: location.pathname, + search: { query: fs !== '' ? fs : undefined }, + }); pagination.handlePageChange(1); }; @@ -199,7 +208,7 @@ export const RolesTable = ({ roles = [] }: Props) => { label="Search" onSearch={handleTextFilter} placeholder="Search" - value={filterString} + value={query ?? ''} />