feat(views/table): allow hiding number row & title

This commit is contained in:
Elian Doran
2025-07-17 15:00:10 +03:00
parent 8b0fdaccf4
commit a25ce42490
4 changed files with 15 additions and 6 deletions

View File

@@ -108,4 +108,15 @@ describe("restoreExistingData", () => {
const restored = restoreExistingData(newDefs, oldDefs); const restored = restoreExistingData(newDefs, oldDefs);
expect(restored).toStrictEqual(newDefs); 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);
});
}); });

View File

@@ -41,7 +41,7 @@ const labelTypeMappings: Record<ColumnType, Partial<ColumnDefinition>> = {
} }
}; };
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[] = [ let columnDefs: ColumnDefinition[] = [
{ {
title: "#", title: "#",
@@ -102,10 +102,10 @@ export function restoreExistingData(newDefs: ColumnDefinition[], oldDefs: Column
.filter(item => (item.field && newItemsByField.has(item.field!)) || item.title === "#") .filter(item => (item.field && newItemsByField.has(item.field!)) || item.title === "#")
.map(oldItem => { .map(oldItem => {
const data = newItemsByField.get(oldItem.field!)!; const data = newItemsByField.get(oldItem.field!)!;
if (oldItem.width) { if (oldItem.width !== undefined) {
data.width = oldItem.width; data.width = oldItem.width;
} }
if (oldItem.visible) { if (oldItem.visible !== undefined) {
data.visible = oldItem.visible; data.visible = oldItem.visible;
} }
return data; return data;

View File

@@ -69,7 +69,6 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote:
}, },
{ {
title: t("table_view.hide-column", { title }), title: t("table_view.hide-column", { title }),
enabled: !!field,
uiIcon: "bx bx-hide", uiIcon: "bx bx-hide",
handler: () => column.hide() handler: () => column.hide()
}, },
@@ -129,7 +128,6 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote:
title, title,
checked: column.isVisible(), checked: column.isVisible(),
uiIcon: "bx bx-empty", uiIcon: "bx bx-empty",
enabled: !!field,
handler: () => column.toggle() handler: () => column.toggle()
}); });
} }

View File

@@ -137,7 +137,7 @@ export default class TableView extends ViewMode<StateInfo> {
const { definitions: rowData, hasSubtree: hasChildren } = await buildRowDefinitions(this.parentNote, info); const { definitions: rowData, hasSubtree: hasChildren } = await buildRowDefinitions(this.parentNote, info);
const movableRows = canReorderRows(this.parentNote) && !hasChildren; const movableRows = canReorderRows(this.parentNote) && !hasChildren;
const columnDefs = buildColumnDefinitions(info, movableRows); const columnDefs = buildColumnDefinitions(info, movableRows, this.persistentData.columns);
let opts: Options = { let opts: Options = {
layout: "fitDataFill", layout: "fitDataFill",
index: "branchId", index: "branchId",