diff --git a/packages/core/admin/admin/src/content-manager/components/RelationInput/components/Option.js b/packages/core/admin/admin/src/content-manager/components/RelationInput/components/Option.js index 7e151060bd..e13dcdf5e7 100644 --- a/packages/core/admin/admin/src/content-manager/components/RelationInput/components/Option.js +++ b/packages/core/admin/admin/src/content-manager/components/RelationInput/components/Option.js @@ -20,6 +20,7 @@ const StyledBullet = styled.div` export const Option = ({ publicationState, mainField, id }) => { const { formatMessage } = useIntl(); + const stringifiedDisplayValue = (mainField ?? id).toString(); if (publicationState) { const isDraft = publicationState === 'draft'; @@ -34,18 +35,18 @@ export const Option = ({ publicationState, mainField, id }) => { const title = isDraft ? formatMessage(draftMessage) : formatMessage(publishedMessage); return ( - + - {mainField ?? id} + {stringifiedDisplayValue} ); } return ( - - {mainField ?? id} + + {stringifiedDisplayValue} ); }; @@ -57,6 +58,6 @@ Option.defaultProps = { Option.propTypes = { id: PropTypes.number.isRequired, - mainField: PropTypes.string, + mainField: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), publicationState: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]), }; diff --git a/packages/core/admin/admin/src/content-manager/components/RelationInput/components/tests/Option.test.js b/packages/core/admin/admin/src/content-manager/components/RelationInput/components/tests/Option.test.js index 3e76973f89..5011efbecc 100644 --- a/packages/core/admin/admin/src/content-manager/components/RelationInput/components/tests/Option.test.js +++ b/packages/core/admin/admin/src/content-manager/components/RelationInput/components/tests/Option.test.js @@ -44,4 +44,14 @@ describe('Content-Manager || RelationInput || Option', () => { expect(getByText('relation 1')).toBeInTheDocument(); expect(getByTitle('State: Draft')).toBeInTheDocument(); }); + + it('should render custom Option with mainField prop as number type', async () => { + const { user, getByRole } = setup({ + options: [{ id: 1, mainField: 1, publicationState: 'published' }], + }); + + await user.click(getByRole('combobox')); + + expect(getByRole('option', { publicationState: 'State: Published' })).toBeInTheDocument(); + }); });