@@ -9,6 +9,7 @@ import { useListContext } from './useListContext';
99import {
1010 AuthProvider ,
1111 DataProvider ,
12+ GetListResult ,
1213 I18nProvider ,
1314 IsOffline ,
1415 ListBaseProps ,
@@ -51,11 +52,8 @@ const data = {
5152 ] ,
5253} ;
5354
54- const defaultDataProvider = fakeRestProvider (
55- data ,
56- process . env . NODE_ENV !== 'test' ,
57- 300
58- ) ;
55+ const defaultDataProvider = ( delay = 300 ) =>
56+ fakeRestProvider ( data , process . env . NODE_ENV !== 'test' , delay ) ;
5957
6058const BookListView = ( ) => {
6159 const {
@@ -128,7 +126,7 @@ const BookListView = () => {
128126} ;
129127
130128export const NoAuthProvider = ( {
131- dataProvider = defaultDataProvider ,
129+ dataProvider = defaultDataProvider ( ) ,
132130} : {
133131 dataProvider ?: DataProvider ;
134132} ) => (
@@ -146,7 +144,7 @@ export const WithAuthProviderNoAccessControl = ({
146144 checkAuth : ( ) => new Promise ( resolve => setTimeout ( resolve , 300 ) ) ,
147145 checkError : ( ) => Promise . resolve ( ) ,
148146 } ,
149- dataProvider = defaultDataProvider ,
147+ dataProvider = defaultDataProvider ( ) ,
150148 ListProps,
151149} : {
152150 authProvider ?: AuthProvider ;
@@ -173,7 +171,7 @@ export const AccessControl = ({
173171 checkError : ( ) => Promise . resolve ( ) ,
174172 canAccess : ( ) => new Promise ( resolve => setTimeout ( resolve , 300 , true ) ) ,
175173 } ,
176- dataProvider = defaultDataProvider ,
174+ dataProvider = defaultDataProvider ( ) ,
177175} : {
178176 authProvider ?: AuthProvider ;
179177 dataProvider ?: DataProvider ;
@@ -190,7 +188,7 @@ export const AccessControl = ({
190188) ;
191189
192190export const SetParams = ( ) => (
193- < CoreAdminContext dataProvider = { defaultDataProvider } >
191+ < CoreAdminContext dataProvider = { defaultDataProvider ( ) } >
194192 < ListBase resource = "books" perPage = { 5 } >
195193 < BookListView />
196194 </ ListBase >
@@ -207,33 +205,33 @@ const ListMetadataInspector = () => {
207205 ) ;
208206} ;
209207
210- export const WithResponseMetadata = ( ) => (
211- < CoreAdminContext
212- dataProvider = { {
213- ... defaultDataProvider ,
214- getList : async ( resource , params ) => {
215- const result = await defaultDataProvider . getList (
216- resource ,
217- params
218- ) ;
219- return {
220- ... result ,
221- meta : {
222- facets : [
223- { value : 'bar ' , count : 2 } ,
224- { value : 'baz' , count : 1 } ,
225- ] ,
226- } ,
227- } ;
228- } ,
229- } }
230- >
231- < ListBase resource = "books" perPage = { 5 } >
232- < BookListView />
233- < ListMetadataInspector / >
234- </ ListBase >
235- </ CoreAdminContext >
236- ) ;
208+ export const WithResponseMetadata = ( ) => {
209+ const dataProvider = defaultDataProvider ( ) ;
210+ return (
211+ < CoreAdminContext
212+ dataProvider = { {
213+ ... dataProvider ,
214+ getList : async ( resource , params ) => {
215+ const result = await dataProvider . getList ( resource , params ) ;
216+ return {
217+ ... result ,
218+ meta : {
219+ facets : [
220+ { value : 'bar' , count : 2 } ,
221+ { value : 'baz ' , count : 1 } ,
222+ ] ,
223+ } ,
224+ } ;
225+ } ,
226+ } }
227+ >
228+ < ListBase resource = "books" perPage = { 5 } >
229+ < BookListView / >
230+ < ListMetadataInspector />
231+ </ ListBase >
232+ </ CoreAdminContext >
233+ ) ;
234+ } ;
237235
238236const defaultI18nProvider = polyglotI18nProvider (
239237 locale =>
@@ -283,7 +281,7 @@ export const DefaultTitle = ({
283281 translations ?: 'default' | 'resource specific' ;
284282} ) => (
285283 < CoreAdminContext
286- dataProvider = { defaultDataProvider }
284+ dataProvider = { defaultDataProvider ( ) }
287285 i18nProvider = { i18nProvider }
288286 >
289287 < ListBase resource = "books" perPage = { 5 } >
@@ -293,7 +291,7 @@ export const DefaultTitle = ({
293291) ;
294292
295293export const WithRenderProps = ( {
296- dataProvider = defaultDataProvider ,
294+ dataProvider = defaultDataProvider ( ) ,
297295} : {
298296 dataProvider ?: DataProvider ;
299297} ) => (
@@ -358,7 +356,7 @@ DefaultTitle.argTypes = {
358356} ;
359357
360358export const Offline = ( {
361- dataProvider = defaultDataProvider ,
359+ dataProvider = defaultDataProvider ( ) ,
362360 isOnline = true ,
363361 ...props
364362} : {
@@ -440,6 +438,35 @@ Offline.argTypes = {
440438 } ,
441439} ;
442440
441+ export const EmptyWhileLoading = ( ) => {
442+ let resolveGetList : ( ( ) => void ) | null = null ;
443+ const baseProvider = defaultDataProvider ( 0 ) ;
444+ const dataProvider = {
445+ ...baseProvider ,
446+ getList : ( resource , params ) => {
447+ return new Promise < GetListResult > ( resolve => {
448+ resolveGetList = ( ) =>
449+ resolve ( baseProvider . getList ( resource , params ) ) ;
450+ } ) ;
451+ } ,
452+ } ;
453+
454+ return (
455+ < CoreAdminContext dataProvider = { dataProvider } >
456+ < button
457+ onClick = { ( ) => {
458+ resolveGetList && resolveGetList ( ) ;
459+ } }
460+ >
461+ Resolve books loading
462+ </ button >
463+ < ListBase resource = "books" perPage = { 5 } emptyWhileLoading >
464+ < BookListView />
465+ </ ListBase >
466+ </ CoreAdminContext >
467+ ) ;
468+ } ;
469+
443470const Title = ( ) => {
444471 const { defaultTitle } = useListContext ( ) ;
445472 const [ locale , setLocale ] = useLocaleState ( ) ;
0 commit comments