@@ -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 ,
@@ -19,15 +22,53 @@ import { TextField } from '../field/TextField';
1922import ShowButton from './ShowButton' ;
2023import { Show } from '../detail/Show' ;
2124import { SimpleShowLayout } from '../detail/SimpleShowLayout' ;
25+ import { LocalesMenuButton } from './LocalesMenuButton' ;
2226
2327export default { title : 'ra-ui-materialui/button/ShowButton' } ;
2428
29+ const defaultI18nProvider = ( ) =>
30+ polyglotI18nProvider (
31+ locale => ( locale === 'fr' ? frenchMessages : englishMessages ) ,
32+ 'en' ,
33+ [
34+ { locale : 'en' , name : 'English' } ,
35+ { locale : 'fr' , name : 'Français' } ,
36+ ]
37+ ) ;
38+
39+ const customI18nProvider = polyglotI18nProvider (
40+ locale =>
41+ locale === 'fr'
42+ ? mergeTranslations ( frenchMessages , {
43+ resources : {
44+ books : {
45+ action : {
46+ show : 'Voir %{recordRepresentation}' ,
47+ } ,
48+ } ,
49+ } ,
50+ } )
51+ : mergeTranslations ( englishMessages , {
52+ resources : {
53+ books : {
54+ action : {
55+ show : 'See %{recordRepresentation}' ,
56+ } ,
57+ } ,
58+ } ,
59+ } ) ,
60+ 'en' ,
61+ [
62+ { locale : 'en' , name : 'English' } ,
63+ { locale : 'fr' , name : 'Français' } ,
64+ ]
65+ ) ;
66+
2567export const Basic = ( { buttonProps } : { buttonProps ?: any } ) => (
2668 < TestMemoryRouter >
2769 < AdminContext
28- i18nProvider = { polyglotI18nProvider ( locale =>
29- locale === 'fr' ? frenchMessages : englishMessages
30- ) }
70+ i18nProvider = { defaultI18nProvider ( ) }
71+ store = { memoryStore ( ) }
3172 >
3273 < ResourceContextProvider value = "books" >
3374 < RecordContextProvider value = { { id : 1 } } >
@@ -38,6 +79,47 @@ export const Basic = ({ buttonProps }: { buttonProps?: any }) => (
3879 </ TestMemoryRouter >
3980) ;
4081
82+ export const Label = ( {
83+ translations = 'default' ,
84+ i18nProvider = translations === 'default'
85+ ? defaultI18nProvider ( )
86+ : customI18nProvider ,
87+ label,
88+ } : {
89+ i18nProvider ?: I18nProvider ;
90+ translations ?: 'default' | 'resource specific' ;
91+ label ?: string ;
92+ } ) => (
93+ < TestMemoryRouter >
94+ < AdminContext
95+ dataProvider = { dataProvider }
96+ i18nProvider = { i18nProvider }
97+ store = { memoryStore ( ) }
98+ >
99+ < ResourceContextProvider value = "books" >
100+ < RecordContextProvider
101+ value = { { id : 1 , title : 'War and Peace' } }
102+ >
103+ < div >
104+ < ShowButton label = { label } />
105+ </ div >
106+ </ RecordContextProvider >
107+ < LocalesMenuButton />
108+ </ ResourceContextProvider >
109+ </ AdminContext >
110+ </ TestMemoryRouter >
111+ ) ;
112+
113+ Label . args = {
114+ translations : 'default' ,
115+ } ;
116+ Label . argTypes = {
117+ translations : {
118+ options : [ 'default' , 'resource specific' ] ,
119+ control : { type : 'radio' } ,
120+ } ,
121+ } ;
122+
41123export const AccessControl = ( ) => {
42124 const queryClient = new QueryClient ( ) ;
43125
@@ -78,10 +160,9 @@ const AccessControlAdmin = ({ queryClient }: { queryClient: QueryClient }) => {
78160 < AdminContext
79161 dataProvider = { dataProvider }
80162 authProvider = { authProvider }
81- i18nProvider = { polyglotI18nProvider ( locale =>
82- locale === 'fr' ? frenchMessages : englishMessages
83- ) }
163+ i18nProvider = { defaultI18nProvider ( ) }
84164 queryClient = { queryClient }
165+ store = { memoryStore ( ) }
85166 >
86167 < AdminUI
87168 layout = { ( { children } ) => (
0 commit comments