mirror of
https://github.com/lingble/twenty.git
synced 2025-10-29 20:02:29 +00:00
Fix 'Error in devtools while checking fields of object' (#8554)
Fixes https://github.com/twentyhq/twenty/issues/8298 --------- Co-authored-by: Devessier <baptiste@devessier.fr>
This commit is contained in:
@@ -5,7 +5,6 @@ import { IconComponent, IconTwentyStar } from 'twenty-ui';
|
|||||||
|
|
||||||
import { SettingsFieldType } from '@/settings/data-model/types/SettingsFieldType';
|
import { SettingsFieldType } from '@/settings/data-model/types/SettingsFieldType';
|
||||||
import { getSettingsFieldTypeConfig } from '@/settings/data-model/utils/getSettingsFieldTypeConfig';
|
import { getSettingsFieldTypeConfig } from '@/settings/data-model/utils/getSettingsFieldTypeConfig';
|
||||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
|
||||||
|
|
||||||
type SettingsObjectFieldDataTypeProps = {
|
type SettingsObjectFieldDataTypeProps = {
|
||||||
to?: string;
|
to?: string;
|
||||||
@@ -13,6 +12,7 @@ type SettingsObjectFieldDataTypeProps = {
|
|||||||
label?: string;
|
label?: string;
|
||||||
labelDetail?: string;
|
labelDetail?: string;
|
||||||
value: SettingsFieldType;
|
value: SettingsFieldType;
|
||||||
|
onClick?: (event: React.MouseEvent) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
const StyledDataType = styled.div<{
|
const StyledDataType = styled.div<{
|
||||||
@@ -28,19 +28,16 @@ const StyledDataType = styled.div<{
|
|||||||
height: 20px;
|
height: 20px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
${({ to, theme }) =>
|
||||||
${({ to }) =>
|
|
||||||
to
|
to
|
||||||
? css`
|
? css`
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
`
|
|
||||||
: ''}
|
|
||||||
|
|
||||||
${({ value, theme }) =>
|
|
||||||
value === FieldMetadataType.Relation
|
|
||||||
? css`
|
|
||||||
color: ${theme.font.color.secondary};
|
color: ${theme.font.color.secondary};
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: ${theme.font.color.primary};
|
||||||
|
}
|
||||||
`
|
`
|
||||||
: ''}
|
: ''}
|
||||||
`;
|
`;
|
||||||
@@ -60,6 +57,7 @@ export const SettingsObjectFieldDataType = ({
|
|||||||
Icon: IconFromProps,
|
Icon: IconFromProps,
|
||||||
label: labelFromProps,
|
label: labelFromProps,
|
||||||
labelDetail,
|
labelDetail,
|
||||||
|
onClick,
|
||||||
}: SettingsObjectFieldDataTypeProps) => {
|
}: SettingsObjectFieldDataTypeProps) => {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
|
|
||||||
@@ -73,7 +71,12 @@ export const SettingsObjectFieldDataType = ({
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledDataType as={to ? Link : 'div'} to={to} value={value}>
|
<StyledDataType
|
||||||
|
as={to ? Link : 'div'}
|
||||||
|
to={to}
|
||||||
|
value={value}
|
||||||
|
onClick={onClick}
|
||||||
|
>
|
||||||
<StyledIcon size={theme.icon.size.sm} />
|
<StyledIcon size={theme.icon.size.sm} />
|
||||||
<StyledLabelContainer>
|
<StyledLabelContainer>
|
||||||
{label} <StyledSpan>{labelDetail && `· ${labelDetail}`}</StyledSpan>
|
{label} <StyledSpan>{labelDetail && `· ${labelDetail}`}</StyledSpan>
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import {
|
|||||||
IconMinus,
|
IconMinus,
|
||||||
IconPlus,
|
IconPlus,
|
||||||
LightIconButton,
|
LightIconButton,
|
||||||
|
UndecoratedLink,
|
||||||
isDefined,
|
isDefined,
|
||||||
useIcons,
|
useIcons,
|
||||||
} from 'twenty-ui';
|
} from 'twenty-ui';
|
||||||
@@ -207,10 +208,15 @@ export const SettingsObjectFieldItemTableRow = ({
|
|||||||
|
|
||||||
if (!isFieldTypeSupported) return null;
|
if (!isFieldTypeSupported) return null;
|
||||||
|
|
||||||
|
const isRelatedObjectLinkable =
|
||||||
|
isDefined(relationObjectMetadataItem?.namePlural) &&
|
||||||
|
!relationObjectMetadataItem.isSystem;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledObjectFieldTableRow
|
<StyledObjectFieldTableRow
|
||||||
to={mode === 'view' ? linkToNavigate : undefined}
|
onClick={mode === 'view' ? () => navigate(linkToNavigate) : undefined}
|
||||||
>
|
>
|
||||||
|
<UndecoratedLink to={linkToNavigate}>
|
||||||
<StyledNameTableCell>
|
<StyledNameTableCell>
|
||||||
{!!Icon && (
|
{!!Icon && (
|
||||||
<Icon
|
<Icon
|
||||||
@@ -223,6 +229,8 @@ export const SettingsObjectFieldItemTableRow = ({
|
|||||||
{fieldMetadataItem.label}
|
{fieldMetadataItem.label}
|
||||||
</StyledNameLabel>
|
</StyledNameLabel>
|
||||||
</StyledNameTableCell>
|
</StyledNameTableCell>
|
||||||
|
</UndecoratedLink>
|
||||||
|
|
||||||
<TableCell>{typeLabel}</TableCell>
|
<TableCell>{typeLabel}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<SettingsObjectFieldDataType
|
<SettingsObjectFieldDataType
|
||||||
@@ -237,12 +245,16 @@ export const SettingsObjectFieldItemTableRow = ({
|
|||||||
fieldMetadataItem.settings?.type === 'percentage' ? '%' : undefined
|
fieldMetadataItem.settings?.type === 'percentage' ? '%' : undefined
|
||||||
}
|
}
|
||||||
to={
|
to={
|
||||||
relationObjectMetadataItem?.namePlural &&
|
isRelatedObjectLinkable
|
||||||
!relationObjectMetadataItem.isSystem
|
|
||||||
? `/settings/objects/${getObjectSlug(relationObjectMetadataItem)}`
|
? `/settings/objects/${getObjectSlug(relationObjectMetadataItem)}`
|
||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
value={fieldType}
|
value={fieldType}
|
||||||
|
onClick={(e) => {
|
||||||
|
if (isRelatedObjectLinkable) {
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<StyledIconTableCell>
|
<StyledIconTableCell>
|
||||||
|
|||||||
Reference in New Issue
Block a user