feat(views/table): hide draggable rows if not supported

This commit is contained in:
Elian Doran 2025-07-14 11:29:14 +03:00
parent ccd935b562
commit 8d29c5fe1b
No known key found for this signature in database
3 changed files with 11 additions and 6 deletions

View File

@ -1,7 +1,7 @@
import { RelationEditor } from "./relation_editor.js";
import { NoteFormatter, NoteTitleFormatter, RowNumberFormatter } from "./formatters.js";
import { applyHeaderMenu } from "./header-menu.js";
import type { ColumnDefinition } from "tabulator-tables";
import type { ColumnDefinition, Tabulator } from "tabulator-tables";
import { LabelType } from "../../../services/promoted_attribute_definition_parser.js";
type ColumnType = LabelType | "relation";
@ -42,7 +42,7 @@ const labelTypeMappings: Record<ColumnType, Partial<ColumnDefinition>> = {
}
};
export function buildColumnDefinitions(info: AttributeDefinitionInformation[], existingColumnData?: ColumnDefinition[]) {
export function buildColumnDefinitions(info: AttributeDefinitionInformation[], movableRows: boolean, existingColumnData?: ColumnDefinition[]) {
const columnDefs: ColumnDefinition[] = [
{
title: "#",
@ -50,7 +50,7 @@ export function buildColumnDefinitions(info: AttributeDefinitionInformation[], e
hozAlign: "center",
resizable: false,
frozen: true,
rowHandle: true,
rowHandle: movableRows,
formatter: RowNumberFormatter
},
{

View File

@ -37,7 +37,12 @@ export function NoteTitleFormatter(cell: CellComponent) {
}
export function RowNumberFormatter(cell: CellComponent) {
return `<span class="bx bx-dots-vertical-rounded"></span> ` + cell.getRow().getPosition(true);
let html = "";
if (cell.getColumn().getDefinition().rowHandle) {
html += `<span class="bx bx-dots-vertical-rounded"></span> `;
}
html += cell.getRow().getPosition(true);
return html;
}
function buildNoteLink(noteId: string) {

View File

@ -124,9 +124,9 @@ export default class TableView extends ViewMode<StateInfo> {
const viewStorage = await this.viewStorage.restore();
this.persistentData = viewStorage?.tableData || {};
const columnDefs = buildColumnDefinitions(info);
const { definitions: rowData, hasChildren } = await buildRowDefinitions(this.parentNote, info);
const movableRows = canReorderRows(this.parentNote) && !hasChildren;
const columnDefs = buildColumnDefinitions(info, movableRows);
this.api = new Tabulator(el, {
layout: "fitDataFill",
@ -249,7 +249,7 @@ export default class TableView extends ViewMode<StateInfo> {
}
const info = getAttributeDefinitionInformation(this.parentNote);
const columnDefs = buildColumnDefinitions(info, this.persistentData?.columns);
const columnDefs = buildColumnDefinitions(info, !!this.api.options.movableRows, this.persistentData?.columns);
this.api.setColumns(columnDefs);
}