From d3330b6bccd2d019a62ca3005ed68b634ea65940 Mon Sep 17 00:00:00 2001 From: Suguru Inoue Date: Mon, 7 Jul 2025 10:54:59 +0200 Subject: [PATCH] feat(editor): Collapse button on table view (#16993) --- .../src/components/N8nIcon/icons.ts | 3 + .../frontend/@n8n/i18n/src/locales/en.json | 2 + .../editor-ui/src/components/InputPanel.vue | 7 + .../editor-ui/src/components/OutputPanel.vue | 7 + .../editor-ui/src/components/RunData.vue | 18 +++ .../src/components/RunDataSearch.vue | 1 + .../src/components/RunDataTable.test.ts | 47 +++++- .../editor-ui/src/components/RunDataTable.vue | 134 +++++++++++++++++- .../__snapshots__/InputPanel.test.ts.snap | 1 + .../logs/components/LogDetailsPanel.test.ts | 10 ++ .../logs/components/LogDetailsPanel.vue | 18 ++- .../features/logs/components/LogsPanel.vue | 29 +++- .../logs/components/LogsViewRunData.vue | 9 +- 13 files changed, 276 insertions(+), 10 deletions(-) diff --git a/packages/frontend/@n8n/design-system/src/components/N8nIcon/icons.ts b/packages/frontend/@n8n/design-system/src/components/N8nIcon/icons.ts index cc7c68c1c3..f090f6a318 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nIcon/icons.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nIcon/icons.ts @@ -44,6 +44,7 @@ import IconLucideChevronDown from '~icons/lucide/chevron-down'; import IconLucideChevronLeft from '~icons/lucide/chevron-left'; import IconLucideChevronRight from '~icons/lucide/chevron-right'; import IconLucideChevronUp from '~icons/lucide/chevron-up'; +import IconLucideChevronsDownUp from '~icons/lucide/chevrons-down-up'; import IconLucideChevronsLeft from '~icons/lucide/chevrons-left'; import IconLucideChevronsUpDown from '~icons/lucide/chevrons-up-down'; import IconLucideCircle from '~icons/lucide/circle'; @@ -438,6 +439,8 @@ export const updatedIconSet = { 'chevron-right': IconLucideChevronRight, 'chevron-up': IconLucideChevronUp, 'chevrons-left': IconLucideChevronsLeft, + 'chevrons-down-up': IconLucideChevronsDownUp, + 'chevrons-up-down': IconLucideChevronsUpDown, circle: IconLucideCircle, 'circle-alert': IconLucideCircleAlert, 'circle-check': IconLucideCircleCheck, diff --git a/packages/frontend/@n8n/i18n/src/locales/en.json b/packages/frontend/@n8n/i18n/src/locales/en.json index 3382f9671a..412e80ab01 100644 --- a/packages/frontend/@n8n/i18n/src/locales/en.json +++ b/packages/frontend/@n8n/i18n/src/locales/en.json @@ -683,6 +683,8 @@ "dataMapping.tableView.tableColumnsExceeded": "Some columns are hidden", "dataMapping.tableView.tableColumnsExceeded.tooltip": "Your data has more than {columnLimit} columns so some are hidden. Switch to {link} to see all data.", "dataMapping.tableView.tableColumnsExceeded.tooltip.link": "JSON view", + "dataMapping.tableView.columnCollapsing": "Collapse rows", + "dataMapping.tableView.columnCollapsing.tooltip": "Collapse rows (to compare values in this column)", "dataMapping.schemaView.emptyData": "No fields - node executed, but no items were sent on this branch", "dataMapping.schemaView.emptySchema": "No fields - item(s) exist, but they're empty", "dataMapping.schemaView.emptySchemaWithBinary": "Only binary data exists. View it using the 'Binary' tab", diff --git a/packages/frontend/editor-ui/src/components/InputPanel.vue b/packages/frontend/editor-ui/src/components/InputPanel.vue index 46442c6a5f..cab319c30c 100644 --- a/packages/frontend/editor-ui/src/components/InputPanel.vue +++ b/packages/frontend/editor-ui/src/components/InputPanel.vue @@ -84,6 +84,7 @@ const showDraggableHintWithDelay = ref(false); const draggableHintShown = ref(false); const mappedNode = ref(null); +const collapsingColumnName = ref(null); const inputModes = [ { value: 'mapping', label: i18n.baseText('ndv.input.mapping') }, { value: 'debugging', label: i18n.baseText('ndv.input.fromAI') }, @@ -365,6 +366,10 @@ function onConnectionHelpClick() { function activatePane() { emit('activatePane'); } + +function handleChangeCollapsingColumn(columnName: string | null) { + collapsingColumnName.value = columnName; +}