backfill widget position from gridPosition (phase 1 of gridPosition removal) (#20032)

## Context
Phase 1 of removing the legacy `gridPosition` field from
`PageLayoutWidget` in favor of the new `position` discriminated union
(`grid` / `vertical-list` / `canvas`). This PR is purely additive —
`gridPosition` is still required and read everywhere; we just guarantee
that every widget now also has a non-null `position` so a follow-up PR
can drop `gridPosition` cleanly.

## Changes
- **Slow instance command**
`BackfillPageLayoutWidgetPositionSlowInstanceCommand` (2.1.0):
for every `core.pageLayoutWidget` row where `position IS NULL`, copies
`gridPosition`
into `position` with `layoutMode: 'GRID'`. Historically only grid
widgets used
`gridPosition`, so a single SQL update covers every existing row.
- **`PageLayoutDuplicationService`**: when duplicating a widget, also
forwards
`originalWidget.position` (was previously only forwarding
`gridPosition`).
- **Frontend default layouts** (10 `Default*PageLayout.ts` files): added
a `position`
sibling to every widget, matching the parent tab's `layoutMode` —
`VERTICAL_LIST` widgets
get `{ layoutMode, index }`, `CANVAS` widgets get `{ layoutMode }`

<img width="338" height="226" alt="Screenshot 2026-04-24 at 16 23 17"
src="https://github.com/user-attachments/assets/c3319318-f1b8-4271-96b4-196b209a1f5e"
/>
This commit is contained in:
Weiko
2026-04-24 16:35:56 +02:00
committed by GitHub
parent 9771725cc4
commit 5f604a503a
20 changed files with 239 additions and 5 deletions
@@ -925,7 +925,7 @@ type PageLayoutWidget {
title: String!
type: WidgetType!
objectMetadataId: UUID
gridPosition: GridPosition!
gridPosition: GridPosition! @deprecated(reason: "Use `position` instead. Will be removed in a future release.")
position: PageLayoutWidgetPosition
configuration: WidgetConfiguration!
conditionalDisplay: JSON
@@ -702,6 +702,7 @@ export interface PageLayoutWidget {
title: Scalars['String']
type: WidgetType
objectMetadataId?: Scalars['UUID']
/** @deprecated Use `position` instead. Will be removed in a future release. */
gridPosition: GridPosition
position?: PageLayoutWidgetPosition
configuration: WidgetConfiguration
@@ -3589,6 +3590,7 @@ export interface PageLayoutWidgetGenqlSelection{
title?: boolean | number
type?: boolean | number
objectMetadataId?: boolean | number
/** @deprecated Use `position` instead. Will be removed in a future release. */
gridPosition?: GridPositionGenqlSelection
position?: PageLayoutWidgetPositionGenqlSelection
configuration?: WidgetConfigurationGenqlSelection
@@ -3846,6 +3846,7 @@ export type PageLayoutWidget = {
configuration: WidgetConfiguration;
createdAt: Scalars['DateTime'];
deletedAt?: Maybe<Scalars['DateTime']>;
/** @deprecated Use `position` instead. Will be removed in a future release. */
gridPosition: GridPosition;
id: Scalars['UUID'];
isActive: Scalars['Boolean'];
@@ -47,6 +47,11 @@ export const DEFAULT_COMPANY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -88,6 +93,10 @@ export const DEFAULT_COMPANY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -129,6 +138,10 @@ export const DEFAULT_COMPANY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -170,6 +183,10 @@ export const DEFAULT_COMPANY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -211,6 +228,10 @@ export const DEFAULT_COMPANY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -252,6 +273,10 @@ export const DEFAULT_COMPANY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -293,6 +318,10 @@ export const DEFAULT_COMPANY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -47,6 +47,11 @@ export const DEFAULT_MESSAGE_THREAD_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -47,6 +47,11 @@ export const DEFAULT_NOTE_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
// Note: Configuration is null by default. For testing purposes,
// use useTempNoteFieldsConfiguration() hook at runtime to get
// a configuration with actual field metadata IDs from the backend.
@@ -75,6 +80,11 @@ export const DEFAULT_NOTE_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 1,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -123,6 +133,11 @@ export const DEFAULT_NOTE_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -171,6 +186,10 @@ export const DEFAULT_NOTE_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -212,6 +231,10 @@ export const DEFAULT_NOTE_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -47,6 +47,11 @@ export const DEFAULT_OPPORTUNITY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -88,6 +93,10 @@ export const DEFAULT_OPPORTUNITY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -129,6 +138,10 @@ export const DEFAULT_OPPORTUNITY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -170,6 +183,10 @@ export const DEFAULT_OPPORTUNITY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -211,6 +228,10 @@ export const DEFAULT_OPPORTUNITY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -252,6 +273,10 @@ export const DEFAULT_OPPORTUNITY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -293,6 +318,10 @@ export const DEFAULT_OPPORTUNITY_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -47,6 +47,11 @@ export const DEFAULT_PERSON_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -88,6 +93,10 @@ export const DEFAULT_PERSON_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -129,6 +138,10 @@ export const DEFAULT_PERSON_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -170,6 +183,10 @@ export const DEFAULT_PERSON_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -211,6 +228,10 @@ export const DEFAULT_PERSON_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -252,6 +273,10 @@ export const DEFAULT_PERSON_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -293,6 +318,10 @@ export const DEFAULT_PERSON_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -47,6 +47,11 @@ export const DEFAULT_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -88,6 +93,10 @@ export const DEFAULT_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -129,6 +138,10 @@ export const DEFAULT_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -170,6 +183,10 @@ export const DEFAULT_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -211,6 +228,10 @@ export const DEFAULT_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -47,6 +47,11 @@ export const DEFAULT_TASK_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -72,6 +77,11 @@ export const DEFAULT_TASK_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 1,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -120,6 +130,11 @@ export const DEFAULT_TASK_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -168,6 +183,10 @@ export const DEFAULT_TASK_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -209,6 +228,10 @@ export const DEFAULT_TASK_RECORD_PAGE_LAYOUT: PageLayout = {
rowSpan: 6,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -52,6 +52,10 @@ export const DEFAULT_WORKFLOW_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -53,6 +53,11 @@ export const DEFAULT_WORKFLOW_RUN_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -95,6 +100,10 @@ export const DEFAULT_WORKFLOW_RUN_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -53,6 +53,11 @@ export const DEFAULT_WORKFLOW_VERSION_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetVerticalListPosition',
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
index: 0,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -95,6 +100,10 @@ export const DEFAULT_WORKFLOW_VERSION_PAGE_LAYOUT: PageLayout = {
rowSpan: 12,
columnSpan: 12,
},
position: {
__typename: 'PageLayoutWidgetCanvasPosition',
layoutMode: PageLayoutTabLayoutMode.CANVAS,
},
configuration: {
__typename: 'FieldsConfiguration',
configurationType: WidgetConfigurationType.FIELDS,
@@ -0,0 +1,32 @@
import { DataSource, QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { SlowInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/slow-instance-command.interface';
@RegisteredInstanceCommand('2.1.0', 1795000002000, { type: 'slow' })
export class BackfillPageLayoutWidgetPositionSlowInstanceCommand
implements SlowInstanceCommand
{
async runDataMigration(dataSource: DataSource): Promise<void> {
await dataSource.query(
`UPDATE "core"."pageLayoutWidget"
SET "position" = jsonb_build_object(
'layoutMode', 'GRID',
'row', "gridPosition"->'row',
'column', "gridPosition"->'column',
'rowSpan', "gridPosition"->'rowSpan',
'columnSpan', "gridPosition"->'columnSpan'
)
WHERE "position" IS NULL
AND "gridPosition" IS NOT NULL`,
);
}
public async up(_queryRunner: QueryRunner): Promise<void> {
return;
}
public async down(_queryRunner: QueryRunner): Promise<void> {
return;
}
}
@@ -16,6 +16,7 @@ import { AddGlobalObjectContextToCommandMenuItemAvailabilityTypeFastInstanceComm
import { AddPageLayoutIdToCommandMenuItemFastInstanceCommand } from 'src/database/commands/upgrade-version-command/1-23/1-23-instance-command-fast-1776168404836-add-page-layout-id-to-command-menu-item';
import { AddConditionalAvailabilityExpressionToPageLayoutWidgetFastInstanceCommand } from 'src/database/commands/upgrade-version-command/1-23/1-23-instance-command-fast-1775654781000-add-conditional-availability-expression-to-page-layout-widget';
import { AddIsPreInstalledToApplicationRegistrationFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-0/2-0-instance-command-fast-1776886452831-add-is-pre-installed-to-application-registration';
import { BackfillPageLayoutWidgetPositionSlowInstanceCommand } from 'src/database/commands/upgrade-version-command/2-1/2-1-instance-command-slow-1795000002000-backfill-page-layout-widget-position';
export const INSTANCE_COMMANDS = [
AddViewFieldGroupIdIndexOnViewFieldFastInstanceCommand,
@@ -34,4 +35,5 @@ export const INSTANCE_COMMANDS = [
AddPageLayoutIdToCommandMenuItemFastInstanceCommand,
AddConditionalAvailabilityExpressionToPageLayoutWidgetFastInstanceCommand,
AddIsPreInstalledToApplicationRegistrationFastInstanceCommand,
BackfillPageLayoutWidgetPositionSlowInstanceCommand,
];
@@ -39,7 +39,11 @@ export class CreatePageLayoutWidgetInput {
@IsOptional()
objectMetadataId?: string | null;
@Field(() => GridPositionInput, { nullable: false })
@Field(() => GridPositionInput, {
nullable: false,
deprecationReason:
'Use `position` instead. Will be removed in a future release.',
})
@ValidateNested()
@Type(() => GridPositionInput)
gridPosition: GridPositionInput;
@@ -48,7 +48,10 @@ export class UpdatePageLayoutWidgetWithIdInput {
@IsOptional()
objectMetadataId: string | null;
@Field(() => GridPositionInput)
@Field(() => GridPositionInput, {
deprecationReason:
'Use `position` instead. Will be removed in a future release.',
})
@ValidateNested()
@Type(() => GridPositionInput)
@IsNotEmpty()
@@ -42,7 +42,11 @@ export class UpdatePageLayoutWidgetInput {
@IsOptional()
objectMetadataId?: string | null;
@Field(() => GridPositionInput, { nullable: true })
@Field(() => GridPositionInput, {
nullable: true,
deprecationReason:
'Use `position` instead. Will be removed in a future release.',
})
@ValidateNested()
@Type(() => GridPositionInput)
@IsOptional()
@@ -56,7 +56,11 @@ export class PageLayoutWidgetDTO {
@Field(() => UUIDScalarType, { nullable: true })
objectMetadataId?: string;
@Field(() => GridPositionDTO, { nullable: false })
@Field(() => GridPositionDTO, {
nullable: false,
deprecationReason:
'Use `position` instead. Will be removed in a future release.',
})
gridPosition: GridPositionDTO;
@Field(() => PageLayoutWidgetPositionUnion, { nullable: true })
@@ -325,6 +325,7 @@ export class PageLayoutDuplicationService {
createPageLayoutWidgetInput: {
title: originalWidget.title,
gridPosition: originalWidget.gridPosition,
position: originalWidget.position ?? undefined,
type: originalWidget.type,
objectMetadataId: originalWidget.objectMetadataId,
configuration: originalWidget.configuration,