@@ -4,6 +4,9 @@ import englishMessages from 'ra-language-english';
44import frenchMessages from 'ra-language-french' ;
55import {
66 AuthProvider ,
7+ I18nProvider ,
8+ memoryStore ,
9+ mergeTranslations ,
710 RecordContextProvider ,
811 Resource ,
912 ResourceContextProvider ,
@@ -20,15 +23,53 @@ import { SimpleForm } from '../form/SimpleForm';
2023import { TextInput } from '../input/TextInput' ;
2124import { EditButton } from './EditButton' ;
2225import { Edit } from '../detail/Edit' ;
26+ import { LocalesMenuButton } from './LocalesMenuButton' ;
2327
2428export default { title : 'ra-ui-materialui/button/EditButton' } ;
2529
30+ const defaultI18nProvider = ( ) =>
31+ polyglotI18nProvider (
32+ locale => ( locale === 'fr' ? frenchMessages : englishMessages ) ,
33+ 'en' ,
34+ [
35+ { locale : 'en' , name : 'English' } ,
36+ { locale : 'fr' , name : 'Français' } ,
37+ ]
38+ ) ;
39+
40+ const customI18nProvider = polyglotI18nProvider (
41+ locale =>
42+ locale === 'fr'
43+ ? mergeTranslations ( frenchMessages , {
44+ resources : {
45+ books : {
46+ action : {
47+ edit : 'Modifier %{recordRepresentation}' ,
48+ } ,
49+ } ,
50+ } ,
51+ } )
52+ : mergeTranslations ( englishMessages , {
53+ resources : {
54+ books : {
55+ action : {
56+ edit : 'Change %{recordRepresentation}' ,
57+ } ,
58+ } ,
59+ } ,
60+ } ) ,
61+ 'en' ,
62+ [
63+ { locale : 'en' , name : 'English' } ,
64+ { locale : 'fr' , name : 'Français' } ,
65+ ]
66+ ) ;
67+
2668export const Basic = ( { buttonProps } : { buttonProps ?: any } ) => (
2769 < TestMemoryRouter >
2870 < AdminContext
29- i18nProvider = { polyglotI18nProvider ( locale =>
30- locale === 'fr' ? frenchMessages : englishMessages
31- ) }
71+ i18nProvider = { defaultI18nProvider ( ) }
72+ store = { memoryStore ( ) }
3273 >
3374 < ResourceContextProvider value = "books" >
3475 < RecordContextProvider value = { { id : 1 } } >
@@ -39,6 +80,47 @@ export const Basic = ({ buttonProps }: { buttonProps?: any }) => (
3980 </ TestMemoryRouter >
4081) ;
4182
83+ export const Label = ( {
84+ translations = 'default' ,
85+ i18nProvider = translations === 'default'
86+ ? defaultI18nProvider ( )
87+ : customI18nProvider ,
88+ label,
89+ } : {
90+ i18nProvider ?: I18nProvider ;
91+ translations ?: 'default' | 'resource specific' ;
92+ label ?: string ;
93+ } ) => (
94+ < TestMemoryRouter >
95+ < AdminContext
96+ dataProvider = { dataProvider }
97+ i18nProvider = { i18nProvider }
98+ store = { memoryStore ( ) }
99+ >
100+ < ResourceContextProvider value = "books" >
101+ < RecordContextProvider
102+ value = { { id : 1 , title : 'War and Peace' } }
103+ >
104+ < div >
105+ < EditButton label = { label } />
106+ </ div >
107+ </ RecordContextProvider >
108+ < LocalesMenuButton />
109+ </ ResourceContextProvider >
110+ </ AdminContext >
111+ </ TestMemoryRouter >
112+ ) ;
113+
114+ Label . args = {
115+ translations : 'default' ,
116+ } ;
117+ Label . argTypes = {
118+ translations : {
119+ options : [ 'default' , 'resource specific' ] ,
120+ control : { type : 'radio' } ,
121+ } ,
122+ } ;
123+
42124export const AccessControl = ( ) => {
43125 const queryClient = new QueryClient ( ) ;
44126
@@ -79,10 +161,9 @@ const AccessControlAdmin = ({ queryClient }: { queryClient: QueryClient }) => {
79161 < AdminContext
80162 dataProvider = { dataProvider }
81163 authProvider = { authProvider }
82- i18nProvider = { polyglotI18nProvider ( locale =>
83- locale === 'fr' ? frenchMessages : englishMessages
84- ) }
164+ i18nProvider = { defaultI18nProvider ( ) }
85165 queryClient = { queryClient }
166+ store = { memoryStore ( ) }
86167 >
87168 < AdminUI
88169 layout = { ( { children } ) => (
0 commit comments