fix: support FIELDS configuration in widget validation for create/update
https://sonarly.com/issue/35076?type=bug The `validateWidgetConfigurationInput` utility throws "Fields configuration is not supported yet" for FIELDS widget type, blocking both API creation/update of FIELDS widgets and preventing users from fixing SDK-installed widgets with null viewId. Fix: Replaced the `throw new PageLayoutWidgetException('Fields configuration is not supported yet', ...)` with proper DTO validation using the existing `FieldsConfigurationDTO` class. This follows the identical pattern used for RECORD_TABLE, FRONT_COMPONENT, and FIELD configuration types that were previously in the same "not supported yet" bucket and were later enabled. The `FieldsConfigurationDTO` already exists at `packages/twenty-server/src/engine/metadata-modules/page-layout-widget/dtos/fields-configuration.dto.ts` with proper validators: - `configurationType`: validated as FIELDS - `viewId`: @IsOptional() @IsUUID() - accepts a UUID or null - `newFieldDefaultVisibility`: @IsOptional() @IsBoolean() - `shouldAllowUserToSeeHiddenFields`: @IsOptional() @IsBoolean() This unblocks: 1. `createPageLayoutWidget` mutation with FIELDS configuration 2. `updatePageLayoutWidget` mutation with FIELDS configuration 3. SDK-installed widgets with viewId: null can now be corrected via the API
This commit is contained in:
+5
-3
@@ -3,6 +3,7 @@ import { isNotEmptyObject, type ValidationError } from 'class-validator';
|
||||
import { AggregateChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/aggregate-chart-configuration.dto';
|
||||
import { BarChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/bar-chart-configuration.dto';
|
||||
import { FieldConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/field-configuration.dto';
|
||||
import { FieldsConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/fields-configuration.dto';
|
||||
import { FrontComponentConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/front-component-configuration.dto';
|
||||
import { GaugeChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/gauge-chart-configuration.dto';
|
||||
import { IframeConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/iframe-configuration.dto';
|
||||
@@ -140,10 +141,11 @@ export const validateWidgetConfigurationInput = ({
|
||||
);
|
||||
break;
|
||||
case WidgetConfigurationType.FIELDS:
|
||||
throw new PageLayoutWidgetException(
|
||||
'Fields configuration is not supported yet',
|
||||
PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
errors = validateWidgetConfigurationByDto(
|
||||
FieldsConfigurationDTO,
|
||||
configuration,
|
||||
);
|
||||
break;
|
||||
case WidgetConfigurationType.TIMELINE:
|
||||
throw new PageLayoutWidgetException(
|
||||
'Timeline configuration is not supported yet',
|
||||
|
||||
Reference in New Issue
Block a user