Skip to content

Commit f933e8c

Browse files
authored
Merge pull request marmelab#10291 from marmelab/fix-list-no-result-i18n
Fix no results message has untranslated resource name
2 parents 733108d + 2c29d7d commit f933e8c

File tree

5 files changed

+42
-24
lines changed

5 files changed

+42
-24
lines changed

packages/ra-language-english/src/index.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,8 @@ const englishMessages: TranslationMessages = {
119119
},
120120
navigation: {
121121
clear_filters: 'Clear filters',
122-
no_filtered_results:
123-
'No %{resource} found using the current filters.',
124-
no_results: 'No %{resource} found',
122+
no_filtered_results: 'No %{name} found using the current filters.',
123+
no_results: 'No %{name} found',
125124
no_more_results:
126125
'The page number %{page} is out of boundaries. Try the previous page.',
127126
page_out_of_boundaries: 'Page number %{page} out of boundaries',

packages/ra-ui-materialui/src/list/InfiniteList.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ const CustomPagination = () => {
220220
return (
221221
<>
222222
<InfinitePagination />
223-
{total > 0 && (
223+
{total && total > 0 && (
224224
<Box position="sticky" bottom={0} textAlign="center">
225225
<Card
226226
elevation={2}
Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import { useList, ListContextProvider } from 'ra-core';
2+
import { useList, ListContextProvider, ResourceContextProvider } from 'ra-core';
33
import { ThemeProvider, createTheme } from '@mui/material';
44
import { ListNoResults } from './ListNoResults';
55

@@ -10,27 +10,33 @@ export default {
1010
export const NoFilter = () => {
1111
const context = useList<any>({ data: [] });
1212
return (
13-
<ListContextProvider value={context}>
14-
{context.data?.length === 0 && <ListNoResults />}
15-
</ListContextProvider>
13+
<ResourceContextProvider value="posts">
14+
<ListContextProvider value={context}>
15+
{context.data?.length === 0 && <ListNoResults />}
16+
</ListContextProvider>
17+
</ResourceContextProvider>
1618
);
1719
};
1820

1921
export const WithFilter = () => {
2022
const context = useList<any>({ data: [{ id: 1 }], filter: { id: 2 } });
2123
return (
22-
<ThemeProvider theme={createTheme()}>
23-
<ListContextProvider value={context}>
24-
{context.data?.length === 0 ? (
25-
<ListNoResults />
26-
) : (
27-
<ul>
28-
{context.data?.map(record => (
29-
<li key={record.id}>{JSON.stringify(record)}</li>
30-
))}
31-
</ul>
32-
)}
33-
</ListContextProvider>
34-
</ThemeProvider>
24+
<ResourceContextProvider value="posts">
25+
<ThemeProvider theme={createTheme()}>
26+
<ListContextProvider value={context}>
27+
{context.data?.length === 0 ? (
28+
<ListNoResults />
29+
) : (
30+
<ul>
31+
{context.data?.map(record => (
32+
<li key={record.id}>
33+
{JSON.stringify(record)}
34+
</li>
35+
))}
36+
</ul>
37+
)}
38+
</ListContextProvider>
39+
</ThemeProvider>
40+
</ResourceContextProvider>
3541
);
3642
};

packages/ra-ui-materialui/src/list/ListNoResults.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,32 @@
11
import * as React from 'react';
22
import { CardContent, Typography } from '@mui/material';
3-
import { useListContext, useResourceContext, useTranslate } from 'ra-core';
3+
import {
4+
useGetResourceLabel,
5+
useListContext,
6+
useResourceContext,
7+
useTranslate,
8+
} from 'ra-core';
49

510
import { Button } from '../button';
611

712
export const ListNoResults = () => {
813
const translate = useTranslate();
914
const resource = useResourceContext();
1015
const { filterValues, setFilters } = useListContext();
16+
const getResourceLabel = useGetResourceLabel();
17+
if (!resource) {
18+
throw new Error(
19+
'<ListNoResults> must be used inside a <List> component'
20+
);
21+
}
1122
return (
1223
<CardContent>
1324
<Typography variant="body2">
1425
{filterValues && Object.keys(filterValues).length > 0 ? (
1526
<>
1627
{translate('ra.navigation.no_filtered_results', {
1728
resource,
29+
name: getResourceLabel(resource, 1),
1830
_: 'No results found with the current filters.',
1931
})}{' '}
2032
<Button
@@ -27,6 +39,7 @@ export const ListNoResults = () => {
2739
) : (
2840
translate('ra.navigation.no_results', {
2941
resource,
42+
name: getResourceLabel(resource, 1),
3043
_: 'No results found.',
3144
})
3245
)}

packages/ra-ui-materialui/src/list/SimpleList/SimpleList.spec.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ describe('<SimpleList />', () => {
168168
});
169169

170170
expect(
171-
await screen.findByText('No posts found using the current filters.')
171+
await screen.findByText('No Post found using the current filters.')
172172
).not.toBeNull();
173173
expect(screen.getByText('Clear filters')).not.toBeNull();
174174

@@ -179,7 +179,7 @@ describe('<SimpleList />', () => {
179179
);
180180

181181
expect(
182-
screen.queryByText('No posts found using the current filters.')
182+
screen.queryByText('No Post found using the current filters.')
183183
).toBeNull();
184184
expect(screen.queryByText('Clear filters')).toBeNull();
185185
expect(

0 commit comments

Comments
 (0)