Skip to content

Commit 7271d36

Browse files
committed
update SavedQueryFilterListItem to update listContext stateinstead of navigating
1 parent ea92743 commit 7271d36

2 files changed

Lines changed: 45 additions & 21 deletions

File tree

packages/ra-ui-materialui/src/list/filter/SavedQueriesList.stories.tsx

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ const Aside = () => (
133133
</Root>
134134
);
135135

136-
const SongList = () => (
136+
const SongList = (
137137
<List aside={<Aside />}>
138138
<DataTable rowClick="edit">
139139
<DataTable.Col source="title" />
@@ -307,3 +307,34 @@ const dataProvider = fakeRestProvider(
307307
},
308308
true
309309
);
310+
311+
export const WithDisableSyncWithLocation = () => {
312+
return (
313+
<TestMemoryRouter>
314+
<Admin dataProvider={dataProvider}>
315+
<Resource
316+
name="songs"
317+
list={props => (
318+
<List
319+
{...props}
320+
disableSyncWithLocation
321+
aside={<Aside />}
322+
>
323+
<DataTable rowClick="edit">
324+
<DataTable.Col source="title" />
325+
<DataTable.Col source="artist" />
326+
<DataTable.Col source="writer" />
327+
<DataTable.Col source="producer" />
328+
<DataTable.Col source="recordCompany" />
329+
<DataTable.NumberCol source="rank" />
330+
<DataTable.Col source="released">
331+
<DateField source="released" />
332+
</DataTable.Col>
333+
</DataTable>
334+
</List>
335+
)}
336+
/>
337+
</Admin>
338+
</TestMemoryRouter>
339+
);
340+
};

packages/ra-ui-materialui/src/list/filter/SavedQueryFilterListItem.tsx

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ import {
1212
} from '@mui/material';
1313
import CancelIcon from '@mui/icons-material/CancelOutlined';
1414
import isEqual from 'lodash/isEqual.js';
15-
import { stringify } from 'query-string';
16-
import { useListContext, SavedQuery, useNavigate } from 'ra-core';
15+
import { useListContext, SavedQuery } from 'ra-core';
1716

1817
const arePropsEqual = (
1918
prevProps: SavedQueryFilterListItemProps,
@@ -29,9 +28,14 @@ export const SavedQueryFilterListItem = memo(
2928
name: PREFIX,
3029
});
3130
const { className, label, sx, value } = props;
32-
const { filterValues, sort, perPage, displayedFilters } =
33-
useListContext();
34-
const navigate = useNavigate();
31+
const {
32+
filterValues,
33+
sort,
34+
perPage,
35+
displayedFilters,
36+
setFilters,
37+
setPage,
38+
} = useListContext();
3539

3640
const isSelected = isEqual(value, {
3741
filter: filterValues,
@@ -41,24 +45,13 @@ export const SavedQueryFilterListItem = memo(
4145
});
4246

4347
const addFilter = (): void => {
44-
navigate({
45-
search: stringify({
46-
filter: JSON.stringify(value.filter),
47-
sort: value.sort?.field,
48-
order: value.sort?.order,
49-
page: 1,
50-
perPage: value.perPage ?? perPage,
51-
displayedFilters: JSON.stringify(value.displayedFilters),
52-
}),
53-
});
48+
setFilters(value.filter, value.displayedFilters);
49+
setPage(1);
5450
};
5551

5652
const removeFilter = (): void => {
57-
navigate({
58-
search: stringify({
59-
filter: JSON.stringify({}),
60-
}),
61-
});
53+
setFilters({}, {});
54+
setPage(1);
6255
};
6356

6457
const toggleFilter = (): void =>

0 commit comments

Comments
 (0)