From f197973c0192ee40bd85497a6fa355f9e644cc4f Mon Sep 17 00:00:00 2001 From: JayBridge <12310903@mail.sustech.edu.cn> Date: Thu, 19 Jun 2025 21:07:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=E5=88=97=E5=8F=B7=E5=92=8C?= =?UTF-8?q?=E8=A1=8C=E5=8F=B7=E5=8D=95=E5=85=83=E6=A0=BC=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=8B=96=E6=8B=BD=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=BC=BA=E7=94=A8=E6=88=B7=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E4=BD=93=E9=AA=8C=20[FR]=20Drag=20to=20resize=20colum?= =?UTF-8?q?ns=20#20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/view.ts | 15 +++++++++++++++ src/view/table-render.ts | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/src/view.ts b/src/view.ts index c11d9e3..d289588 100644 --- a/src/view.ts +++ b/src/view.ts @@ -355,6 +355,21 @@ export class CSVView extends TextFileView { onMoveColLeft: (colIdx) => this.moveCol(colIdx, colIdx - 1), onMoveColRight: (colIdx) => this.moveCol(colIdx, colIdx + 1), }); + + // 在 refresh 方法中调用 setupColumnResize,为列号和行号单元格绑定拖拽事件 + this.tableData[0].forEach((_, index) => { + const resizeHandle = this.tableEl.querySelector(`.resize-handle[data-index='${index}']`) as HTMLElement; + if (resizeHandle) { + this.setupColumnResize(resizeHandle, index); + } + }); + + this.tableData.forEach((_, rowIndex) => { + const resizeHandleRow = this.tableEl.querySelector(`.resize-handle-row[data-row-index='${rowIndex}']`) as HTMLElement; + if (resizeHandleRow) { + this.setupColumnResize(resizeHandleRow, rowIndex); + } + }); } // 新增:获取列标签(A, B, C, ... Z, AA, AB, ...) diff --git a/src/view/table-render.ts b/src/view/table-render.ts index 59d1506..c28bcc0 100644 --- a/src/view/table-render.ts +++ b/src/view/table-render.ts @@ -154,6 +154,10 @@ export function renderTable(options: TableRenderOptions) { th.classList.add('csv-dragging-highlight'); } } + + // 在列号单元格中添加拖拽事件处理逻辑 + const resizeHandle = th.createEl("div", { cls: "resize-handle" }); + setupColumnResize(resizeHandle, index); }); } @@ -184,6 +188,7 @@ export function renderTable(options: TableRenderOptions) { headerInput.onfocus = (ev) => { setActiveCell(0, index, ev.currentTarget as HTMLInputElement); }; + // 在列号单元格中添加拖拽事件处理逻辑 const resizeHandle = th.createEl("div", { cls: "resize-handle" }); setupColumnResize(resizeHandle, index); });