View field override (#18572)

## Context
This PR introduces overrides for view fields which will be useful for
page layout FIELDS widgets fields position/groups/visibility override +
restore logic.
This commit is contained in:
Weiko
2026-03-14 12:40:15 +01:00
committed by GitHub
parent 0b0ffcb8fa
commit 48172d60fd
50 changed files with 864 additions and 114 deletions
@@ -7,6 +7,7 @@ describe('convertCoreViewFieldGroupToViewFieldGroup', () => {
name: 'Group 1',
position: 0,
isVisible: true,
isOverridden: false,
viewId: 'view-1',
viewFields: [
{
@@ -16,6 +17,7 @@ describe('convertCoreViewFieldGroupToViewFieldGroup', () => {
isVisible: true,
size: 150,
aggregateOperation: null,
isOverridden: false,
},
{
id: 'vf-2',
@@ -24,6 +26,7 @@ describe('convertCoreViewFieldGroupToViewFieldGroup', () => {
isVisible: false,
size: 200,
aggregateOperation: null,
isOverridden: false,
},
],
};
@@ -37,6 +40,7 @@ describe('convertCoreViewFieldGroupToViewFieldGroup', () => {
name: 'Group 1',
position: 0,
isVisible: true,
isOverridden: false,
viewId: 'view-1',
viewFields: [
{
@@ -47,6 +51,7 @@ describe('convertCoreViewFieldGroupToViewFieldGroup', () => {
isVisible: true,
size: 150,
aggregateOperation: null,
isOverridden: false,
definition: undefined,
},
{
@@ -57,6 +62,7 @@ describe('convertCoreViewFieldGroupToViewFieldGroup', () => {
isVisible: false,
size: 200,
aggregateOperation: null,
isOverridden: false,
definition: undefined,
},
],
@@ -69,6 +75,7 @@ describe('convertCoreViewFieldGroupToViewFieldGroup', () => {
name: 'Empty Group',
position: 1,
isVisible: false,
isOverridden: false,
viewId: 'view-1',
viewFields: [],
};
@@ -82,6 +89,7 @@ describe('convertCoreViewFieldGroupToViewFieldGroup', () => {
name: 'Empty Group',
position: 1,
isVisible: false,
isOverridden: false,
viewId: 'view-1',
viewFields: [],
});
@@ -93,6 +101,7 @@ describe('convertCoreViewFieldGroupToViewFieldGroup', () => {
name: 'Test',
position: 0,
isVisible: true,
isOverridden: false,
viewId: 'view-2',
viewFields: [],
};
@@ -62,6 +62,7 @@ describe('mapViewFieldsToColumnDefinitions', () => {
position: 1,
size: 1,
isVisible: false,
isOverridden: false,
definition: {
fieldMetadataId: '1',
label: 'label 1',
@@ -81,6 +82,7 @@ describe('mapViewFieldsToColumnDefinitions', () => {
position: 2,
size: 2,
isVisible: false,
isOverridden: false,
definition: {
fieldMetadataId: '2',
label: 'label 2',
@@ -100,6 +102,7 @@ describe('mapViewFieldsToColumnDefinitions', () => {
position: 3,
size: 3,
isVisible: true,
isOverridden: false,
definition: {
fieldMetadataId: '3',
label: 'label 3',
@@ -193,6 +196,7 @@ describe('mapColumnDefinitionsToViewFields', () => {
fieldMetadataId: 1,
position: 1,
isVisible: true,
isOverridden: false,
definition: columnDefinitions[0],
size: undefined,
},
@@ -203,6 +207,7 @@ describe('mapColumnDefinitionsToViewFields', () => {
position: 2,
size: 200,
isVisible: false,
isOverridden: false,
definition: columnDefinitions[1],
},
];
@@ -7,7 +7,7 @@ import {
type CoreViewFieldGroupInput = Pick<
CoreViewFieldGroup,
'id' | 'name' | 'position' | 'isVisible' | 'viewId'
'id' | 'name' | 'position' | 'isVisible' | 'viewId' | 'isOverridden'
> & {
viewFields: Pick<
CoreViewField,
@@ -17,6 +17,7 @@ type CoreViewFieldGroupInput = Pick<
| 'isVisible'
| 'size'
| 'aggregateOperation'
| 'isOverridden'
>[];
};
@@ -29,6 +30,7 @@ export const convertCoreViewFieldGroupToViewFieldGroup = (
name: coreViewFieldGroup.name,
position: coreViewFieldGroup.position,
isVisible: coreViewFieldGroup.isVisible,
isOverridden: coreViewFieldGroup.isOverridden ?? false,
viewId: coreViewFieldGroup.viewId,
viewFields: coreViewFieldGroup.viewFields.map(
convertCoreViewFieldToViewField,
@@ -12,6 +12,7 @@ export const convertCoreViewFieldToViewField = (
| 'isVisible'
| 'size'
| 'aggregateOperation'
| 'isOverridden'
>,
): ViewField => {
const viewField: ViewField = {
@@ -22,6 +23,7 @@ export const convertCoreViewFieldToViewField = (
isVisible: coreViewField.isVisible,
size: coreViewField.size,
aggregateOperation: coreViewField.aggregateOperation ?? null,
isOverridden: coreViewField.isOverridden ?? false,
// TODO: remove this once we have refactored the view field definition
definition: undefined as unknown as ColumnDefinition<FieldMetadata>,
};
@@ -13,6 +13,7 @@ export const mapBoardFieldDefinitionsToViewFields = (
size: 0,
position: fieldDefinition.position,
isVisible: fieldDefinition.isVisible ?? true,
isOverridden: false,
definition: fieldDefinition,
}),
);
@@ -13,6 +13,7 @@ export const mapColumnDefinitionsToViewFields = (
position: columnDefinition.position,
size: columnDefinition.size,
isVisible: columnDefinition.isVisible ?? true,
isOverridden: false,
definition: columnDefinition,
}));
};
@@ -9,6 +9,7 @@ export const mapRecordFieldToViewField = (recordField: RecordField) => {
position: recordField.position,
size: recordField.size,
aggregateOperation: recordField.aggregateOperation,
isOverridden: false,
__typename: 'ViewField',
};