Skip to content

Commit b39185d

Browse files
committed
remove unneeded renderPagination from ReferenceArrayFieldBase
1 parent 665c58d commit b39185d

File tree

3 files changed

+9
-93
lines changed

3 files changed

+9
-93
lines changed

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

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ describe('ReferenceArrayFieldBase', () => {
4141
return <div>{resource}</div>;
4242
};
4343
const dataProvider = testDataProvider({
44-
// @ts-ignore
4544
getList: () =>
45+
// @ts-ignore
4646
Promise.resolve({ data: [{ id: 1 }, { id: 2 }], total: 2 }),
4747
});
4848
render(
@@ -103,21 +103,11 @@ describe('ReferenceArrayFieldBase', () => {
103103
});
104104
});
105105

106-
it('should render pagination using renderPagination prop', async () => {
107-
render(<WithPagination />);
108-
await waitFor(() => {
109-
expect(screen.queryByText('1 - 3 of 8')).not.toBeNull();
110-
expect(screen.queryByText('Next Page')).not.toBeNull();
111-
expect(screen.queryByText('Previous Page')).not.toBeNull();
112-
});
113-
screen.getByText('Next Page').click();
106+
it('should not render pagination when given a render prop', async () => {
107+
render(<WithRenderProp pagination={<p>Custom Pagination</p>} />);
114108
await waitFor(() => {
115-
expect(screen.queryByText('4 - 6 of 8')).not.toBeNull();
116-
});
117-
screen.getByText('Previous Page').click();
118-
119-
await waitFor(() => {
120-
expect(screen.queryByText('1 - 3 of 8')).not.toBeNull();
109+
expect(screen.queryByText('John Lennon')).not.toBeNull();
121110
});
111+
expect(screen.queryByText('Custom Pagination')).toBeNull();
122112
});
123113
});

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

Lines changed: 3 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,10 @@ export const Loading = () => (
111111

112112
export const WithRenderProp = ({
113113
dataProvider = defaultDataProvider,
114+
pagination,
114115
}: {
115116
dataProvider?: DataProvider;
117+
pagination?: React.ReactElement;
116118
}) => (
117119
<TestMemoryRouter initialEntries={['/bands/1/show']}>
118120
<CoreAdmin
@@ -135,6 +137,7 @@ export const WithRenderProp = ({
135137
<ReferenceArrayFieldBase
136138
source="members"
137139
reference="artists"
140+
pagination={pagination}
138141
render={({ data, isPending, error }) => {
139142
if (isPending) {
140143
return <p>Loading...</p>;
@@ -164,77 +167,6 @@ export const WithRenderProp = ({
164167
</TestMemoryRouter>
165168
);
166169

167-
export const WithRenderPaginationProp = ({
168-
dataProvider = defaultDataProvider,
169-
}: {
170-
dataProvider: DataProvider;
171-
}) => (
172-
<TestMemoryRouter initialEntries={['/bands/1/show']}>
173-
<CoreAdmin
174-
dataProvider={dataProvider}
175-
queryClient={
176-
new QueryClient({
177-
defaultOptions: {
178-
queries: {
179-
retry: false,
180-
},
181-
},
182-
})
183-
}
184-
>
185-
<Resource name="artists" />
186-
<Resource
187-
name="bands"
188-
show={
189-
<ShowBase resource="bands" id={1}>
190-
<ReferenceArrayFieldBase
191-
source="members"
192-
reference="artists"
193-
perPage={3}
194-
renderPagination={({
195-
total,
196-
perPage,
197-
setPage,
198-
page,
199-
}) => {
200-
const nextPage = () => {
201-
setPage?.(page + 1);
202-
};
203-
const previousPage = () => {
204-
setPage?.(page - 1);
205-
};
206-
return (
207-
<div>
208-
<button
209-
disabled={page <= 1}
210-
onClick={previousPage}
211-
>
212-
Previous Page
213-
</button>
214-
<span>
215-
{`${(page - 1) * perPage + 1} - ${Math.min(page * perPage, total)} of ${total}`}
216-
</span>
217-
<button
218-
disabled={page >= total / perPage}
219-
onClick={nextPage}
220-
>
221-
Next Page
222-
</button>
223-
</div>
224-
);
225-
}}
226-
>
227-
<MyReferenceArrayField>
228-
<List source="name" />
229-
</MyReferenceArrayField>
230-
</ReferenceArrayFieldBase>
231-
</ShowBase>
232-
}
233-
/>
234-
</CoreAdmin>
235-
</TestMemoryRouter>
236-
);
237-
238170
const MyReferenceArrayField = (props: { children: React.ReactNode }) => {
239171
const context = useListContext();
240172

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ export const ReferenceArrayFieldBase = <
7575
children,
7676
render,
7777
pagination,
78-
renderPagination,
7978
filter,
8079
page = 1,
8180
perPage,
@@ -111,9 +110,7 @@ export const ReferenceArrayFieldBase = <
111110
<ResourceContextProvider value={reference}>
112111
<ListContextProvider value={controllerProps}>
113112
{render ? render(controllerProps) : children}
114-
{renderPagination
115-
? renderPagination(controllerProps)
116-
: pagination}
113+
{!render && pagination}
117114
</ListContextProvider>
118115
</ResourceContextProvider>
119116
);
@@ -125,9 +122,6 @@ export interface ReferenceArrayFieldBaseProps<
125122
> extends FieldProps<RecordType> {
126123
children?: ReactNode;
127124
render?: (props: ListControllerResult<ReferenceRecordType>) => ReactElement;
128-
renderPagination?: (
129-
props: ListControllerResult<ReferenceRecordType>
130-
) => ReactElement;
131125
filter?: FilterPayload;
132126
page?: number;
133127
pagination?: ReactElement;

0 commit comments

Comments
 (0)