Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added queryOptions to ReferenceManyField (#9669) #9679

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Nela62
Copy link

@Nela62 Nela62 commented Feb 24, 2024

Closes #9669

  • Added queryOptions to ReferenceManyField.tsx and useReferenceManyFieldController.ts
  • Added <RecordType> to const record = useRecordContext(props) in ReferenceManyField.tsx

Copy link
Member

@fzaninotto fzaninotto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a new feature, so it has to target next rather than master. Also, please add a unit test to make sure the feature works (e.g.

it('should accept a meta in query options', async () => {
const getOne = jest
.fn()
.mockImplementationOnce(() =>
Promise.resolve({ data: { id: 0, title: 'hello' } })
);
const dataProvider = ({ getOne } as unknown) as DataProvider;
render(
<CoreAdminContext dataProvider={dataProvider}>
<EditController
{...defaultProps}
resource="posts"
queryOptions={{ meta: { foo: 'bar' } }}
>
{() => <div />}
</EditController>
</CoreAdminContext>
);
await waitFor(() => {
expect(getOne).toHaveBeenCalledWith('posts', {
id: 12,
meta: { foo: 'bar' },
});
});
});
});
)

@@ -178,6 +181,7 @@ export const useReferenceManyFieldController = <
pagination: { page, perPage },
sort,
filter: filterValues,
meta,
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should also pass the remaining quetry options to the query, see e.g.

@@ -26,6 +26,7 @@ export interface UseReferenceManyFieldControllerParams<
sort?: SortPayload;
source?: string;
target: string;
queryOptions?: { meta?: any };
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bad type. This should be UseGetManyReferenceHookOptions<RecordType>

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean that I should change it like this?

export interface UseGetManyReferenceHookOptions<RecordType> {
  meta?: any
}
...
  queryOptions?: UseGetManyReferenceHookOptions<RecordType>

This is the type of queryOptions in ReferenceOneField.tsx, which I used as a reference

queryOptions?: UseQueryOptions<{
        data: ReferenceRecordType[];
        total: number;
    }> & { meta?: any };

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Nela62

Indeed there is no UseGetManyReferenceHookOptions. But I believe what @fzaninotto means is that you should use the same type as what useGetManyReference() expects, plus meta, i.e.:

queryOptions?: UseQueryOptions<{ data: RecordType[]; total: number }, Error> & { meta?: any };

@@ -118,6 +120,7 @@ export interface ReferenceManyFieldProps<
reference: string;
sort?: SortPayload;
target: string;
queryOptions?: { meta?: any };
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add a meta prop to react-admin reference components
3 participants