From 423d7efe2a9082b4ef60bf6f12b62336de515e7f Mon Sep 17 00:00:00 2001 From: hechang27-sprt Date: Tue, 31 Mar 2026 18:00:04 +0800 Subject: [PATCH] WIP: use different css classes for mini-table cells and real table cells --- packages/base/data/list-table-v2.vue | 37 +++++++++++++++++++++------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/packages/base/data/list-table-v2.vue b/packages/base/data/list-table-v2.vue index 482eb29..0b4b174 100644 --- a/packages/base/data/list-table-v2.vue +++ b/packages/base/data/list-table-v2.vue @@ -541,21 +541,21 @@ const tableColumns = computed(() => { }; // Cell renderer - uses renderCellContent which handles slot, cellRenderer, and built-in types - col.cellRenderer = renderCellContent; + col.cellRenderer = (params: CellRendererParams) => renderCellContent(params, false); // Header cell renderer - use custom headerCellRenderer if provided - col.headerCellRenderer = renderHeaderCellContent; + col.headerCellRenderer = (params: HeaderCellRendererParams) => renderHeaderCellContent(params, false); col._listTableColumn = column; return col; }); }); -const MiniTableCell = (params: CellRendererParams) => renderCellContent(params); -const MiniTableHeader = (params: HeaderCellRendererParams) => renderHeaderCellContent(params); +const MiniTableCell = (params: CellRendererParams) => renderCellContent(params, true); +const MiniTableHeader = (params: HeaderCellRendererParams) => renderHeaderCellContent(params, true); // Shared cell renderer - used by both el-table-v2 and mini table for consistent rendering -const renderCellContent = (params: CellRendererParams) => { +const renderCellContent = (params: CellRendererParams, isMiniTable = false) => { const { cellData, rowData, column: elColumn } = params; const column: ListTableColumn = elColumn._listTableColumn; const slotName = column.key; @@ -590,15 +590,15 @@ const renderCellContent = (params: CellRendererParams) => { // Handle dict display if (column.dict) { - return {formatterByDist(column.dict, cellData)}; + return {formatterByDist(column.dict, cellData)}; } // Handle formatting const formatted = formatCellValue(cellData, column, rowData); - return {formatted}; + return {formatted}; }; -const renderHeaderCellContent = (params: HeaderCellRendererParams) => { +const renderHeaderCellContent = (params: HeaderCellRendererParams, isMiniTable = false) => { const { column: elColumn } = params; const column: ListTableColumn = elColumn._listTableColumn; @@ -610,7 +610,7 @@ const renderHeaderCellContent = (params: HeaderCellRendererParams) => { .with({ i18n: P.select(P.string) }, (i18n) => t(i18n)) .otherwise((c) => c.key); - return {header}; + return {header}; }; // Get mini cell style - mirrors the real table's column width/flex distribution @@ -703,6 +703,25 @@ const getMiniCellStyle = ({ width, minWidth, maxWidth, flexGrow, flexShrink }: C display: block; } +// CSS for real table cells (used by el-table-v2) +.table-cell-text { + display: block; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + box-sizing: border-box; +} + +.table-header-cell-text { + display: block; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + box-sizing: border-box; +} + .my-table { flex: 1; width: 100%;