Reset Tab Page Layout (#19453)
## Context - Add "Reset to default" for page layout tabs and widgets — backend mutation resets overrides, reactivates deactivated children, and deletes custom children - Fix override write bug where mutating an overridable property (e.g. widget title) on a standard-app entity incorrectly overwrote the base column instead of writing to the overrides JSONB — PageLayoutUpdateService now uses resolveFlatEntityOverridableProperties for accurate diffing and routes properties through sanitizeOverridableEntityInput - Deprecate isOverridden - We need more time to think about this feature. Currently this adds too much complexity for a very small benefit https://github.com/user-attachments/assets/a84546c8-1e15-4d9e-a489-0825cf8b8ed2
This commit is contained in:
-18
@@ -149,7 +149,6 @@ const createPageLayoutWithWidget = (
|
||||
position: 0,
|
||||
pageLayoutId: PAGE_LAYOUT_TEST_INSTANCE_ID,
|
||||
widgets: [widget],
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -272,7 +271,6 @@ export const WithNumberChart: Story = {
|
||||
aggregateFieldMetadataId: idField.id,
|
||||
displayDataLabel: true,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -359,7 +357,6 @@ export const WithGaugeChart: Story = {
|
||||
aggregateFieldMetadataId: idField.id,
|
||||
displayDataLabel: false,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -450,7 +447,6 @@ export const WithBarChart: Story = {
|
||||
axisNameDisplay: AxisNameDisplay.BOTH,
|
||||
displayDataLabel: false,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -544,7 +540,6 @@ export const SmallWidget: Story = {
|
||||
aggregateFieldMetadataId: idField.id,
|
||||
displayDataLabel: true,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -642,7 +637,6 @@ export const MediumWidget: Story = {
|
||||
axisNameDisplay: AxisNameDisplay.BOTH,
|
||||
displayDataLabel: false,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -740,7 +734,6 @@ export const LargeWidget: Story = {
|
||||
axisNameDisplay: AxisNameDisplay.BOTH,
|
||||
displayDataLabel: false,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -834,7 +827,6 @@ export const WideWidget: Story = {
|
||||
aggregateFieldMetadataId: idField.id,
|
||||
displayDataLabel: true,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -932,7 +924,6 @@ export const TallWidget: Story = {
|
||||
axisNameDisplay: AxisNameDisplay.BOTH,
|
||||
displayDataLabel: false,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1026,7 +1017,6 @@ export const WithManyToOneRelationFieldWidget: Story = {
|
||||
fieldMetadataId: accountOwnerField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1145,7 +1135,6 @@ export const WithOneToManyRelationFieldWidget: Story = {
|
||||
fieldMetadataId: companyPeopleField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1256,7 +1245,6 @@ export const OneToManyRelationFieldWidgetWithSeeAllButton: Story = {
|
||||
fieldMetadataId: companyPeopleField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1394,7 +1382,6 @@ export const OnMobile: Story = {
|
||||
aggregateFieldMetadataId: idField.id,
|
||||
displayDataLabel: true,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1492,7 +1479,6 @@ export const InSidePanel: Story = {
|
||||
aggregateFieldMetadataId: idField.id,
|
||||
displayDataLabel: true,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1651,7 +1637,6 @@ export const Catalog: CatalogStory<Story, typeof WidgetRenderer> = {
|
||||
aggregateFieldMetadataId: idField.id,
|
||||
displayDataLabel: true,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1744,7 +1729,6 @@ export const Catalog: CatalogStory<Story, typeof WidgetRenderer> = {
|
||||
position: 0,
|
||||
pageLayoutId: PAGE_LAYOUT_TEST_INSTANCE_ID,
|
||||
widgets: [widget],
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1757,7 +1741,6 @@ export const Catalog: CatalogStory<Story, typeof WidgetRenderer> = {
|
||||
position: 1,
|
||||
pageLayoutId: PAGE_LAYOUT_TEST_INSTANCE_ID,
|
||||
widgets: [],
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1772,7 +1755,6 @@ export const Catalog: CatalogStory<Story, typeof WidgetRenderer> = {
|
||||
position: 0,
|
||||
pageLayoutId: PAGE_LAYOUT_TEST_INSTANCE_ID,
|
||||
widgets: [widget],
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
|
||||
-18
@@ -297,7 +297,6 @@ const createPageLayoutWithWidget = (
|
||||
position: 0,
|
||||
pageLayoutId: PAGE_LAYOUT_TEST_INSTANCE_ID,
|
||||
widgets: [widget],
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -351,7 +350,6 @@ export const TextFieldWidget: Story = {
|
||||
fieldMetadataId: nameField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -445,7 +443,6 @@ export const AddressFieldWidget: Story = {
|
||||
fieldMetadataId: addressField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -542,7 +539,6 @@ export const NumberFieldWidget: Story = {
|
||||
fieldMetadataId: employeesField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -636,7 +632,6 @@ export const LinkFieldWidget: Story = {
|
||||
fieldMetadataId: linkedinField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -730,7 +725,6 @@ export const ManyToOneRelationFieldWidget: Story = {
|
||||
fieldMetadataId: accountOwnerField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -834,7 +828,6 @@ export const OneToManyRelationFieldWidget: Story = {
|
||||
fieldMetadataId: companyPeopleField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -930,7 +923,6 @@ export const BooleanFieldWidget: Story = {
|
||||
fieldMetadataId: idealCustomerProfileField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1023,7 +1015,6 @@ export const CurrencyFieldWidget: Story = {
|
||||
fieldMetadataId: annualRecurringRevenueField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1116,7 +1107,6 @@ export const EmailsFieldWidget: Story = {
|
||||
fieldMetadataId: personEmailsField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1210,7 +1200,6 @@ export const PhonesFieldWidget: Story = {
|
||||
fieldMetadataId: personPhonesField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1304,7 +1293,6 @@ export const SelectFieldWidget: Story = {
|
||||
fieldMetadataId: opportunityStageField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1399,7 +1387,6 @@ export const MultiSelectFieldWidget: Story = {
|
||||
fieldMetadataId: companyWorkPolicyField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1497,7 +1484,6 @@ export const TimelineActivityRelationFieldWidget: Story = {
|
||||
fieldMetadataId: timelineActivityWorkspaceMemberField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.FIELD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1596,7 +1582,6 @@ export const ManyToOneRelationCardWidget: Story = {
|
||||
fieldMetadataId: accountOwnerField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.CARD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1708,7 +1693,6 @@ export const OneToManyRelationCardWidget: Story = {
|
||||
fieldMetadataId: companyPeopleField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.CARD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1803,7 +1787,6 @@ export const TimelineActivityRelationCardWidget: Story = {
|
||||
fieldMetadataId: timelineActivityWorkspaceMemberField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.CARD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -1964,7 +1947,6 @@ export const OneToManyRelationCardWidgetWithProgressiveLoading: Story = {
|
||||
fieldMetadataId: companyPeopleField.id,
|
||||
fieldDisplayMode: FieldDisplayMode.CARD,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
|
||||
-4
@@ -147,7 +147,6 @@ const createPageLayoutWithWidget = (
|
||||
position: 0,
|
||||
pageLayoutId: PAGE_LAYOUT_TEST_INSTANCE_ID,
|
||||
widgets: [widget],
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -177,7 +176,6 @@ const createFieldsWidget = (viewId: string | null): PageLayoutWidget => ({
|
||||
configurationType: WidgetConfigurationType.FIELDS,
|
||||
viewId,
|
||||
},
|
||||
isOverridden: false,
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
updatedAt: '2024-01-01T00:00:00Z',
|
||||
deletedAt: null,
|
||||
@@ -217,7 +215,6 @@ const createViewField = (
|
||||
isVisible: true,
|
||||
size: 200,
|
||||
aggregateOperation: null,
|
||||
isOverridden: false,
|
||||
viewId: FIELDS_VIEW_ID,
|
||||
...(viewFieldGroupId !== undefined && { viewFieldGroupId }),
|
||||
});
|
||||
@@ -233,7 +230,6 @@ const createViewFieldGroup = (
|
||||
name,
|
||||
position,
|
||||
isVisible,
|
||||
isOverridden: false,
|
||||
viewId: FIELDS_VIEW_ID,
|
||||
viewFields,
|
||||
});
|
||||
|
||||
-2
@@ -13,7 +13,6 @@ const buildViewField = (
|
||||
isVisible: true,
|
||||
size: 100,
|
||||
aggregateOperation: null,
|
||||
isOverridden: false,
|
||||
...overrides,
|
||||
});
|
||||
|
||||
@@ -24,7 +23,6 @@ const buildExistingViewField = (overrides: Partial<ViewField>): ViewField => ({
|
||||
isVisible: true,
|
||||
size: 100,
|
||||
aggregateOperation: null,
|
||||
isOverridden: false,
|
||||
...overrides,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user