Morph-front-display-table (#13979)
## Add Morph Relation Field Display Support for Tables (one to many & many to one) **Features:** - Display morph relation fields (one-to-many, many-to-one) in table cells - Multi-field record retrieval for improved performance - Enhanced table cell rendering with morph relation support **Components Added:** - `MorphRelationManyToOneFieldDisplay` - Shows many-to-one morph relations - `MorphRelationOneToManyFieldDisplay` - Shows one-to-many morph relations TODO : handle notes and tasks case if we choose these kind of objects as targets/source for a morph relation --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@@ -2,19 +2,25 @@ import { type ReactNode, useEffect, useState } from 'react';
|
||||
import { useSetRecoilState } from 'recoil';
|
||||
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems';
|
||||
|
||||
export const JestObjectMetadataItemSetter = ({
|
||||
children,
|
||||
objectMetadataItems,
|
||||
}: {
|
||||
children: ReactNode;
|
||||
objectMetadataItems?: ObjectMetadataItem[];
|
||||
}) => {
|
||||
const setObjectMetadataItems = useSetRecoilState(objectMetadataItemsState);
|
||||
const [isLoaded, setIsLoaded] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
setObjectMetadataItems(generatedMockObjectMetadataItems);
|
||||
setObjectMetadataItems(
|
||||
objectMetadataItems ?? generatedMockObjectMetadataItems,
|
||||
);
|
||||
setIsLoaded(true);
|
||||
}, [setObjectMetadataItems]);
|
||||
}, [objectMetadataItems, setObjectMetadataItems]);
|
||||
|
||||
return isLoaded ? <>{children}</> : null;
|
||||
};
|
||||
|
||||
@@ -4,6 +4,7 @@ import { RecoilRoot, type MutableSnapshot } from 'recoil';
|
||||
|
||||
import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext';
|
||||
|
||||
import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { RecordComponentInstanceContextsWrapper } from '@/object-record/components/RecordComponentInstanceContextsWrapper';
|
||||
import { SnackBarComponentInstanceContext } from '@/ui/feedback/snack-bar-manager/contexts/SnackBarComponentInstanceContext';
|
||||
import { ViewComponentInstanceContext } from '@/views/states/contexts/ViewComponentInstanceContext';
|
||||
@@ -15,12 +16,14 @@ export const getJestMetadataAndApolloMocksWrapper = ({
|
||||
apolloMocks,
|
||||
cache,
|
||||
onInitializeRecoilSnapshot,
|
||||
objectMetadataItems,
|
||||
}: {
|
||||
cache?: InMemoryCache;
|
||||
apolloMocks?:
|
||||
| readonly MockedResponse<Record<string, any>, Record<string, any>>[]
|
||||
| undefined;
|
||||
onInitializeRecoilSnapshot?: (snapshot: MutableSnapshot) => void;
|
||||
objectMetadataItems?: ObjectMetadataItem[];
|
||||
}) => {
|
||||
return ({ children }: { children: ReactNode }) => (
|
||||
<RecoilRoot initializeState={onInitializeRecoilSnapshot}>
|
||||
@@ -34,7 +37,9 @@ export const getJestMetadataAndApolloMocksWrapper = ({
|
||||
<ViewComponentInstanceContext.Provider
|
||||
value={{ instanceId: 'instanceId' }}
|
||||
>
|
||||
<JestObjectMetadataItemSetter>
|
||||
<JestObjectMetadataItemSetter
|
||||
objectMetadataItems={objectMetadataItems}
|
||||
>
|
||||
<ContextStoreComponentInstanceContext.Provider
|
||||
value={{ instanceId: 'instanceId' }}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user