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 <charles@twenty.com>
This commit is contained in:
Irfan K
2024-01-17 18:30:51 +05:30
committed by GitHub
parent 96d990e275
commit 5d4e226aad
6 changed files with 38 additions and 17 deletions

View File

@ -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<FieldMetadata> => {
showLabel,
labelWidth,
}: FieldMetadataItemAsColumnDefinitionProps): ColumnDefinition<FieldMetadata> => {
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: {

View File

@ -268,6 +268,8 @@ export const RecordShowPage = () => {
field: fieldMetadataItem,
position: index,
objectMetadataItem,
showLabel: true,
labelWidth: 90,
}),
useUpdateRecord: useUpdateOneObjectRecordMutation,
hotkeyScope: InlineCellHotkeyScope.InlineCell,

View File

@ -10,6 +10,8 @@ export type FieldDefinitionRelationType =
export type FieldDefinition<T extends FieldMetadata> = {
fieldMetadataId: string;
label: string;
showLabel?: boolean;
labelWidth?: number;
iconName: string;
type: FieldType;
metadata: T;

View File

@ -74,6 +74,9 @@ export const RecordInlineCell = () => {
IconLabel={
fieldDefinition.iconName ? getIcon(fieldDefinition.iconName) : undefined
}
label={fieldDefinition.label}
labelWidth={fieldDefinition.labelWidth}
showLabel={fieldDefinition.showLabel}
editModeContent={
<FieldInput
onEnter={handleEnter}

View File

@ -4,6 +4,7 @@ import styled from '@emotion/styled';
import { motion } from 'framer-motion';
import { IconComponent } from '@/ui/display/icon/types/IconComponent';
import { EllipsisDisplay } from '@/ui/field/display/components/EllipsisDisplay';
import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope';
import { useInlineCell } from '../hooks/useInlineCell';
@ -38,13 +39,10 @@ const StyledValueContainer = styled.div`
display: flex;
`;
const StyledLabel = styled.div<
Pick<RecordInlineCellContainerProps, 'labelFixedWidth'>
>`
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 = ({
<IconLabel stroke={theme.icon.stroke.sm} />
</StyledIconContainer>
)}
{label && (
<StyledLabel labelFixedWidth={labelFixedWidth}>{label}</StyledLabel>
{showLabel && label && (
<StyledLabelContainer width={labelWidth}>
<EllipsisDisplay maxWidth={labelWidth}>{label}</EllipsisDisplay>
</StyledLabelContainer>
)}
</StyledLabelAndIconContainer>
)}
@ -148,6 +150,7 @@ export const RecordInlineCellContainer = ({
isDisplayModeContentEmpty={isDisplayModeContentEmpty}
isDisplayModeFixHeight={isDisplayModeFixHeight}
isHovered={isHovered}
emptyPlaceholder={showLabel ? 'Empty' : label}
>
{editModeContent}
</RecordInlineCellDisplayMode>
@ -159,6 +162,7 @@ export const RecordInlineCellContainer = ({
isDisplayModeContentEmpty={isDisplayModeContentEmpty}
isDisplayModeFixHeight={isDisplayModeFixHeight}
isHovered={isHovered}
emptyPlaceholder={showLabel ? 'Empty' : label}
>
{displayModeContent}
</RecordInlineCellDisplayMode>

View File

@ -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<RecordInlineCellDisplayModeProps>) => (
<StyledRecordInlineCellNormalModeOuterContainer
@ -72,7 +74,7 @@ export const RecordInlineCellDisplayMode = ({
>
<StyledRecordInlineCellNormalModeInnerContainer>
{isDisplayModeContentEmpty || !children ? (
<StyledEmptyField>{'Empty'}</StyledEmptyField>
<StyledEmptyField>{emptyPlaceholder}</StyledEmptyField>
) : (
children
)}