diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml
index 1e83cca3b..c57baf24d 100644
--- a/.github/workflows/codeql.yaml
+++ b/.github/workflows/codeql.yaml
@@ -1,10 +1,6 @@
name: "CodeQL"
on:
- push:
- branches: [main]
- pull_request:
- branches: [main]
schedule:
- cron: '0 6 * * 1' # Weekly scan
workflow_dispatch: # Manual trigger
diff --git a/flowfile_frontend/src/renderer/app/components/nodes/node-types/elements/manualInput/ManualInput.vue b/flowfile_frontend/src/renderer/app/components/nodes/node-types/elements/manualInput/ManualInput.vue
index e6001e6af..6ba764891 100644
--- a/flowfile_frontend/src/renderer/app/components/nodes/node-types/elements/manualInput/ManualInput.vue
+++ b/flowfile_frontend/src/renderer/app/components/nodes/node-types/elements/manualInput/ManualInput.vue
@@ -2,75 +2,121 @@
+
+
+
+
+
+ Add Column
+
+
+
+ Add Row
+
+
+
+
+
+ {{ showRawData ? "Hide JSON" : "Edit JSON" }}
+
+
+
+ {{ columns.length }} columns
+ {{ rows.length }} rows
+
+
+
-
-
-
-
-
- Add Column
-
-
-
- Add Row
-
-
-
-
-
- {{ showRawData ? "Hide" : "Show" }} Raw Data
-
-
-
-
+
- Update Table
+
+ Apply JSON to Table
@@ -271,6 +317,31 @@ const toggleRawData = () => {
showRawData.value = !showRawData.value;
};
+const selectAll = (event: FocusEvent) => {
+ const target = event.target as HTMLInputElement;
+ target.select();
+};
+
+const handleCellKeydown = (event: KeyboardEvent, row: Row, col: Column) => {
+ if (event.key === "Tab" && !event.shiftKey) {
+ const colIndex = columns.value.findIndex((c) => c.id === col.id);
+ const rowIndex = rows.value.findIndex((r) => r.id === row.id);
+
+ // If last column and last row, add new row
+ if (colIndex === columns.value.length - 1 && rowIndex === rows.value.length - 1) {
+ event.preventDefault();
+ addRow();
+ // Focus first cell of new row after Vue updates DOM
+ setTimeout(() => {
+ const newRowCells = document.querySelectorAll('.data-row:last-child .input-cell');
+ if (newRowCells.length > 0) {
+ (newRowCells[0] as HTMLInputElement).focus();
+ }
+ }, 0);
+ }
+ }
+};
+
const updateTableFromRawData = () => {
try {
const newData = JSON.parse(rawDataString.value);
@@ -319,115 +390,335 @@ defineExpose({