feat(views/table): allow creating relations

This commit is contained in:
Elian Doran 2025-07-18 16:52:13 +03:00
parent 897cdc26ae
commit 0d347f8823
No known key found for this signature in database
3 changed files with 28 additions and 2 deletions

View File

@ -287,6 +287,7 @@ export type CommandMappings = {
columnToEdit?: ColumnComponent; columnToEdit?: ColumnComponent;
referenceColumn?: ColumnComponent; referenceColumn?: ColumnComponent;
direction?: "before" | "after"; direction?: "before" | "after";
type?: "label" | "relation";
}; };
deleteTableColumn: CommandData & { deleteTableColumn: CommandData & {
columnToDelete?: ColumnComponent; columnToDelete?: ColumnComponent;

View File

@ -30,7 +30,7 @@ export default class TableColumnEditing extends Component {
this.parentNote = parentNote; this.parentNote = parentNote;
} }
addNewTableColumnCommand({ referenceColumn, columnToEdit, direction }: EventData<"addNewTableColumn">) { addNewTableColumnCommand({ referenceColumn, columnToEdit, direction, type }: EventData<"addNewTableColumn">) {
let attr: Attribute | undefined; let attr: Attribute | undefined;
this.existingAttributeToEdit = undefined; this.existingAttributeToEdit = undefined;
@ -44,7 +44,7 @@ export default class TableColumnEditing extends Component {
if (!attr) { if (!attr) {
attr = { attr = {
type: "label", type: "label",
name: "label:myLabel", name: `${type ?? "label"}:myLabel`,
value: "promoted,single,text" value: "promoted,single,text"
}; };
} }

View File

@ -86,6 +86,7 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote:
title: t("table_view.add-column-to-the-left"), title: t("table_view.add-column-to-the-left"),
uiIcon: "bx bx-horizontal-left", uiIcon: "bx bx-horizontal-left",
enabled: !column.getDefinition().frozen, enabled: !column.getDefinition().frozen,
items: buildInsertSubmenu(e, column, "before"),
handler: () => getParentComponent(e)?.triggerCommand("addNewTableColumn", { handler: () => getParentComponent(e)?.triggerCommand("addNewTableColumn", {
referenceColumn: column referenceColumn: column
}) })
@ -93,6 +94,7 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote:
{ {
title: t("table_view.add-column-to-the-right"), title: t("table_view.add-column-to-the-right"),
uiIcon: "bx bx-horizontal-right", uiIcon: "bx bx-horizontal-right",
items: buildInsertSubmenu(e, column, "after"),
handler: () => getParentComponent(e)?.triggerCommand("addNewTableColumn", { handler: () => getParentComponent(e)?.triggerCommand("addNewTableColumn", {
referenceColumn: column, referenceColumn: column,
direction: "after" direction: "after"
@ -243,3 +245,26 @@ function buildColumnItems(tabulator: Tabulator) {
return items; return items;
} }
function buildInsertSubmenu(e: MouseEvent, referenceColumn: ColumnComponent, direction: "before" | "after"): MenuItem<unknown>[] {
return [
{
title: "Label",
handler: () => {
getParentComponent(e)?.triggerCommand("addNewTableColumn", {
referenceColumn,
type: "label"
});
}
},
{
title: "Relation",
handler: () => {
getParentComponent(e)?.triggerCommand("addNewTableColumn", {
referenceColumn,
type: "relation"
});
}
}
]
}