first step in the show record page with a morph relation. (#15109)
Adds the field on the Show page and side panel for Morph relation fields. Updates `packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenMorphRelationOneToManyFieldInput.tsx` to use the correct `recordPickerInstanceId` when opening the picker so the helper consistently renders (fixes [core-team-issues #1324](https://github.com/twentyhq/core-team-issues/issues/1324)). --------- Co-authored-by: Charles Bochet <charles@twenty.com> Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
This commit is contained in:
@@ -4,7 +4,7 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataIte
|
||||
import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { generateEmptyFieldValue } from '@/object-record/utils/generateEmptyFieldValue';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { computeMorphRelationFieldName, isDefined } from 'twenty-shared/utils';
|
||||
import { FieldMetadataType, RelationType } from '~/generated/graphql';
|
||||
|
||||
type PrefillRecordArgs = {
|
||||
@@ -35,6 +35,28 @@ export const prefillRecord = <T extends ObjectRecord>({
|
||||
[fieldMetadataItem.settings?.joinColumnName, joinColumnValue],
|
||||
];
|
||||
}
|
||||
if (
|
||||
fieldMetadataItem.type === FieldMetadataType.MORPH_RELATION &&
|
||||
fieldMetadataItem.settings?.relationType === RelationType.MANY_TO_ONE
|
||||
) {
|
||||
const gqlFields = fieldMetadataItem.morphRelations?.map(
|
||||
(morphRelation) => {
|
||||
return computeMorphRelationFieldName({
|
||||
fieldName: fieldMetadataItem.name,
|
||||
relationType: morphRelation.type,
|
||||
targetObjectMetadataNameSingular:
|
||||
morphRelation.targetObjectMetadata.nameSingular,
|
||||
targetObjectMetadataNamePlural:
|
||||
morphRelation.targetObjectMetadata.namePlural,
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
return gqlFields?.flatMap((gqlField) => [
|
||||
[gqlField, fieldValue],
|
||||
[`${gqlField}Id`, input[`${gqlField}Id`] ?? null],
|
||||
]);
|
||||
}
|
||||
|
||||
return [[fieldMetadataItem.name, fieldValue]];
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user