From 5d4e226aad7b7b3682db4180eb8db5f2108e8a84 Mon Sep 17 00:00:00 2001 From: Irfan K <114819335+abdul-irfan-k@users.noreply.github.com> Date: Wed, 17 Jan 2024 18:30:51 +0530 Subject: [PATCH] fixed issue Display field name on Kanbans & Shows (#3427) * fixed issue Display field name on Kanbans & Shows * Fixes according to review --------- Co-authored-by: Charles Bochet --- ...rmatFieldMetadataItemAsColumnDefinition.ts | 18 +++++++++---- .../components/RecordShowPage.tsx | 2 ++ .../field/types/FieldDefinition.ts | 2 ++ .../components/RecordInlineCell.tsx | 3 +++ .../components/RecordInlineCellContainer.tsx | 26 +++++++++++-------- .../RecordInlineCellDisplayMode.tsx | 4 ++- 6 files changed, 38 insertions(+), 17 deletions(-) diff --git a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition.ts b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition.ts index 365f3b3dc..9cae48681 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition.ts @@ -7,15 +7,21 @@ import { FieldMetadataItem } from '../types/FieldMetadataItem'; import { parseFieldType } from './parseFieldType'; +type FieldMetadataItemAsColumnDefinitionProps = { + position: number; + field: FieldMetadataItem; + objectMetadataItem: ObjectMetadataItem; + showLabel?: boolean; + labelWidth?: number; +}; + export const formatFieldMetadataItemAsColumnDefinition = ({ position, field, objectMetadataItem, -}: { - position: number; - field: FieldMetadataItem; - objectMetadataItem: ObjectMetadataItem; -}): ColumnDefinition => { + showLabel, + labelWidth, +}: FieldMetadataItemAsColumnDefinitionProps): ColumnDefinition => { const relationObjectMetadataItem = field.toRelationMetadata?.fromObjectMetadata || field.fromRelationMetadata?.toObjectMetadata; @@ -28,6 +34,8 @@ export const formatFieldMetadataItemAsColumnDefinition = ({ position, fieldMetadataId: field.id, label: field.label, + showLabel, + labelWidth, size: 100, type: parseFieldType(field.type), metadata: { diff --git a/packages/twenty-front/src/modules/object-record/components/RecordShowPage.tsx b/packages/twenty-front/src/modules/object-record/components/RecordShowPage.tsx index b342584e1..688bf399f 100644 --- a/packages/twenty-front/src/modules/object-record/components/RecordShowPage.tsx +++ b/packages/twenty-front/src/modules/object-record/components/RecordShowPage.tsx @@ -268,6 +268,8 @@ export const RecordShowPage = () => { field: fieldMetadataItem, position: index, objectMetadataItem, + showLabel: true, + labelWidth: 90, }), useUpdateRecord: useUpdateOneObjectRecordMutation, hotkeyScope: InlineCellHotkeyScope.InlineCell, diff --git a/packages/twenty-front/src/modules/object-record/field/types/FieldDefinition.ts b/packages/twenty-front/src/modules/object-record/field/types/FieldDefinition.ts index eb4abf3a4..191d7ecb0 100644 --- a/packages/twenty-front/src/modules/object-record/field/types/FieldDefinition.ts +++ b/packages/twenty-front/src/modules/object-record/field/types/FieldDefinition.ts @@ -10,6 +10,8 @@ export type FieldDefinitionRelationType = export type FieldDefinition = { fieldMetadataId: string; label: string; + showLabel?: boolean; + labelWidth?: number; iconName: string; type: FieldType; metadata: T; diff --git a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCell.tsx b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCell.tsx index 0b9b04a04..ddf4d6080 100644 --- a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCell.tsx +++ b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCell.tsx @@ -74,6 +74,9 @@ export const RecordInlineCell = () => { IconLabel={ fieldDefinition.iconName ? getIcon(fieldDefinition.iconName) : undefined } + label={fieldDefinition.label} + labelWidth={fieldDefinition.labelWidth} + showLabel={fieldDefinition.showLabel} editModeContent={ ->` - align-items: center; - - width: ${({ labelFixedWidth }) => - labelFixedWidth ? `${labelFixedWidth}px` : 'fit-content'}; +const StyledLabelContainer = styled.div<{ width?: number }>` + color: ${({ theme }) => theme.font.color.tertiary}; + font-size: ${({ theme }) => theme.font.size.sm}; + width: ${({ width }) => width}px; `; const StyledEditButtonContainer = styled(motion.div)` @@ -74,7 +72,8 @@ const StyledInlineCellBaseContainer = styled.div` type RecordInlineCellContainerProps = { IconLabel?: IconComponent; label?: string; - labelFixedWidth?: number; + labelWidth?: number; + showLabel?: boolean; buttonIcon?: IconComponent; editModeContent?: React.ReactNode; editModeContentOnly?: boolean; @@ -88,7 +87,8 @@ type RecordInlineCellContainerProps = { export const RecordInlineCellContainer = ({ IconLabel, label, - labelFixedWidth, + labelWidth, + showLabel, buttonIcon, editModeContent, displayModeContent, @@ -133,8 +133,10 @@ export const RecordInlineCellContainer = ({ )} - {label && ( - {label} + {showLabel && label && ( + + {label} + )} )} @@ -148,6 +150,7 @@ export const RecordInlineCellContainer = ({ isDisplayModeContentEmpty={isDisplayModeContentEmpty} isDisplayModeFixHeight={isDisplayModeFixHeight} isHovered={isHovered} + emptyPlaceholder={showLabel ? 'Empty' : label} > {editModeContent} @@ -159,6 +162,7 @@ export const RecordInlineCellContainer = ({ isDisplayModeContentEmpty={isDisplayModeContentEmpty} isDisplayModeFixHeight={isDisplayModeFixHeight} isHovered={isHovered} + emptyPlaceholder={showLabel ? 'Empty' : label} > {displayModeContent} diff --git a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellDisplayMode.tsx b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellDisplayMode.tsx index 3233981f8..fe1aef9c2 100644 --- a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellDisplayMode.tsx +++ b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellDisplayMode.tsx @@ -55,6 +55,7 @@ type RecordInlineCellDisplayModeProps = { disableHoverEffect?: boolean; isDisplayModeFixHeight?: boolean; isHovered?: boolean; + emptyPlaceholder?: string; }; export const RecordInlineCellDisplayMode = ({ @@ -62,6 +63,7 @@ export const RecordInlineCellDisplayMode = ({ isDisplayModeContentEmpty, disableHoverEffect, isDisplayModeFixHeight, + emptyPlaceholder = 'Empty', isHovered, }: React.PropsWithChildren) => ( {isDisplayModeContentEmpty || !children ? ( - {'Empty'} + {emptyPlaceholder} ) : ( children )}