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:
Weiko
2026-04-08 18:43:57 +02:00
committed by GitHub
parent 2267c56f15
commit 238018dc7b
94 changed files with 1000 additions and 619 deletions
@@ -60,7 +60,6 @@ describe('mapViewFieldsToColumnDefinitions', () => {
position: 1,
size: 1,
isVisible: false,
isOverridden: false,
definition: {
fieldMetadataId: '1',
label: 'label 1',
@@ -79,7 +78,6 @@ describe('mapViewFieldsToColumnDefinitions', () => {
position: 2,
size: 2,
isVisible: false,
isOverridden: false,
definition: {
fieldMetadataId: '2',
label: 'label 2',
@@ -98,7 +96,6 @@ describe('mapViewFieldsToColumnDefinitions', () => {
position: 3,
size: 3,
isVisible: true,
isOverridden: false,
definition: {
fieldMetadataId: '3',
label: 'label 3',
@@ -191,7 +188,6 @@ describe('mapColumnDefinitionsToViewFields', () => {
fieldMetadataId: 1,
position: 1,
isVisible: true,
isOverridden: false,
definition: columnDefinitions[0],
size: undefined,
},
@@ -201,7 +197,6 @@ describe('mapColumnDefinitionsToViewFields', () => {
position: 2,
size: 200,
isVisible: false,
isOverridden: false,
definition: columnDefinitions[1],
},
];
@@ -12,7 +12,6 @@ export const mapBoardFieldDefinitionsToViewFields = (
size: 0,
position: fieldDefinition.position,
isVisible: fieldDefinition.isVisible ?? true,
isOverridden: false,
definition: fieldDefinition,
}),
);
@@ -12,7 +12,6 @@ export const mapColumnDefinitionsToViewFields = (
position: columnDefinition.position,
size: columnDefinition.size,
isVisible: columnDefinition.isVisible ?? true,
isOverridden: false,
definition: columnDefinition,
}));
};
@@ -9,7 +9,6 @@ export const mapRecordFieldToViewField = (recordField: RecordField) => {
position: recordField.position,
size: recordField.size,
aggregateOperation: recordField.aggregateOperation,
isOverridden: false,
};
return viewField;