diff --git a/apps/client/src/widgets/view_widgets/table_view/columns.spec.ts b/apps/client/src/widgets/view_widgets/table_view/columns.spec.ts index 713c85d0a..2c4685892 100644 --- a/apps/client/src/widgets/view_widgets/table_view/columns.spec.ts +++ b/apps/client/src/widgets/view_widgets/table_view/columns.spec.ts @@ -108,4 +108,15 @@ describe("restoreExistingData", () => { const restored = restoreExistingData(newDefs, oldDefs); expect(restored).toStrictEqual(newDefs); }); + + it("allows hiding the row number column", () => { + const newDefs: ColumnDefinition[] = [ + { title: "#", headerSort: false, hozAlign: "center", resizable: false, frozen: true, rowHandle: false }, + ] + const oldDefs: ColumnDefinition[] = [ + { title: "#", headerSort: false, hozAlign: "center", resizable: false, rowHandle: false, visible: false }, + ]; + const restored = restoreExistingData(newDefs, oldDefs); + expect(restored[0].visible).toStrictEqual(false); + }); }); diff --git a/apps/client/src/widgets/view_widgets/table_view/columns.ts b/apps/client/src/widgets/view_widgets/table_view/columns.ts index 356f32f29..f75e5499f 100644 --- a/apps/client/src/widgets/view_widgets/table_view/columns.ts +++ b/apps/client/src/widgets/view_widgets/table_view/columns.ts @@ -41,7 +41,7 @@ const labelTypeMappings: Record> = { } }; -export function buildColumnDefinitions(info: AttributeDefinitionInformation[], movableRows: boolean, existingColumnData?: ColumnDefinition[], position?: number) { +export function buildColumnDefinitions(info: AttributeDefinitionInformation[], movableRows: boolean, existingColumnData: ColumnDefinition[] | undefined, position?: number) { let columnDefs: ColumnDefinition[] = [ { title: "#", @@ -102,10 +102,10 @@ export function restoreExistingData(newDefs: ColumnDefinition[], oldDefs: Column .filter(item => (item.field && newItemsByField.has(item.field!)) || item.title === "#") .map(oldItem => { const data = newItemsByField.get(oldItem.field!)!; - if (oldItem.width) { + if (oldItem.width !== undefined) { data.width = oldItem.width; } - if (oldItem.visible) { + if (oldItem.visible !== undefined) { data.visible = oldItem.visible; } return data; diff --git a/apps/client/src/widgets/view_widgets/table_view/context_menu.ts b/apps/client/src/widgets/view_widgets/table_view/context_menu.ts index ee57e3180..dbac8e0a4 100644 --- a/apps/client/src/widgets/view_widgets/table_view/context_menu.ts +++ b/apps/client/src/widgets/view_widgets/table_view/context_menu.ts @@ -69,7 +69,6 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote: }, { title: t("table_view.hide-column", { title }), - enabled: !!field, uiIcon: "bx bx-hide", handler: () => column.hide() }, @@ -129,7 +128,6 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote: title, checked: column.isVisible(), uiIcon: "bx bx-empty", - enabled: !!field, handler: () => column.toggle() }); } diff --git a/apps/client/src/widgets/view_widgets/table_view/index.ts b/apps/client/src/widgets/view_widgets/table_view/index.ts index aea8c6c25..9fb165a8d 100644 --- a/apps/client/src/widgets/view_widgets/table_view/index.ts +++ b/apps/client/src/widgets/view_widgets/table_view/index.ts @@ -137,7 +137,7 @@ export default class TableView extends ViewMode { const { definitions: rowData, hasSubtree: hasChildren } = await buildRowDefinitions(this.parentNote, info); const movableRows = canReorderRows(this.parentNote) && !hasChildren; - const columnDefs = buildColumnDefinitions(info, movableRows); + const columnDefs = buildColumnDefinitions(info, movableRows, this.persistentData.columns); let opts: Options = { layout: "fitDataFill", index: "branchId",