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
No known key found for this signature in database
4 changed files with 15 additions and 6 deletions

View File

@ -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);
});
});

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[] = [
{
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;

View File

@ -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()
});
}

View File

@ -137,7 +137,7 @@ export default class TableView extends ViewMode<StateInfo> {
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",