Skip to content

Commit d1792df

Browse files
authored
Merge pull request #8846 from marmelab/fix-Title-i18n-change
Fix AppBar Title disappears on locale change
2 parents 2d7cd08 + d58229f commit d1792df

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

packages/ra-ui-materialui/src/button/LocalesMenuButton.spec.tsx

+33-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import * as React from 'react';
2-
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
3-
import { Basic } from './LocalesMenuButton.stories';
2+
import {
3+
fireEvent,
4+
render,
5+
screen,
6+
waitFor,
7+
within,
8+
} from '@testing-library/react';
9+
import { Basic, FullApp } from './LocalesMenuButton.stories';
410

511
describe('LocalesMenuButton', () => {
612
it('should allow to change language', async () => {
@@ -16,5 +22,30 @@ describe('LocalesMenuButton', () => {
1622
await waitFor(() => {
1723
expect(screen.queryByText('Tableau de bord')).not.toBeNull();
1824
});
25+
26+
fireEvent.click(screen.getAllByText('Français')[0]);
27+
fireEvent.click(screen.getByText('English'));
28+
await waitFor(() => {
29+
expect(screen.queryByText('Dashboard')).not.toBeNull();
30+
});
31+
});
32+
33+
it('should not make the title disappear', async () => {
34+
const { container } = render(<FullApp />);
35+
36+
await screen.findByText('War and Peace');
37+
let title = container.querySelector(
38+
'#react-admin-title'
39+
) as HTMLElement;
40+
expect(within(title).queryByText('Books')).not.toBeNull();
41+
42+
fireEvent.click(screen.getAllByText('English')[0]);
43+
expect(screen.queryAllByText('English').length).toEqual(2);
44+
expect(screen.queryByText('Français')).not.toBeNull();
45+
fireEvent.click(screen.getByText('Français'));
46+
47+
await screen.findAllByText('Livres');
48+
title = container.querySelector('#react-admin-title') as HTMLElement;
49+
expect(within(title).queryByText('Livres')).not.toBeNull();
1950
});
2051
});

packages/ra-ui-materialui/src/layout/Title.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ export const Title = (props: TitleProps) => {
1818
// on first mount, we don't have the container yet, so we wait for it
1919
useEffect(() => {
2020
setContainer(container => {
21-
if (container) return container;
21+
const isInTheDom =
22+
typeof document !== 'undefined' &&
23+
document.body.contains(container);
24+
if (container && isInTheDom) return container;
2225
return typeof document !== 'undefined'
2326
? document.getElementById('react-admin-title')
2427
: null;

0 commit comments

Comments
 (0)