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:
@ -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}`,
|
||||
|
||||
@ -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'> =
|
||||
|
||||
Reference in New Issue
Block a user