diff --git a/packages/web/src/celldata/TableCellView.svelte b/packages/web/src/celldata/TableCellView.svelte new file mode 100644 index 000000000..f56ae85e2 --- /dev/null +++ b/packages/web/src/celldata/TableCellView.svelte @@ -0,0 +1,295 @@ + + +
+
+ {#if !rowData} +
No data selected
+ {:else} + {#each orderedFields as field (field.uniqueName)} +
+
{field.columnName}
+
handleDoubleClick(field)} + > + {#if editingColumn === field.uniqueName} +
+ isChangedRef.set(true)} + on:keydown={e => handleKeyDown(e, field)} + on:blur={() => handleBlur(field)} + class="inline-editor" + /> + {#if editable} + { + editingColumn = null; + openEditModal(field); + }} + /> + {/if} +
+ {:else} + + {#if isJsonValue(field.value)} + openJsonInNewTab(field)} + /> + {/if} + {/if} +
+
+ {/each} + {/if} +
+
+ + diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 7eb775059..d24356fc2 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -1258,9 +1258,21 @@ condition: display?.getChangeSetCondition(rowData), insertedRowIndex: grider?.getInsertedRowIndex(row), rowStatus: grider.getRowStatus(row), + // Additional data for TableCellView editing support + onSetValue: value => grider.setCellValue(row, column, value), + editable: grider.editable, + editorTypes: display?.driver?.dataEditorTypesBehaviour, }; }) .filter(x => x.column); + // Add columns info for TableCellView (columns in display order) + res.columns = columns; + res.realColumnUniqueNames = realColumnUniqueNames; + // Add a general setCellValue function for editing any column in the first selected row + if (res.length > 0) { + const firstRow = res[0].row; + res.setCellValue = (columnName, value) => grider.setCellValue(firstRow, columnName, value); + } return res; } diff --git a/packages/web/src/widgets/CellDataWidget.svelte b/packages/web/src/widgets/CellDataWidget.svelte index 8175b86e8..6c60dddda 100644 --- a/packages/web/src/widgets/CellDataWidget.svelte +++ b/packages/web/src/widgets/CellDataWidget.svelte @@ -14,6 +14,12 @@ component: TextCellViewNoWrap, single: false, }, + { + type: 'table', + title: 'Table', + component: TableCellView, + single: false, + }, { type: 'json', title: 'Json', @@ -92,6 +98,7 @@ import JsonRowView from '../celldata/JsonRowView.svelte'; import MapCellView from '../celldata/MapCellView.svelte'; import PictureCellView from '../celldata/PictureCellView.svelte'; + import TableCellView from '../celldata/TableCellView.svelte'; import TextCellViewNoWrap from '../celldata/TextCellViewNoWrap.svelte'; import TextCellViewWrap from '../celldata/TextCellViewWrap.svelte'; import ErrorInfo from '../elements/ErrorInfo.svelte';