feat: add Relation field form (#2572)
* feat: add useCreateOneRelationMetadata and useRelationMetadata Closes #2423 * feat: add Relation field form Closes #2003 --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -7,9 +7,10 @@ export const getEntityChipFromFieldMetadata = (
|
||||
fieldDefinition: FieldDefinition<FieldRelationMetadata>,
|
||||
fieldValue: any,
|
||||
) => {
|
||||
const { entityChipDisplayMapper } = fieldDefinition;
|
||||
const { fieldName } = fieldDefinition.metadata;
|
||||
|
||||
const chipValue: Pick<
|
||||
const defaultChipValue: Pick<
|
||||
EntityChipProps,
|
||||
'name' | 'pictureUrl' | 'avatarType' | 'entityId'
|
||||
> = {
|
||||
@ -19,15 +20,23 @@ export const getEntityChipFromFieldMetadata = (
|
||||
entityId: fieldValue?.id,
|
||||
};
|
||||
|
||||
// TODO: use every
|
||||
if (fieldName === 'accountOwner' && fieldValue) {
|
||||
chipValue.name = fieldValue.name.firstName + ' ' + fieldValue.name.lastName;
|
||||
} else if (fieldName === 'company' && fieldValue) {
|
||||
chipValue.name = fieldValue.name;
|
||||
chipValue.pictureUrl = getLogoUrlFromDomainName(fieldValue.domainName);
|
||||
} else if (fieldName === 'person' && fieldValue) {
|
||||
chipValue.name = fieldValue.name.firstName + ' ' + fieldValue.name.lastName;
|
||||
if (['accountOwner', 'person'].includes(fieldName) && fieldValue) {
|
||||
return {
|
||||
...defaultChipValue,
|
||||
name: `${fieldValue.firstName} ${fieldValue.lastName}`,
|
||||
};
|
||||
}
|
||||
|
||||
return chipValue;
|
||||
if (fieldName === 'company' && fieldValue) {
|
||||
return {
|
||||
...defaultChipValue,
|
||||
name: fieldValue.name,
|
||||
pictureUrl: getLogoUrlFromDomainName(fieldValue.domainName),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
...defaultChipValue,
|
||||
...entityChipDisplayMapper?.(fieldValue),
|
||||
};
|
||||
};
|
||||
|
||||
@ -5,9 +5,10 @@ import { FieldMetadata } from './FieldMetadata';
|
||||
import { FieldType } from './FieldType';
|
||||
|
||||
export type FieldDefinitionRelationType =
|
||||
| 'TO_ONE_OBJECT'
|
||||
| 'FROM_NAMY_OBJECTS'
|
||||
| 'TO_MANY_OBJECTS';
|
||||
| 'FROM_MANY_OBJECTS'
|
||||
| 'FROM_ONE_OBJECT'
|
||||
| 'TO_MANY_OBJECTS'
|
||||
| 'TO_ONE_OBJECT';
|
||||
|
||||
export type FieldDefinition<T extends FieldMetadata> = {
|
||||
fieldMetadataId: string;
|
||||
|
||||
@ -1,8 +1,20 @@
|
||||
import { isNull, isString } from '@sniptt/guards';
|
||||
|
||||
import { formatToHumanReadableDate } from '~/utils';
|
||||
|
||||
import { FieldDateValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add zod
|
||||
export const isFieldDateValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldDateValue => isNull(fieldValue) || isString(fieldValue);
|
||||
): fieldValue is FieldDateValue => {
|
||||
try {
|
||||
if (isNull(fieldValue)) return true;
|
||||
if (isString(fieldValue)) {
|
||||
formatToHumanReadableDate(fieldValue);
|
||||
return true;
|
||||
}
|
||||
} catch {}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user