Skip to content

Commit c6911a0

Browse files
committed
Add context to render empty, error and loading components
1 parent 979444c commit c6911a0

4 files changed

Lines changed: 68 additions & 12 deletions

File tree

packages/ra-core/src/controller/field/ReferenceArrayFieldBase.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,20 @@ export const ReferenceArrayFieldBase = <
109109
}
110110

111111
if (controllerProps.isPending && loading) {
112-
return loading;
112+
return (
113+
<ResourceContextProvider value={reference}>
114+
{loading}
115+
</ResourceContextProvider>
116+
);
113117
}
114118
if (controllerProps.error && error) {
115-
return error;
119+
return (
120+
<ResourceContextProvider value={reference}>
121+
<ListContextProvider value={controllerProps}>
122+
{error}
123+
</ListContextProvider>
124+
</ResourceContextProvider>
125+
);
116126
}
117127
if (
118128
// there is an empty page component
@@ -133,7 +143,11 @@ export const ReferenceArrayFieldBase = <
133143
// the user didn't set any filters
134144
!Object.keys(controllerProps.filterValues).length
135145
) {
136-
return empty;
146+
return (
147+
<ResourceContextProvider value={reference}>
148+
{empty}
149+
</ResourceContextProvider>
150+
);
137151
}
138152

139153
return (

packages/ra-core/src/controller/field/ReferenceFieldBase.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,20 @@ export const ReferenceFieldBase = <
6060
}
6161

6262
if (controllerProps.isPending && loading) {
63-
return loading;
63+
return (
64+
<ResourceContextProvider value={props.reference}>
65+
{loading}
66+
</ResourceContextProvider>
67+
);
6468
}
6569
if (controllerProps.error && error) {
66-
return error;
70+
return (
71+
<ResourceContextProvider value={props.reference}>
72+
<ReferenceFieldContextProvider value={controllerProps}>
73+
{error}
74+
</ReferenceFieldContextProvider>
75+
</ResourceContextProvider>
76+
);
6777
}
6878
if (
6979
(empty &&
@@ -74,7 +84,11 @@ export const ReferenceFieldBase = <
7484
!controllerProps.isPending &&
7585
!controllerProps.referenceRecord)
7686
) {
77-
return empty;
87+
return (
88+
<ResourceContextProvider value={props.reference}>
89+
{empty}
90+
</ResourceContextProvider>
91+
);
7892
}
7993

8094
return (

packages/ra-core/src/controller/field/ReferenceManyFieldBase.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,20 @@ export const ReferenceManyFieldBase = <
105105
}
106106

107107
if (controllerProps.isPending && loading) {
108-
return loading;
108+
return (
109+
<ResourceContextProvider value={reference}>
110+
{loading}
111+
</ResourceContextProvider>
112+
);
109113
}
110114
if (controllerProps.error && error) {
111-
return error;
115+
return (
116+
<ResourceContextProvider value={reference}>
117+
<ListContextProvider value={controllerProps}>
118+
{error}
119+
</ListContextProvider>
120+
</ResourceContextProvider>
121+
);
112122
}
113123
if (
114124
// there is an empty page component
@@ -129,7 +139,11 @@ export const ReferenceManyFieldBase = <
129139
// the user didn't set any filters
130140
!Object.keys(controllerProps.filterValues).length
131141
) {
132-
return empty;
142+
return (
143+
<ResourceContextProvider value={reference}>
144+
{empty}
145+
</ResourceContextProvider>
146+
);
133147
}
134148

135149
return (

packages/ra-core/src/controller/field/ReferenceOneFieldBase.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,30 @@ export const ReferenceOneFieldBase = <
7979

8080
const recordFromContext = useRecordContext<RecordType>(props);
8181
if (controllerProps.isPending && loading) {
82-
return loading;
82+
return (
83+
<ResourceContextProvider value={reference}>
84+
{loading}
85+
</ResourceContextProvider>
86+
);
8387
}
8488
if (controllerProps.error && error) {
85-
return error;
89+
return (
90+
<ResourceContextProvider value={reference}>
91+
<ReferenceFieldContextProvider value={context}>
92+
{error}
93+
</ReferenceFieldContextProvider>
94+
</ResourceContextProvider>
95+
);
8696
}
8797
if (
8898
!recordFromContext ||
8999
(!controllerProps.isPending && controllerProps.referenceRecord == null)
90100
) {
91-
return empty;
101+
return (
102+
<ResourceContextProvider value={reference}>
103+
{empty}
104+
</ResourceContextProvider>
105+
);
92106
}
93107

94108
return (

0 commit comments

Comments
 (0)