From 73be01fdba3ea9633cd460217f05bd012729f855 Mon Sep 17 00:00:00 2001 From: adrien guernier Date: Tue, 6 Feb 2024 15:22:14 +0100 Subject: [PATCH 1/7] Fix: no old LabelPrefix concatenation --- .../ra-core/src/util/LabelPrefixContextProvider.tsx | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/packages/ra-core/src/util/LabelPrefixContextProvider.tsx b/packages/ra-core/src/util/LabelPrefixContextProvider.tsx index b5d0efa6cf0..f8a7e8276d2 100644 --- a/packages/ra-core/src/util/LabelPrefixContextProvider.tsx +++ b/packages/ra-core/src/util/LabelPrefixContextProvider.tsx @@ -1,17 +1,9 @@ import * as React from 'react'; import { LabelPrefixContext } from './LabelPrefixContext'; -import { useLabelPrefix } from './useLabelPrefix'; -export const LabelPrefixContextProvider = ({ - prefix, - concatenate = true, - children, -}) => { - const oldPrefix = useLabelPrefix(); - const newPrefix = - oldPrefix && concatenate ? `${oldPrefix}.${prefix}` : prefix; +export const LabelPrefixContextProvider = ({ prefix, children }) => { return ( - + {children} ); From 9f2dce396ec2f5fcf66f6fc84d46aca6bf489def Mon Sep 17 00:00:00 2001 From: adrien guernier Date: Tue, 6 Feb 2024 15:22:32 +0100 Subject: [PATCH 2/7] add tests for LabelPrefixContextProvider --- .../util/LabelPrefixContextProvider.spec.tsx | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 packages/ra-core/src/util/LabelPrefixContextProvider.spec.tsx diff --git a/packages/ra-core/src/util/LabelPrefixContextProvider.spec.tsx b/packages/ra-core/src/util/LabelPrefixContextProvider.spec.tsx new file mode 100644 index 00000000000..be7a523d03a --- /dev/null +++ b/packages/ra-core/src/util/LabelPrefixContextProvider.spec.tsx @@ -0,0 +1,31 @@ +import * as React from 'react'; +import { render, screen } from '@testing-library/react'; +import { LabelPrefixContextProvider } from './LabelPrefixContextProvider'; +import { LabelPrefixContext } from './LabelPrefixContext'; + +describe('LabelPrefixContextProvider', () => { + it('should return the prefix', () => { + const Label = () => { + return <>{React.useContext(LabelPrefixContext)}; + }; + render( + + + ); + screen.getByText('resource.posts.fields.title'); + }); + it('should return the last prefix in the nested tree, even in nested contexts', () => { + const Label = () => { + return <>{React.useContext(LabelPrefixContext)}; + }; + render( + + + + + ); + screen.getByText('resource.comments.fields.body'); + }); +}); From 587b2c8f8895b0b0c2a9952c2962450595a69d39 Mon Sep 17 00:00:00 2001 From: adrien guernier Date: Tue, 6 Feb 2024 16:31:46 +0100 Subject: [PATCH 3/7] add a test SimpleFormIterator should have the correct translation keys --- .../ArrayInput/SimpleFormIterator.spec.tsx | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/ra-ui-materialui/src/input/ArrayInput/SimpleFormIterator.spec.tsx b/packages/ra-ui-materialui/src/input/ArrayInput/SimpleFormIterator.spec.tsx index e3dac119c2c..6359ff4a383 100644 --- a/packages/ra-ui-materialui/src/input/ArrayInput/SimpleFormIterator.spec.tsx +++ b/packages/ra-ui-materialui/src/input/ArrayInput/SimpleFormIterator.spec.tsx @@ -14,6 +14,7 @@ import { SimpleForm } from '../../form'; import { ArrayInput } from './ArrayInput'; import { TextInput } from '../TextInput'; import { SimpleFormIterator } from './SimpleFormIterator'; +import { Basic } from './SimpleFormIterator.stories'; describe('', () => { // bypass confirm leave form with unsaved changes @@ -978,4 +979,23 @@ describe('', () => { ); }); }); + + it('should have the correct translation keys', async () => { + render(); + const authorsTranslationKey = screen.queryByLabelText( + 'resources.books.fields.authors' + ); + + expect(authorsTranslationKey).toBeDefined(); + + const authorsNameTranslationKey = await screen.findAllByLabelText( + 'resources.books.fields.authors.name' + ); + expect(authorsNameTranslationKey).toHaveLength(2); + + const authorsRoleTranslationKey = await screen.findAllByLabelText( + 'resources.books.fields.authors.role' + ); + expect(authorsRoleTranslationKey).toHaveLength(2); + }); }); From 2f56968bc26e0d2a6eb41c2aa602264cb5ea2f47 Mon Sep 17 00:00:00 2001 From: adrien guernier Date: Tue, 6 Feb 2024 16:32:18 +0100 Subject: [PATCH 4/7] useLabelPrefix hook instead of react context --- .../ra-core/src/util/LabelPrefixContextProvider.spec.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/ra-core/src/util/LabelPrefixContextProvider.spec.tsx b/packages/ra-core/src/util/LabelPrefixContextProvider.spec.tsx index be7a523d03a..64f32bf23c7 100644 --- a/packages/ra-core/src/util/LabelPrefixContextProvider.spec.tsx +++ b/packages/ra-core/src/util/LabelPrefixContextProvider.spec.tsx @@ -1,12 +1,12 @@ import * as React from 'react'; import { render, screen } from '@testing-library/react'; import { LabelPrefixContextProvider } from './LabelPrefixContextProvider'; -import { LabelPrefixContext } from './LabelPrefixContext'; +import { useLabelPrefix } from './useLabelPrefix'; describe('LabelPrefixContextProvider', () => { it('should return the prefix', () => { const Label = () => { - return <>{React.useContext(LabelPrefixContext)}; + return <>{useLabelPrefix()}; }; render( @@ -17,7 +17,7 @@ describe('LabelPrefixContextProvider', () => { }); it('should return the last prefix in the nested tree, even in nested contexts', () => { const Label = () => { - return <>{React.useContext(LabelPrefixContext)}; + return <>{useLabelPrefix()}; }; render( From 27a64832cadce90ecac96e6bc58bc04e6d2742e8 Mon Sep 17 00:00:00 2001 From: adrien guernier Date: Wed, 7 Feb 2024 11:03:59 +0100 Subject: [PATCH 5/7] Revert "Fix: no old LabelPrefix concatenation" This reverts commit 73be01fdba3ea9633cd460217f05bd012729f855. --- .../ra-core/src/util/LabelPrefixContextProvider.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/ra-core/src/util/LabelPrefixContextProvider.tsx b/packages/ra-core/src/util/LabelPrefixContextProvider.tsx index f8a7e8276d2..b5d0efa6cf0 100644 --- a/packages/ra-core/src/util/LabelPrefixContextProvider.tsx +++ b/packages/ra-core/src/util/LabelPrefixContextProvider.tsx @@ -1,9 +1,17 @@ import * as React from 'react'; import { LabelPrefixContext } from './LabelPrefixContext'; +import { useLabelPrefix } from './useLabelPrefix'; -export const LabelPrefixContextProvider = ({ prefix, children }) => { +export const LabelPrefixContextProvider = ({ + prefix, + concatenate = true, + children, +}) => { + const oldPrefix = useLabelPrefix(); + const newPrefix = + oldPrefix && concatenate ? `${oldPrefix}.${prefix}` : prefix; return ( - + {children} ); From 281586d945a810797c479244cef35e93790728d6 Mon Sep 17 00:00:00 2001 From: adrien guernier Date: Wed, 7 Feb 2024 11:05:05 +0100 Subject: [PATCH 6/7] do not concatenate previous prefix in
--- packages/ra-core/src/form/Form.tsx | 5 ++++- .../ra-core/src/util/LabelPrefixContextProvider.spec.tsx | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/ra-core/src/form/Form.tsx b/packages/ra-core/src/form/Form.tsx index acd9fbe323c..7a35638daae 100644 --- a/packages/ra-core/src/form/Form.tsx +++ b/packages/ra-core/src/form/Form.tsx @@ -50,7 +50,10 @@ export const Form = (props: FormProps) => { return ( - + { ); screen.getByText('resource.posts.fields.title'); }); - it('should return the last prefix in the nested tree, even in nested contexts', () => { + it('should not concatenate previous prefix', () => { const Label = () => { return <>{useLabelPrefix()}; }; render( - + From 2cfa418f482e7ca7ac9930bb37a83c64c629435f Mon Sep 17 00:00:00 2001 From: adrien guernier Date: Wed, 7 Feb 2024 15:14:12 +0100 Subject: [PATCH 7/7] set concatenate prop of LabelPrefixContextProvider to false in missing file --- packages/ra-ui-materialui/src/list/filter/FilterForm.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/ra-ui-materialui/src/list/filter/FilterForm.tsx b/packages/ra-ui-materialui/src/list/filter/FilterForm.tsx index 5634f114716..47e1245ed3e 100644 --- a/packages/ra-ui-materialui/src/list/filter/FilterForm.tsx +++ b/packages/ra-ui-materialui/src/list/filter/FilterForm.tsx @@ -134,7 +134,10 @@ export const FilterFormBase = (props: FilterFormBaseProps) => { ); return ( - +