diff --git a/src/js/editor.ts b/src/js/editor.ts index 8b98345..74de4ef 100644 --- a/src/js/editor.ts +++ b/src/js/editor.ts @@ -598,7 +598,6 @@ function headerContextMenu(event, header_id) { function navContextMenu(event, table_id) { if (is_positioning) {return;} - let data = getSelectionData(); let menu = $("
") .attr("id", "context-menu-"+table_id) .addClass("border context-menu text-nowrap list-group") @@ -617,7 +616,7 @@ function navContextMenu(event, table_id) { .text("Delete Table") .attr({"data-bs-toggle": "modal", "data-bs-target": "#delete-table"}) .on("click", () => { - $("#confirm-delete-table").one("click", (event) => { + $("#confirm-delete-table").one("click", () => { deleteTable(table_id); }) menu.remove(); @@ -883,7 +882,7 @@ function getDeselectingNodes() { }); } -function getSelectedCells() { +function getSelectedCells(): Array { let selectable = getSelectable(); let nodes = selectable.getSelectedNodes(); if (nodes.length === 0) { @@ -914,19 +913,6 @@ function copyToClipboard(cut=false) { row = "header"; } let item_text = el.text(); - if (cut) { - el.text(""); - let data = getSelectionData(); - let table_index = data["table_index"]; - let col_index = el.index(); - if (el.prop("tagName") === "TH") { - tables_data[table_index]["columns"][col_index]["title"] = ""; - } else { - let row_key = tables_data[table_index]["columns"][col_index]["field"]; - let row_index = el.parent().index(); - tables_data[table_index]["rows"][row_index][row_key] = ""; - } - } if (!previous_row) { selection += item_text; previous_row_elm.append(""+item_text+""); @@ -941,6 +927,9 @@ function copyToClipboard(cut=false) { } previous_row = row; } + if (cut) { + clearCells(getSelectedCells()); + } table.append(previous_row_elm); clipboard.clear(); clipboard.write({ @@ -957,7 +946,7 @@ function pasteFromClipboard() { row_cols[i] = rows[i].split("\t"); } let selectable = getSelectable(); - let selected_items = selectable.getSelectedItems(); + let selected_items = selectable.getSelectedItems(false); selected_items.splice(0, 1); if(selected_items.length > 0) { selectable.deselect(selected_items); @@ -1007,9 +996,32 @@ function selectAll(event) { } function backspaceDelete(event: JQuery.KeyDownEvent) { + if (!event.ctrlKey && !event.shiftKey && !event.altKey && (event.key == "Backspace" || event.key == "Delete")) { + let cells = getSelectedCells(); + if (cells.length > 0) { + clearCells(cells); + } + } } -function getColumnIDs(columns) { +function clearCells(cells: Array) { + for (let cell of cells) { + let el = $("#"+cell); + el.text(""); + let data = getSelectionData(); + let table_index = data["table_index"]; + let col_index = el.index(); + if (el.prop("tagName") === "TH") { + tables_data[table_index]["columns"][col_index]["title"] = ""; + } else { + let row_key = tables_data[table_index]["columns"][col_index]["field"]; + let row_index = el.parent().index(); + tables_data[table_index]["rows"][row_index][row_key] = ""; + } + } +} + +function getColumnIDs(columns): Array { let ids = []; for (let col of columns) { ids.push(col["field"]); @@ -1017,7 +1029,7 @@ function getColumnIDs(columns) { return ids; } -function getRowIDs(rows) { +function getRowIDs(rows): Array { let ids = []; for (let row of rows) { ids.push(row["uid"]); @@ -1025,7 +1037,7 @@ function getRowIDs(rows) { return ids; } -function getTableIDs() { +function getTableIDs(): Array { let ids = []; for (let table of tables_data) { ids.push(table["id"]);