From 5c839678cdb1aabfc84021807ec2a00a64e85d3f Mon Sep 17 00:00:00 2001 From: Gustav Hansen Date: Tue, 13 Sep 2022 15:18:32 +0200 Subject: [PATCH] RelationInputWrapper: Fix and properly transform query params for components --- .../RelationInputWrapper/utils/select.js | 6 ++++-- .../utils/tests/select.test.js | 19 +++++++++++++++++++ .../utils/formatLayouts.js | 2 +- .../utils/tests/formatLayouts.test.js | 2 +- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/core/admin/admin/src/content-manager/components/RelationInputWrapper/utils/select.js b/packages/core/admin/admin/src/content-manager/components/RelationInputWrapper/utils/select.js index 5cf8358155..2df852067e 100644 --- a/packages/core/admin/admin/src/content-manager/components/RelationInputWrapper/utils/select.js +++ b/packages/core/admin/admin/src/content-manager/components/RelationInputWrapper/utils/select.js @@ -48,12 +48,14 @@ function useSelect({ isUserAllowedToEditField, isUserAllowedToReadField, name, q return null; } - return getRequestUrl(`${collectionTypePrefix}/${slug}/${initialData.id}/${name}`); + return getRequestUrl( + `${collectionTypePrefix}/${slug}/${initialData.id}/${name.split('.').at(-1)}` + ); }, [isCreatingEntry, slug, initialData, name, isSingleType]); // /content-manager/relations/[content-type]/[field-name] const relationSearchEndpoint = useMemo(() => { - return getRequestUrl(`relations/${slug}/${name}`); + return getRequestUrl(`relations/${slug}/${name.split('.').at(-1)}`); }, [slug, name]); return { diff --git a/packages/core/admin/admin/src/content-manager/components/RelationInputWrapper/utils/tests/select.test.js b/packages/core/admin/admin/src/content-manager/components/RelationInputWrapper/utils/tests/select.test.js index e77cf2c32a..4c16352302 100644 --- a/packages/core/admin/admin/src/content-manager/components/RelationInputWrapper/utils/tests/select.test.js +++ b/packages/core/admin/admin/src/content-manager/components/RelationInputWrapper/utils/tests/select.test.js @@ -163,4 +163,23 @@ describe('RelationInputWrapper | select', () => { }, }); }); + + test('splits the name properly, so that components are handled for endpoints', async () => { + useCMEditViewDataManager.mockReturnValueOnce({ + ...CM_DATA_FIXTURE, + isCreatingEntry: false, + }); + + const { result } = await setup({ + ...SELECT_ATTR_FIXTURE, + name: 'someting.component-name.field-name', + }); + + expect(result.current.queryInfos).toStrictEqual({ + endpoints: { + relation: '/content-manager/collection-types/slug/2/field-name', + search: '/content-manager/relations/slug/field-name', + }, + }); + }); }); diff --git a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js index 053192b9cd..f05a43fdec 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js @@ -174,7 +174,7 @@ const generateRelationQueryInfosForComponents = (contentTypeConfiguration, field return { defaultParams: { - _component: contentTypeConfiguration.uid, + component: contentTypeConfiguration.uid, }, shouldDisplayRelationLink, }; diff --git a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/tests/formatLayouts.test.js b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/tests/formatLayouts.test.js index 9f62c67a3d..4a255a6e6b 100644 --- a/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/tests/formatLayouts.test.js +++ b/packages/core/admin/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/tests/formatLayouts.test.js @@ -568,7 +568,7 @@ describe('Content Manager | hooks | useFetchContentTypeLayout | utils ', () => { generateRelationQueryInfosForComponents(addressSchema, 'categories', simpleModels) ).toEqual({ defaultParams: { - _component: 'api::address.address', + component: 'api::address.address', }, shouldDisplayRelationLink: true, });