Wrap Long text fields (textarea) (#8557)

Here we add the option for Text inputs to be wrapped, and to select on
how many lines text should be displayed.

Fix #7552

---------

Co-authored-by: guillim <guillaume@twenty.com>
This commit is contained in:
Guillim
2024-11-18 17:36:19 +01:00
committed by GitHub
parent 83b5eb69b0
commit 2f3c41620c
14 changed files with 235 additions and 27 deletions

View File

@ -5,6 +5,7 @@ import {
IsEnum,
IsInt,
IsOptional,
Max,
Min,
validateOrReject,
} from 'class-validator';
@ -31,6 +32,12 @@ class SettingsValidation {
@IsOptional()
@IsEnum(ValueType)
type?: 'percentage' | 'number';
@IsOptional()
@IsInt()
@Min(0)
@Max(100)
displayedMaxRows?: number;
}
@Injectable()
@ -48,23 +55,26 @@ export class FieldMetadataValidationService<
}) {
switch (fieldType) {
case FieldMetadataType.NUMBER:
await this.validateNumberSettings(settings);
case FieldMetadataType.TEXT:
await this.validateSettings(settings);
break;
default:
break;
}
}
private async validateNumberSettings(settings: any) {
private async validateSettings(settings: any) {
try {
const settingsInstance = plainToInstance(SettingsValidation, settings);
await validateOrReject(settingsInstance);
} catch (errors) {
const errorMessages = errors
.map((error: any) => Object.values(error.constraints))
.flat()
.join(', ');
} catch (error) {
const errorMessages = Array.isArray(error)
? error
.map((err: any) => Object.values(err.constraints))
.flat()
.join(', ')
: error.message;
throw new FieldMetadataException(
`Value for settings is invalid: ${errorMessages}`,

View File

@ -16,6 +16,10 @@ type FieldMetadataNumberSettings = {
type?: string;
};
type FieldMetadataTextSettings = {
displayedMaxRows?: number;
};
type FieldMetadataDateSettings = {
displayAsRelativeDate?: boolean;
};
@ -28,6 +32,7 @@ type FieldMetadataSettingsMapping = {
[FieldMetadataType.NUMBER]: FieldMetadataNumberSettings;
[FieldMetadataType.DATE]: FieldMetadataDateSettings;
[FieldMetadataType.DATE_TIME]: FieldMetadataDateTimeSettings;
[FieldMetadataType.TEXT]: FieldMetadataTextSettings;
};
type SettingsByFieldMetadata<T extends FieldMetadataType | 'default'> =