bkui-vue 2.0.1-beta.27 → 2.0.1-beta.28.table.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17467,7 +17467,7 @@ var COLUMN_ATTRIBUTE = {
17467
17467
  /**
17468
17468
  * Y 轴滚动条宽度
17469
17469
  */
17470
- var SCROLLY_WIDTH = 0;
17470
+ var SCROLLY_WIDTH = 8;
17471
17471
  /**
17472
17472
  * 默认行高
17473
17473
  */
@@ -18125,7 +18125,8 @@ var CELL_EVENT_TYPES = defineProperty_defineProperty(defineProperty_defineProper
18125
18125
  var afterResize = _ref.afterResize;
18126
18126
  var getColumnAttribute = columns.getColumnAttribute,
18127
18127
  getColumnOrderWidth = columns.getColumnOrderWidth,
18128
- setColumnAttribute = columns.setColumnAttribute;
18128
+ setColumnAttribute = columns.setColumnAttribute,
18129
+ setNextColumnWidth = columns.setNextColumnWidth;
18129
18130
  var getColListener = function getColListener(col) {
18130
18131
  return getColumnAttribute(col, COLUMN_ATTRIBUTE.LISTENERS);
18131
18132
  };
@@ -18143,7 +18144,7 @@ var CELL_EVENT_TYPES = defineProperty_defineProperty(defineProperty_defineProper
18143
18144
  var dragColumn = null;
18144
18145
  var dragStartOffsetX = 0;
18145
18146
  var dragOffsetX = (0,external_vue_namespaceObject.ref)(-1000);
18146
- var ORDER_LIST = [COLUMN_ATTRIBUTE.RESIZE_WIDTH, COLUMN_ATTRIBUTE.CALC_WIDTH];
18147
+ var ORDER_LIST = [COLUMN_ATTRIBUTE.WIDTH];
18147
18148
  var stopDefaultEvent = function stopDefaultEvent(e) {
18148
18149
  e.stopImmediatePropagation();
18149
18150
  e.stopPropagation();
@@ -18157,8 +18158,8 @@ var CELL_EVENT_TYPES = defineProperty_defineProperty(defineProperty_defineProper
18157
18158
  var resolveWidth = getColumnOrderWidth(dragColumn, ORDER_LIST) + diff;
18158
18159
  var minWidth = getColumnOrderWidth(dragColumn, [COLUMN_ATTRIBUTE.COL_MIN_WIDTH]);
18159
18160
  var calcWidth = resolveWidth > minWidth ? resolveWidth : minWidth;
18160
- setColumnAttribute(dragColumn, COLUMN_ATTRIBUTE.RESIZE_WIDTH, calcWidth);
18161
- setColumnAttribute(dragColumn, COLUMN_ATTRIBUTE.CALC_WIDTH, calcWidth);
18161
+ setNextColumnWidth(dragColumn, calcWidth);
18162
+ setColumnAttribute(dragColumn, COLUMN_ATTRIBUTE.WIDTH, calcWidth);
18162
18163
  document.removeEventListener('mouseup', handleMouseUp);
18163
18164
  document.removeEventListener('mousemove', handleMouseMove);
18164
18165
  startX = 0;
@@ -18192,7 +18193,7 @@ var CELL_EVENT_TYPES = defineProperty_defineProperty(defineProperty_defineProper
18192
18193
  var removeCursor = function removeCursor(target) {
18193
18194
  var _target$style2;
18194
18195
  setNodeCursor.cancel();
18195
- (_target$style2 = target.style) === null || _target$style2 === void 0 || _target$style2.removeProperty('cursor');
18196
+ target === null || target === void 0 || (_target$style2 = target.style) === null || _target$style2 === void 0 || _target$style2.removeProperty('cursor');
18196
18197
  target === null || target === void 0 || target.classList.remove('col-resize-hover');
18197
18198
  };
18198
18199
  var handler = defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty({}, EVENTS.MOUSE_DOWN, function (e, column) {
@@ -18202,7 +18203,6 @@ var CELL_EVENT_TYPES = defineProperty_defineProperty(defineProperty_defineProper
18202
18203
  isMouseDown = true;
18203
18204
  var target = e.target.closest('th');
18204
18205
  setColumnAttribute(column, COLUMN_ATTRIBUTE.COL_IS_DRAG, true);
18205
- setColumnAttribute(column, COLUMN_ATTRIBUTE.CALC_WIDTH, target.scrollWidth);
18206
18206
  setNodeCursor(target);
18207
18207
  dragColumn = column;
18208
18208
  startX = e.clientX;
@@ -18211,6 +18211,7 @@ var CELL_EVENT_TYPES = defineProperty_defineProperty(defineProperty_defineProper
18211
18211
  updateOffsetX(e)();
18212
18212
  document.addEventListener('mouseup', handleMouseUp);
18213
18213
  document.addEventListener('mousemove', handleMouseMove);
18214
+ target === null || target === void 0 || target.classList.remove('col-resize-hover');
18214
18215
  }), EVENTS.MOUSE_MOVE, function (e, _column) {
18215
18216
  if (isMouseDown && !isDraging) {
18216
18217
  isDraging = true;
@@ -18422,55 +18423,69 @@ function v4(options, buf, offset) {
18422
18423
  }
18423
18424
  return columnCache.get(ctx);
18424
18425
  };
18425
- var resolveChildNode = function resolveChildNode(node) {
18426
- var _node$type, _node$type2, _node$component;
18427
- if (!node || ((_node$type = node.type) === null || _node$type === void 0 ? void 0 : _node$type.name) === 'Table') {
18428
- return;
18429
- }
18430
- if (((_node$type2 = node.type) === null || _node$type2 === void 0 ? void 0 : _node$type2.name) === 'TableColumn') {
18431
- var _node$props$render, _node$children;
18432
- var resolveProp = Object.assign({
18433
- index: columnIndex
18434
- }, copyProps(node.props), {
18435
- field: node.props.prop || node.props.field,
18436
- render: (_node$props$render = node.props.render) !== null && _node$props$render !== void 0 ? _node$props$render : (_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children["default"],
18437
- uniqueId: getNodeCtxUid(node)
18438
- });
18439
- if (!columns.some(function (col) {
18440
- return col.uniqueId === resolveProp.uniqueId;
18441
- })) {
18442
- columns.push((0,external_vue_namespaceObject.unref)(resolveProp));
18443
- columnIndex = columnIndex + 1;
18444
- }
18445
- return;
18446
- }
18426
+ var resolveNodeChilren = function resolveNodeChilren(node, rootNode, isColumnRoot) {
18427
+ var _node$component;
18447
18428
  if (node !== null && node !== void 0 && (_node$component = node.component) !== null && _node$component !== void 0 && _node$component.subTree) {
18448
18429
  var _node$component2;
18449
- resolveChildNode(node === null || node === void 0 || (_node$component2 = node.component) === null || _node$component2 === void 0 ? void 0 : _node$component2.subTree);
18430
+ resolveChildNode(node === null || node === void 0 || (_node$component2 = node.component) === null || _node$component2 === void 0 ? void 0 : _node$component2.subTree, rootNode);
18450
18431
  return;
18451
18432
  }
18452
18433
  if (typeof node === 'function') {
18453
18434
  return node();
18454
18435
  }
18455
18436
  if (Array.isArray(node)) {
18456
- node.forEach(resolveChildNode);
18437
+ node.forEach(function (c) {
18438
+ return resolveChildNode(c, rootNode);
18439
+ });
18457
18440
  return;
18458
18441
  }
18459
18442
  if (Array.isArray(node === null || node === void 0 ? void 0 : node.children)) {
18460
- node.children.forEach(resolveChildNode);
18443
+ node.children.forEach(function (c) {
18444
+ return resolveChildNode(c, rootNode);
18445
+ });
18461
18446
  return;
18462
18447
  }
18463
- if ((0,external_vue_namespaceObject.isVNode)(node) && node !== null && node !== void 0 && node.children && typeof_typeof(node === null || node === void 0 ? void 0 : node.children) === 'object') {
18448
+ if (!isColumnRoot && (0,external_vue_namespaceObject.isVNode)(node) && node !== null && node !== void 0 && node.children && typeof_typeof(node === null || node === void 0 ? void 0 : node.children) === 'object') {
18464
18449
  Object.keys(node.children).forEach(function (key) {
18465
- return resolveChildNode(node.children[key]);
18450
+ return resolveChildNode(node.children[key], rootNode);
18451
+ });
18452
+ return;
18453
+ }
18454
+ };
18455
+ var resolveChildNode = function resolveChildNode(node, parent) {
18456
+ var _node$type, _node$type2;
18457
+ var rootNode = parent;
18458
+ if (!node || ((_node$type = node.type) === null || _node$type === void 0 ? void 0 : _node$type.name) === 'Table') {
18459
+ return;
18460
+ }
18461
+ if (((_node$type2 = node.type) === null || _node$type2 === void 0 ? void 0 : _node$type2.name) === 'TableColumn') {
18462
+ var _node$props$render, _node$children, _parent$children;
18463
+ var resolveProp = Object.assign({
18464
+ index: columnIndex
18465
+ }, copyProps(node.props), {
18466
+ field: node.props.prop || node.props.field,
18467
+ render: (_node$props$render = node.props.render) !== null && _node$props$render !== void 0 ? _node$props$render : (_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children["default"],
18468
+ uniqueId: getNodeCtxUid(node),
18469
+ children: []
18466
18470
  });
18471
+ var targetColumns = (_parent$children = parent === null || parent === void 0 ? void 0 : parent.children) !== null && _parent$children !== void 0 ? _parent$children : columns;
18472
+ if (!targetColumns.some(function (col) {
18473
+ return col.uniqueId === resolveProp.uniqueId;
18474
+ })) {
18475
+ targetColumns.push(resolveProp);
18476
+ columnIndex = columnIndex + 1;
18477
+ if (node.children) {
18478
+ resolveNodeChilren(node, resolveProp, true);
18479
+ }
18480
+ }
18467
18481
  return;
18468
18482
  }
18483
+ resolveNodeChilren(node, rootNode);
18469
18484
  };
18470
18485
  var resolveColumns = function resolveColumns(children) {
18471
18486
  columns.length = 0;
18472
18487
  columnIndex = 0;
18473
- var ghostBody = children.find(function (node) {
18488
+ var ghostBody = children === null || children === void 0 ? void 0 : children.find(function (node) {
18474
18489
  var _node$type3;
18475
18490
  return ((_node$type3 = node.type) === null || _node$type3 === void 0 ? void 0 : _node$type3.name) === 'GhostBody';
18476
18491
  });
@@ -18481,7 +18496,9 @@ function v4(options, buf, offset) {
18481
18496
  resolveChildNode((_ghostBody$component2 = ghostBody.component) === null || _ghostBody$component2 === void 0 ? void 0 : _ghostBody$component2.subTree);
18482
18497
  } else {
18483
18498
  var _ghostBody$children$d, _ghostBody$children, _ghostBody$children$d2;
18484
- ((_ghostBody$children$d = (_ghostBody$children = ghostBody.children) === null || _ghostBody$children === void 0 || (_ghostBody$children$d2 = _ghostBody$children["default"]) === null || _ghostBody$children$d2 === void 0 ? void 0 : _ghostBody$children$d2.call(_ghostBody$children)) !== null && _ghostBody$children$d !== void 0 ? _ghostBody$children$d : []).forEach(resolveChildNode);
18499
+ ((_ghostBody$children$d = (_ghostBody$children = ghostBody.children) === null || _ghostBody$children === void 0 || (_ghostBody$children$d2 = _ghostBody$children["default"]) === null || _ghostBody$children$d2 === void 0 ? void 0 : _ghostBody$children$d2.call(_ghostBody$children)) !== null && _ghostBody$children$d !== void 0 ? _ghostBody$children$d : []).forEach(function (c) {
18500
+ return resolveChildNode(c);
18501
+ });
18485
18502
  }
18486
18503
  }
18487
18504
  columns.sort(function (col1, col2) {
@@ -20042,6 +20059,8 @@ var useColumns = function useColumns(props) {
20042
20059
  var uuid = esm_browser_v4();
20043
20060
  var sortColumns = (0,external_vue_namespaceObject.reactive)([]);
20044
20061
  var filterColumns = (0,external_vue_namespaceObject.reactive)([]);
20062
+ var columnGroup = (0,external_vue_namespaceObject.reactive)([]);
20063
+ var columnGroupMap = new WeakMap();
20045
20064
  /**
20046
20065
  * 用来记录列的排序状态
20047
20066
  * @param col
@@ -20072,7 +20091,7 @@ var useColumns = function useColumns(props) {
20072
20091
  var colWidth = 0;
20073
20092
  if (/^\d+\.?\d*(px)?$/.test("".concat(col[attrName]))) {
20074
20093
  colWidth = Number("".concat(col[attrName]).replace(/px/, ''));
20075
- setColumnAttribute(col, COLUMN_ATTRIBUTE.CALC_WIDTH, colWidth);
20094
+ setColumnAttribute(col, COLUMN_ATTRIBUTE.WIDTH, colWidth);
20076
20095
  setColumnRect(col, {
20077
20096
  width: colWidth,
20078
20097
  left: null,
@@ -20081,7 +20100,7 @@ var useColumns = function useColumns(props) {
20081
20100
  }
20082
20101
  if (/^\d+\.?\d*%$/.test("".concat(col[attrName]))) {
20083
20102
  colWidth = Number("".concat(col[attrName]).replace(/%/, '')) / 100 * width;
20084
- setColumnAttribute(col, COLUMN_ATTRIBUTE.CALC_WIDTH, colWidth);
20103
+ setColumnAttribute(col, COLUMN_ATTRIBUTE.WIDTH, colWidth);
20085
20104
  setColumnRect(col, {
20086
20105
  width: colWidth,
20087
20106
  left: null,
@@ -20117,7 +20136,7 @@ var useColumns = function useColumns(props) {
20117
20136
  var autoWidthList = resolveColWidth(minWidthList, 'minWidth');
20118
20137
  autoWidthList.forEach(function (col) {
20119
20138
  var calcWidth = minColWidth > COL_MIN_WIDTH ? minColWidth : COL_MIN_WIDTH;
20120
- setColumnAttribute(col, COLUMN_ATTRIBUTE.CALC_WIDTH, calcWidth);
20139
+ setColumnAttribute(col, COLUMN_ATTRIBUTE.WIDTH, calcWidth);
20121
20140
  setColumnRect(col, {
20122
20141
  width: calcWidth,
20123
20142
  left: null,
@@ -20251,6 +20270,81 @@ var useColumns = function useColumns(props) {
20251
20270
  };
20252
20271
  return filterFn;
20253
20272
  };
20273
+ /**
20274
+ * 格式化Column嵌套配置,支持多表头设置
20275
+ * @param cols
20276
+ */
20277
+ var flatColumnTemplate = function flatColumnTemplate(cols) {
20278
+ columnGroup.length = 0;
20279
+ var maxDepth = 0;
20280
+ var targetColumns = [];
20281
+ var getMaxDepth = function getMaxDepth(root) {
20282
+ var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
20283
+ if (root.length && maxDepth < depth) {
20284
+ maxDepth = depth;
20285
+ }
20286
+ root.forEach(function (col) {
20287
+ var _col$children;
20288
+ return getMaxDepth((_col$children = col.children) !== null && _col$children !== void 0 ? _col$children : [], depth + 1);
20289
+ });
20290
+ };
20291
+ getMaxDepth(cols);
20292
+ var updateParentThColspan = function updateParentThColspan(col, count) {
20293
+ if (col) {
20294
+ var colMap = columnGroupMap.get(col);
20295
+ colMap.thColspan = colMap.thColspan + count;
20296
+ colMap.offsetLeft = colMap.offsetLeft + count;
20297
+ updateParentThColspan(colMap.parent, count);
20298
+ }
20299
+ };
20300
+ var foreachAllColumns = function foreachAllColumns(column, depth, parent, left) {
20301
+ var _col$children$length, _col$children2, _col$children$length2, _col$children3, _col$children$length3, _col$children4, _col$children$length4, _col$children5, _col$children6;
20302
+ var col = (0,external_vue_namespaceObject.toRaw)(column);
20303
+ var leftColumnCount = left;
20304
+ if (columnGroup[depth] === undefined) {
20305
+ columnGroup[depth] = [];
20306
+ }
20307
+ var isGroup = !!((_col$children$length = (_col$children2 = col.children) === null || _col$children2 === void 0 ? void 0 : _col$children2.length) !== null && _col$children$length !== void 0 ? _col$children$length : false);
20308
+ if (!((_col$children$length2 = (_col$children3 = col.children) === null || _col$children3 === void 0 ? void 0 : _col$children3.length) !== null && _col$children$length2 !== void 0 ? _col$children$length2 : false)) {
20309
+ targetColumns.push(col);
20310
+ }
20311
+ if (!columnGroupMap.has(col)) {
20312
+ columnGroupMap.set(col, {
20313
+ thColspan: 1,
20314
+ thRowspan: 1,
20315
+ isGroup: isGroup,
20316
+ offsetLeft: left
20317
+ });
20318
+ }
20319
+ var colMap = columnGroupMap.get(col);
20320
+ var childLength = (_col$children$length3 = (_col$children4 = col.children) === null || _col$children4 === void 0 ? void 0 : _col$children4.length) !== null && _col$children$length3 !== void 0 ? _col$children$length3 : 0;
20321
+ var thColspan = (_col$children$length4 = (_col$children5 = col.children) === null || _col$children5 === void 0 ? void 0 : _col$children5.length) !== null && _col$children$length4 !== void 0 ? _col$children$length4 : 1;
20322
+ var thRowspan = childLength > 0 ? 1 : maxDepth - depth;
20323
+ var offsetLeft = leftColumnCount + (childLength > 0 ? childLength - 1 : 0);
20324
+ Object.assign(colMap, {
20325
+ thColspan: thColspan > 0 ? thColspan : 1,
20326
+ parent: parent,
20327
+ thRowspan: thRowspan,
20328
+ offsetLeft: offsetLeft
20329
+ });
20330
+ columnGroup[depth].push(col);
20331
+ if (thColspan > 1) {
20332
+ updateParentThColspan(parent, thColspan - 1);
20333
+ }
20334
+ (_col$children6 = col.children) === null || _col$children6 === void 0 || _col$children6.forEach(function (c, index) {
20335
+ leftColumnCount = leftColumnCount + foreachAllColumns(c, depth + 1, col, leftColumnCount + index);
20336
+ });
20337
+ return childLength > 0 ? childLength - 1 : 0;
20338
+ };
20339
+ var leftColumnCount = 0;
20340
+ cols.forEach(function (col, index) {
20341
+ leftColumnCount = leftColumnCount + foreachAllColumns(col, 0, null, leftColumnCount + index);
20342
+ });
20343
+ return targetColumns;
20344
+ };
20345
+ var getGroupAttribute = function getGroupAttribute(group) {
20346
+ return columnGroupMap.get(group);
20347
+ };
20254
20348
  /**
20255
20349
  * Format columns
20256
20350
  * @param columns
@@ -20318,6 +20412,9 @@ var useColumns = function useColumns(props) {
20318
20412
  var getColumnCalcWidth = function getColumnCalcWidth(column) {
20319
20413
  return getColumnAttribute(column, COLUMN_ATTRIBUTE.CALC_WIDTH);
20320
20414
  };
20415
+ var getColumnWidth = function getColumnWidth(column) {
20416
+ return getColumnAttribute(column, COLUMN_ATTRIBUTE.WIDTH);
20417
+ };
20321
20418
  var setColumnRect = function setColumnRect(col, _ref2) {
20322
20419
  var left = _ref2.left,
20323
20420
  right = _ref2.right,
@@ -20332,11 +20429,12 @@ var useColumns = function useColumns(props) {
20332
20429
  };
20333
20430
  setColumnAttribute(col, COLUMN_ATTRIBUTE.COL_RECT, target);
20334
20431
  };
20335
- var debounceUpdateColumns = (0,lodash.debounce)(function (columns) {
20432
+ var debounceUpdateColumns = (0,lodash.debounce)(function (columns, onComplete) {
20336
20433
  tableColumnList.length = 0;
20337
- tableColumnList.push.apply(tableColumnList, _toConsumableArray(columns));
20434
+ tableColumnList.push.apply(tableColumnList, _toConsumableArray(flatColumnTemplate(columns)));
20338
20435
  formatColumns();
20339
20436
  setVisibleColumns();
20437
+ onComplete === null || onComplete === void 0 || onComplete();
20340
20438
  });
20341
20439
  var setColumnIsHidden = function setColumnIsHidden(column) {
20342
20440
  var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@@ -20362,7 +20460,7 @@ var useColumns = function useColumns(props) {
20362
20460
  Object.assign(tableColumnSchema.get(column)[COLUMN_ATTRIBUTE.COL_FILTER_OBJ], option);
20363
20461
  }
20364
20462
  };
20365
- var ORDER_LIST = [COLUMN_ATTRIBUTE.RESIZE_WIDTH, COLUMN_ATTRIBUTE.CALC_WIDTH, COLUMN_ATTRIBUTE.WIDTH];
20463
+ var ORDER_LIST = [COLUMN_ATTRIBUTE.WIDTH];
20366
20464
  /**
20367
20465
  * 获取当前列实际宽度
20368
20466
  * width props中设置的默认宽度
@@ -20402,6 +20500,16 @@ var useColumns = function useColumns(props) {
20402
20500
  setFilterColumns(column, defineProperty_defineProperty({}, attrName, attrValue));
20403
20501
  }
20404
20502
  };
20503
+ var setNextColumnWidth = function setNextColumnWidth(col, newWidth) {
20504
+ var index = visibleColumns.findIndex(function (item) {
20505
+ return item === col;
20506
+ });
20507
+ var diffWidth = getColumnOrderWidth(col) - newWidth;
20508
+ var nextColumn = visibleColumns[index + 1];
20509
+ if (nextColumn) {
20510
+ setColumnAttribute(nextColumn, COLUMN_ATTRIBUTE.WIDTH, getColumnOrderWidth(nextColumn) + diffWidth);
20511
+ }
20512
+ };
20405
20513
  /**
20406
20514
  * 设置表格列属性
20407
20515
  * @param col 当前列
@@ -20480,13 +20588,6 @@ var useColumns = function useColumns(props) {
20480
20588
  }
20481
20589
  setColumnAttribute(column, COLUMN_ATTRIBUTE.COL_SORT_ACTIVE, active);
20482
20590
  };
20483
- (0,external_vue_namespaceObject.watch)(function () {
20484
- return [props.columns];
20485
- }, function () {
20486
- debounceUpdateColumns(props.columns);
20487
- }, {
20488
- immediate: true
20489
- });
20490
20591
  /**
20491
20592
  * 清理列排序
20492
20593
  * @param reset 是否重置表格数据
@@ -20506,8 +20607,11 @@ var useColumns = function useColumns(props) {
20506
20607
  debounceUpdateColumns: debounceUpdateColumns,
20507
20608
  sortColumns: sortColumns,
20508
20609
  filterColumns: filterColumns,
20610
+ columnGroup: columnGroup,
20611
+ columnGroupMap: columnGroupMap,
20509
20612
  clearColumnSort: clearColumnSort,
20510
20613
  formatColumns: formatColumns,
20614
+ flatColumnTemplate: flatColumnTemplate,
20511
20615
  isHiddenColumn: isHiddenColumn,
20512
20616
  getColumnId: getColumnId,
20513
20617
  getColumnOrderWidth: getColumnOrderWidth,
@@ -20519,6 +20623,8 @@ var useColumns = function useColumns(props) {
20519
20623
  getColumnCustomClass: getColumnCustomClass,
20520
20624
  getColumnRefAttribute: getColumnRefAttribute,
20521
20625
  getColumnCalcWidth: getColumnCalcWidth,
20626
+ getColumnWidth: getColumnWidth,
20627
+ getGroupAttribute: getGroupAttribute,
20522
20628
  resolveEventListener: resolveEventListener,
20523
20629
  setColumnIsHidden: setColumnIsHidden,
20524
20630
  setColumnResizeWidth: setColumnResizeWidth,
@@ -20530,6 +20636,7 @@ var useColumns = function useColumns(props) {
20530
20636
  setFixedStyle: setFixedStyle,
20531
20637
  setColumnRect: setColumnRect,
20532
20638
  setVisibleColumns: setVisibleColumns,
20639
+ setNextColumnWidth: setNextColumnWidth,
20533
20640
  resolveColsCalcWidth: resolveColsCalcWidth
20534
20641
  };
20535
20642
  };
@@ -20738,7 +20845,7 @@ var useColumns = function useColumns(props) {
20738
20845
  var length = fixedRightColumns.value.length;
20739
20846
  for (var i = length - 1; i >= 0; i--) {
20740
20847
  var col = fixedRightColumns.value[i];
20741
- var width = columns.getColumnCalcWidth(col);
20848
+ var width = columns.getColumnWidth(col);
20742
20849
  columns.setColumnRect(col, {
20743
20850
  right: right,
20744
20851
  width: width
@@ -20750,7 +20857,7 @@ var useColumns = function useColumns(props) {
20750
20857
  }
20751
20858
  var left = 0;
20752
20859
  fixedLeftColumns.value.forEach(function (col) {
20753
- var width = columns.getColumnCalcWidth(col);
20860
+ var width = columns.getColumnWidth(col);
20754
20861
  columns.setColumnRect(col, {
20755
20862
  left: left,
20756
20863
  width: width
@@ -20981,6 +21088,7 @@ function use_layout_objectSpread(e) { for (var r = 1; r < arguments.length; r++)
20981
21088
  var layout = (0,external_vue_namespaceObject.reactive)({});
20982
21089
  var fixedColumns = (0,external_vue_namespaceObject.reactive)([]);
20983
21090
  var lineHeight = (0,external_vue_namespaceObject.ref)((_props$rowHeight = props.rowHeight) !== null && _props$rowHeight !== void 0 ? _props$rowHeight : LINE_HEIGHT);
21091
+ var headerRowCount = (0,external_vue_namespaceObject.ref)(1);
20984
21092
  var fixedBottomHeight = (0,external_vue_namespaceObject.computed)(function () {
20985
21093
  var _props$fixedBottom, _props$fixedBottom$he, _props$fixedBottom2, _props$fixedBottom$he2, _props$fixedBottom3;
20986
21094
  return ((_props$fixedBottom = props.fixedBottom) === null || _props$fixedBottom === void 0 ? void 0 : _props$fixedBottom.position) === 'relative' ? (_props$fixedBottom$he = (_props$fixedBottom2 = props.fixedBottom) === null || _props$fixedBottom2 === void 0 ? void 0 : _props$fixedBottom2.height) !== null && _props$fixedBottom$he !== void 0 ? _props$fixedBottom$he : LINE_HEIGHT : (_props$fixedBottom$he2 = (_props$fixedBottom3 = props.fixedBottom) === null || _props$fixedBottom3 === void 0 ? void 0 : _props$fixedBottom3.height) !== null && _props$fixedBottom$he2 !== void 0 ? _props$fixedBottom$he2 : 0;
@@ -21000,7 +21108,7 @@ function use_layout_objectSpread(e) { for (var r = 1; r < arguments.length; r++)
21000
21108
  };
21001
21109
  });
21002
21110
  var headClass = (0,external_vue_namespaceObject.computed)(function () {
21003
- return (0,shared_namespaceObject.classes)(defineProperty_defineProperty(defineProperty_defineProperty({}, resolveClassName('table-head'), true), 'has-settings', !!props.settings));
21111
+ return (0,shared_namespaceObject.classes)(defineProperty_defineProperty(defineProperty_defineProperty(defineProperty_defineProperty({}, resolveClassName('table-head'), true), 'has-settings', !!props.settings), 'has-group', headerRowCount.value > 1));
21004
21112
  });
21005
21113
  var setFixedColumnShawdow = function setFixedColumnShawdow() {
21006
21114
  var _refRoot$value, _refRoot$value2;
@@ -21022,6 +21130,9 @@ function use_layout_objectSpread(e) { for (var r = 1; r < arguments.length; r++)
21022
21130
  translateX.value = val;
21023
21131
  setRootStyleVars();
21024
21132
  };
21133
+ var setHeaderRowCount = function setHeaderRowCount(val) {
21134
+ headerRowCount.value = val;
21135
+ };
21025
21136
  var setTranslateY = function setTranslateY(val) {
21026
21137
  translateY.value = val;
21027
21138
  setRootStyleVars();
@@ -21040,16 +21151,17 @@ function use_layout_objectSpread(e) { for (var r = 1; r < arguments.length; r++)
21040
21151
  };
21041
21152
  var config = resolveHeadConfig(props);
21042
21153
  var headHeight = (0,external_vue_namespaceObject.computed)(function () {
21043
- return resolvePropVal(config, 'height', ['thead']);
21154
+ return resolvePropVal(config, 'height', ['thead']) * headerRowCount.value;
21044
21155
  });
21045
21156
  var headStyle = (0,external_vue_namespaceObject.computed)(function () {
21046
21157
  var _props$thead$color, _props$thead;
21047
21158
  return {
21048
21159
  '--row-height': "".concat(headHeight.value, "px"),
21049
- '--background-color': DEF_COLOR[(_props$thead$color = (_props$thead = props.thead) === null || _props$thead === void 0 ? void 0 : _props$thead.color) !== null && _props$thead$color !== void 0 ? _props$thead$color : IHeadColor.DEF1]
21160
+ '--background-color': DEF_COLOR[(_props$thead$color = (_props$thead = props.thead) === null || _props$thead === void 0 ? void 0 : _props$thead.color) !== null && _props$thead$color !== void 0 ? _props$thead$color : IHeadColor.DEF1],
21161
+ paddingRight: props.scrollbar ? null : "".concat(SCROLLY_WIDTH, "px")
21050
21162
  };
21051
21163
  });
21052
- var bodyClass = defineProperty_defineProperty({}, resolveClassName('table-body'), true);
21164
+ var bodyClass = defineProperty_defineProperty(defineProperty_defineProperty({}, resolveClassName('table-body'), true), 'is-bk-scrollbar', props.scrollbar);
21053
21165
  var footerClass = (0,external_vue_namespaceObject.computed)(function () {
21054
21166
  return (0,shared_namespaceObject.classes)(defineProperty_defineProperty(defineProperty_defineProperty({}, resolveClassName('table-footer'), true), 'is-hidden', footHeight.value === 0));
21055
21167
  });
@@ -21245,6 +21357,7 @@ function use_layout_objectSpread(e) { for (var r = 1; r < arguments.length; r++)
21245
21357
  setFixedColumns: setFixedColumns,
21246
21358
  setOffsetRight: setOffsetRight,
21247
21359
  setLineHeight: setLineHeight,
21360
+ setHeaderRowCount: setHeaderRowCount,
21248
21361
  initRootStyleVars: initRootStyleVars,
21249
21362
  refRoot: refRoot,
21250
21363
  refHead: refHead,
@@ -22539,6 +22652,7 @@ function use_head_isSlot(s) {
22539
22652
  index = _ref.index;
22540
22653
  var sortType = (0,external_vue_namespaceObject.ref)(columns.getColumnAttribute(column, COLUMN_ATTRIBUTE.COL_SORT_TYPE));
22541
22654
  var sortActive = (0,external_vue_namespaceObject.ref)(columns.getColumnAttribute(column, COLUMN_ATTRIBUTE.COL_SORT_ACTIVE));
22655
+ var rawColumn = (0,external_vue_namespaceObject.toRaw)(column);
22542
22656
  /**
22543
22657
  * 点击排序事件
22544
22658
  * @param sortFn 排序函数
@@ -22715,14 +22829,36 @@ function use_head_isSlot(s) {
22715
22829
  var headStyle = Object.assign(columns.getFixedStlye(column), {
22716
22830
  '--background-color': DEF_COLOR[(_props$thead$color = (_props$thead = props.thead) === null || _props$thead === void 0 ? void 0 : _props$thead.color) !== null && _props$thead$color !== void 0 ? _props$thead$color : IHeadColor.DEF1]
22717
22831
  });
22718
- var classList = [columns.getHeadColumnClass(column, index), columns.getColumnCustomClass(column), column.align || props.headerAlign || props.align];
22832
+ var group = columns.getGroupAttribute(rawColumn);
22833
+ var classList = (0,external_vue_namespaceObject.computed)(function () {
22834
+ return [columns.getHeadColumnClass(column, index), columns.getColumnCustomClass(column), column.align || props.headerAlign || props.align, {
22835
+ 'is-last-child': (group === null || group === void 0 ? void 0 : group.offsetLeft) + 1 === columns.visibleColumns.length
22836
+ }];
22837
+ });
22838
+ var groupClass = (0,external_vue_namespaceObject.computed)(function () {
22839
+ return classList.value.concat([{
22840
+ 'is-head-group': group === null || group === void 0 ? void 0 : group.isGroup,
22841
+ 'is-head-group-child': !!(group !== null && group !== void 0 && group.parent)
22842
+ }]);
22843
+ });
22844
+ var getGroupRender = function getGroupRender() {
22845
+ return resolvePropVal(column, 'label', [index, column]);
22846
+ };
22719
22847
  var getTH = function getTH() {
22848
+ if (group !== null && group !== void 0 && group.isGroup) {
22849
+ return (0,external_vue_namespaceObject.createVNode)("th", {
22850
+ "style": headStyle,
22851
+ "class": groupClass.value,
22852
+ "colspan": group === null || group === void 0 ? void 0 : group.thColspan,
22853
+ "rowspan": group === null || group === void 0 ? void 0 : group.thRowspan
22854
+ }, [getGroupRender()]);
22855
+ }
22720
22856
  return (0,external_vue_namespaceObject.createVNode)("th", (0,external_vue_namespaceObject.mergeProps)({
22721
22857
  "style": headStyle,
22722
- "class": classList,
22723
- "colspan": 1,
22858
+ "class": classList.value,
22859
+ "colspan": group === null || group === void 0 ? void 0 : group.thColspan,
22724
22860
  "data-id": columns.getColumnId(column),
22725
- "rowspan": 1,
22861
+ "rowspan": group === null || group === void 0 ? void 0 : group.thRowspan,
22726
22862
  "onClick": function onClick() {
22727
22863
  return handleColumnHeadClick();
22728
22864
  }
@@ -22913,21 +23049,20 @@ function use_render_isSlot(s) {
22913
23049
  };
22914
23050
  return (0,external_vue_namespaceObject.createVNode)(external_vue_namespaceObject.Fragment, null, [(0,external_vue_namespaceObject.createVNode)("thead", {
22915
23051
  "style": rowStyle
22916
- }, [(0,external_vue_namespaceObject.createVNode)(table_row, null, {
22917
- "default": function _default() {
22918
- return [(0,external_vue_namespaceObject.createVNode)("tr", null, [columns.visibleColumns.map(function (column, index) {
22919
- var _useHead = use_head({
22920
- props: props,
22921
- ctx: ctx,
22922
- columns: columns,
22923
- column: column,
22924
- index: index,
22925
- rows: rows
22926
- }),
22927
- getTH = _useHead.getTH;
22928
- return getTH();
22929
- })])];
22930
- }
23052
+ }, [columns.columnGroup.map(function (cols, rowIndex) {
23053
+ return (0,external_vue_namespaceObject.createVNode)("tr", null, [cols.map(function (column, index) {
23054
+ var _useHead = use_head({
23055
+ props: props,
23056
+ ctx: ctx,
23057
+ columns: columns,
23058
+ column: column,
23059
+ index: index,
23060
+ rows: rows,
23061
+ rowIndex: rowIndex
23062
+ }),
23063
+ getTH = _useHead.getTH;
23064
+ return getTH();
23065
+ })]);
22931
23066
  })])]);
22932
23067
  };
22933
23068
  var renderColumns = function renderColumns() {
@@ -23935,6 +24070,7 @@ var useSettings = function useSettings(props, ctx, columns, afterSetting) {
23935
24070
  setFootHeight = _useLayout.setFootHeight,
23936
24071
  setDragOffsetX = _useLayout.setDragOffsetX,
23937
24072
  setOffsetRight = _useLayout.setOffsetRight,
24073
+ setHeaderRowCount = _useLayout.setHeaderRowCount,
23938
24074
  refBody = _useLayout.refBody,
23939
24075
  refRoot = _useLayout.refRoot;
23940
24076
  /**
@@ -23969,7 +24105,9 @@ var useSettings = function useSettings(props, ctx, columns, afterSetting) {
23969
24105
  var initTableColumns = function initTableColumns() {
23970
24106
  var _instance$subTree$chi, _instance$subTree;
23971
24107
  var children = (_instance$subTree$chi = (_instance$subTree = instance.subTree) === null || _instance$subTree === void 0 ? void 0 : _instance$subTree.children) !== null && _instance$subTree$chi !== void 0 ? _instance$subTree$chi : [];
23972
- columns.debounceUpdateColumns(resolveColumns(children));
24108
+ columns.debounceUpdateColumns(resolveColumns(children), function () {
24109
+ setHeaderRowCount(columns.columnGroup.length);
24110
+ });
23973
24111
  };
23974
24112
  (0,external_vue_namespaceObject.provide)(PROVIDE_KEY_INIT_COL, initTableColumns);
23975
24113
  var _useFixedColumn = use_fixed_column(props, columns),
@@ -23980,8 +24118,8 @@ var useSettings = function useSettings(props, ctx, columns, afterSetting) {
23980
24118
  * 计算每一列的实际宽度
23981
24119
  */
23982
24120
  var computedColumnRect = function computedColumnRect() {
23983
- var _refRoot$value$offset, _refRoot$value;
23984
- var width = (_refRoot$value$offset = (_refRoot$value = refRoot.value) === null || _refRoot$value === void 0 ? void 0 : _refRoot$value.offsetWidth) !== null && _refRoot$value$offset !== void 0 ? _refRoot$value$offset : 0;
24121
+ var _ref, _refRoot$value;
24122
+ var width = (_ref = ((_refRoot$value = refRoot.value) === null || _refRoot$value === void 0 ? void 0 : _refRoot$value.offsetWidth) - (props.scrollbar ? 1 : SCROLLY_WIDTH)) !== null && _ref !== void 0 ? _ref : 0;
23985
24123
  columns.resolveColsCalcWidth(width);
23986
24124
  resolveFixedColumnStyle();
23987
24125
  };
@@ -24048,23 +24186,42 @@ var useSettings = function useSettings(props, ctx, columns, afterSetting) {
24048
24186
  setOffsetRight();
24049
24187
  });
24050
24188
  };
24189
+ var observerResizing = (0,external_vue_namespaceObject.ref)(false);
24190
+ var observerResizingTimer = null;
24051
24191
  use_observer_resize(refRoot, function () {
24052
- var _refBody$value2;
24053
- if ((props.height === '100%' || props.virtualEnabled) && (0,lodash.isElement)(refRoot.value)) {
24054
- if (isResizeBodyHeight.value) {
24055
- setTimeout(function () {
24056
- isResizeBodyHeight.value = false;
24057
- });
24058
- return;
24192
+ if (!observerResizing.value) {
24193
+ var _refBody$value2;
24194
+ observerResizing.value = true;
24195
+ if ((props.height === '100%' || props.virtualEnabled) && (0,lodash.isElement)(refRoot.value)) {
24196
+ if (isResizeBodyHeight.value) {
24197
+ setTimeout(function () {
24198
+ isResizeBodyHeight.value = false;
24199
+ });
24200
+ return;
24201
+ }
24202
+ var tableHeight = refRoot.value.offsetHeight;
24203
+ isResizeBodyHeight.value = true;
24204
+ setBodyHeight(tableHeight);
24205
+ setOffsetRight();
24059
24206
  }
24060
- var tableHeight = refRoot.value.offsetHeight;
24061
- isResizeBodyHeight.value = true;
24062
- setBodyHeight(tableHeight);
24207
+ computedColumnRect();
24063
24208
  setOffsetRight();
24209
+ (_refBody$value2 = refBody.value) === null || _refBody$value2 === void 0 || _refBody$value2.scrollTo(0, 0);
24210
+ return;
24064
24211
  }
24065
- computedColumnRect();
24066
- (_refBody$value2 = refBody.value) === null || _refBody$value2 === void 0 || _refBody$value2.scrollTo(0, 0);
24067
- setOffsetRight();
24212
+ observerResizingTimer && clearTimeout(observerResizingTimer);
24213
+ observerResizingTimer = setTimeout(function () {
24214
+ observerResizing.value = false;
24215
+ });
24216
+ });
24217
+ (0,external_vue_namespaceObject.watch)(function () {
24218
+ return [props.columns];
24219
+ }, function () {
24220
+ columns.debounceUpdateColumns(props.columns, function () {
24221
+ setHeaderRowCount(columns.columnGroup.length);
24222
+ });
24223
+ }, {
24224
+ immediate: true
24068
24225
  });
24069
24226
  (0,external_vue_namespaceObject.watch)(function () {
24070
24227
  return [dragOffsetX.value];
@@ -24101,12 +24258,9 @@ var useSettings = function useSettings(props, ctx, columns, afterSetting) {
24101
24258
  return [pagination.options.count, pagination.options.limit, pagination.options.current, props.data];
24102
24259
  }, function () {
24103
24260
  setTableData();
24104
- (0,external_vue_namespaceObject.nextTick)(function () {
24105
- var _refBody$value3;
24106
- (_refBody$value3 = refBody.value) === null || _refBody$value3 === void 0 || _refBody$value3.scrollTo(0, 1);
24107
- });
24108
24261
  }, {
24109
- immediate: true
24262
+ immediate: true,
24263
+ deep: true
24110
24264
  });
24111
24265
  ctx.expose({
24112
24266
  setRowExpand: rows.setRowExpand,