@visactor/vtable 1.8.3-alpha.0 → 1.8.3

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.
Files changed (115) hide show
  1. package/cjs/ListTable.js +7 -4
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/components/legend/discrete-legend/discrete-legend.js +7 -4
  4. package/cjs/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  5. package/cjs/core/BaseTable.js +1 -1
  6. package/cjs/core/BaseTable.js.map +1 -1
  7. package/cjs/core/TABLE_EVENT_TYPE.d.ts +2 -0
  8. package/cjs/core/TABLE_EVENT_TYPE.js +2 -0
  9. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  10. package/cjs/core/tableHelper.d.ts +2 -1
  11. package/cjs/core/tableHelper.js +9 -2
  12. package/cjs/core/tableHelper.js.map +1 -1
  13. package/cjs/data/DataSource.d.ts +1 -0
  14. package/cjs/data/DataSource.js +4 -0
  15. package/cjs/data/DataSource.js.map +1 -1
  16. package/cjs/event/event.js +2 -2
  17. package/cjs/event/event.js.map +1 -1
  18. package/cjs/event/listener/container-dom.js +1 -1
  19. package/cjs/event/listener/container-dom.js.map +1 -1
  20. package/cjs/event/listener/table-group.js +43 -19
  21. package/cjs/event/listener/table-group.js.map +1 -1
  22. package/cjs/event/scroll.js +1 -1
  23. package/cjs/event/scroll.js.map +1 -1
  24. package/cjs/index.d.ts +1 -1
  25. package/cjs/index.js +1 -1
  26. package/cjs/index.js.map +1 -1
  27. package/cjs/layout/pivot-header-layout.js +10 -3
  28. package/cjs/layout/pivot-header-layout.js.map +1 -1
  29. package/cjs/layout/simple-header-layout.js +5 -1
  30. package/cjs/layout/simple-header-layout.js.map +1 -1
  31. package/cjs/scenegraph/component/custom.js +6 -4
  32. package/cjs/scenegraph/component/custom.js.map +1 -1
  33. package/cjs/scenegraph/group-creater/cell-helper.js +32 -9
  34. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  35. package/cjs/scenegraph/group-creater/column-helper.js +37 -9
  36. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  37. package/cjs/scenegraph/layout/frozen-react.js +7 -7
  38. package/cjs/scenegraph/layout/frozen-react.js.map +1 -1
  39. package/cjs/scenegraph/layout/update-height.js +1 -2
  40. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  41. package/cjs/scenegraph/layout/update-width.js +3 -4
  42. package/cjs/scenegraph/layout/update-width.js.map +1 -1
  43. package/cjs/state/cell-move/index.js +3 -2
  44. package/cjs/state/cell-move/index.js.map +1 -1
  45. package/cjs/state/select/update-position.js +19 -4
  46. package/cjs/state/select/update-position.js.map +1 -1
  47. package/cjs/state/state.d.ts +2 -1
  48. package/cjs/state/state.js +11 -4
  49. package/cjs/state/state.js.map +1 -1
  50. package/cjs/ts-types/base-table.d.ts +2 -0
  51. package/cjs/ts-types/base-table.js.map +1 -1
  52. package/cjs/ts-types/events.d.ts +11 -0
  53. package/cjs/ts-types/events.js.map +1 -1
  54. package/cjs/ts-types/pivot-table/corner.d.ts +3 -0
  55. package/cjs/ts-types/pivot-table/corner.js.map +1 -1
  56. package/cjs/vrender.js.map +1 -1
  57. package/dist/vtable.js +231 -80
  58. package/dist/vtable.min.js +2 -2
  59. package/es/ListTable.js +8 -5
  60. package/es/ListTable.js.map +1 -1
  61. package/es/components/legend/discrete-legend/discrete-legend.js +5 -4
  62. package/es/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  63. package/es/core/BaseTable.js +1 -1
  64. package/es/core/BaseTable.js.map +1 -1
  65. package/es/core/TABLE_EVENT_TYPE.d.ts +2 -0
  66. package/es/core/TABLE_EVENT_TYPE.js +2 -0
  67. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  68. package/es/core/tableHelper.d.ts +2 -1
  69. package/es/core/tableHelper.js +7 -0
  70. package/es/core/tableHelper.js.map +1 -1
  71. package/es/data/DataSource.d.ts +1 -0
  72. package/es/data/DataSource.js +4 -0
  73. package/es/data/DataSource.js.map +1 -1
  74. package/es/event/event.js +2 -2
  75. package/es/event/event.js.map +1 -1
  76. package/es/event/listener/container-dom.js +1 -1
  77. package/es/event/listener/container-dom.js.map +1 -1
  78. package/es/event/listener/table-group.js +43 -19
  79. package/es/event/listener/table-group.js.map +1 -1
  80. package/es/event/scroll.js +1 -1
  81. package/es/event/scroll.js.map +1 -1
  82. package/es/index.d.ts +1 -1
  83. package/es/index.js +1 -1
  84. package/es/index.js.map +1 -1
  85. package/es/layout/pivot-header-layout.js +10 -3
  86. package/es/layout/pivot-header-layout.js.map +1 -1
  87. package/es/layout/simple-header-layout.js +5 -1
  88. package/es/layout/simple-header-layout.js.map +1 -1
  89. package/es/scenegraph/component/custom.js +6 -4
  90. package/es/scenegraph/component/custom.js.map +1 -1
  91. package/es/scenegraph/group-creater/cell-helper.js +28 -7
  92. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  93. package/es/scenegraph/group-creater/column-helper.js +35 -8
  94. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  95. package/es/scenegraph/layout/frozen-react.js +7 -7
  96. package/es/scenegraph/layout/frozen-react.js.map +1 -1
  97. package/es/scenegraph/layout/update-height.js +1 -2
  98. package/es/scenegraph/layout/update-height.js.map +1 -1
  99. package/es/scenegraph/layout/update-width.js +3 -4
  100. package/es/scenegraph/layout/update-width.js.map +1 -1
  101. package/es/state/cell-move/index.js +3 -2
  102. package/es/state/cell-move/index.js.map +1 -1
  103. package/es/state/select/update-position.js +19 -4
  104. package/es/state/select/update-position.js.map +1 -1
  105. package/es/state/state.d.ts +2 -1
  106. package/es/state/state.js +11 -4
  107. package/es/state/state.js.map +1 -1
  108. package/es/ts-types/base-table.d.ts +2 -0
  109. package/es/ts-types/base-table.js.map +1 -1
  110. package/es/ts-types/events.d.ts +11 -0
  111. package/es/ts-types/events.js.map +1 -1
  112. package/es/ts-types/pivot-table/corner.d.ts +3 -0
  113. package/es/ts-types/pivot-table/corner.js.map +1 -1
  114. package/es/vrender.js.map +1 -1
  115. package/package.json +5 -5
package/dist/vtable.js CHANGED
@@ -27878,6 +27878,7 @@
27878
27878
  MOUSEENTER_TABLE: 'mouseenter_table',
27879
27879
  MOUSELEAVE_TABLE: 'mouseleave_table',
27880
27880
  MOUSEDOWN_TABLE: 'mousedown_table',
27881
+ MOUSEMOVE_TABLE: 'mousemove_table',
27881
27882
  MOUSEMOVE_CELL: 'mousemove_cell',
27882
27883
  MOUSEENTER_CELL: 'mouseenter_cell',
27883
27884
  MOUSELEAVE_CELL: 'mouseleave_cell',
@@ -27886,6 +27887,7 @@
27886
27887
  RESIZE_COLUMN_END: 'resize_column_end',
27887
27888
  RESIZE_ROW: 'resize_row',
27888
27889
  RESIZE_ROW_END: 'resize_row_end',
27890
+ CHANGE_HEADER_POSITION_START: 'change_header_position_start',
27889
27891
  CHANGE_HEADER_POSITION: 'change_header_position',
27890
27892
  SORT_CLICK: 'sort_click',
27891
27893
  FREEZE_CLICK: 'freeze_click',
@@ -30908,8 +30910,12 @@
30908
30910
  this.registerAggregator(AggregationType.NONE, NoneAggregator);
30909
30911
  this.registerAggregator(AggregationType.CUSTOM, CustomAggregator);
30910
30912
  }
30913
+ updateColumns(columns) {
30914
+ this.columns = columns;
30915
+ }
30911
30916
  _generateFieldAggragations() {
30912
30917
  const columnObjs = this.columns;
30918
+ this.fieldAggregators = [];
30913
30919
  for (let i = 0; i < columnObjs?.length; i++) {
30914
30920
  delete columnObjs[i].vtable_aggregator;
30915
30921
  const field = columnObjs[i].field;
@@ -32873,6 +32879,15 @@
32873
32879
  }
32874
32880
  }
32875
32881
  }
32882
+ function checkHasAggregationOnColumnDefine(colDefs) {
32883
+ for (let i = 0; i < colDefs.length; i++) {
32884
+ const colDef = colDefs[i];
32885
+ if (colDef.aggregation) {
32886
+ return true;
32887
+ }
32888
+ }
32889
+ return false;
32890
+ }
32876
32891
 
32877
32892
  let Icon$1 = class Icon extends Image$2 {
32878
32893
  role;
@@ -33168,8 +33183,8 @@
33168
33183
  }
33169
33184
  if (typeof customLayout === 'function') {
33170
33185
  const arg = {
33171
- col,
33172
- row,
33186
+ col: range?.start.col ?? col,
33187
+ row: range?.start.row ?? row,
33173
33188
  dataValue: table.getCellOriginValue(col, row),
33174
33189
  value: table.getCellValue(col, row) || '',
33175
33190
  rect: {
@@ -33180,7 +33195,9 @@
33180
33195
  width,
33181
33196
  height
33182
33197
  },
33183
- table
33198
+ table,
33199
+ originCol: col,
33200
+ originRow: row
33184
33201
  };
33185
33202
  const customRenderObj = customLayout(arg);
33186
33203
  if (customRenderObj.rootContainer) {
@@ -35623,7 +35640,6 @@
35623
35640
  let value = table.getCellValue(col, row);
35624
35641
  let isMerge;
35625
35642
  let range;
35626
- let cellTheme;
35627
35643
  let customStyle;
35628
35644
  let customResult;
35629
35645
  let isCustomMerge = false;
@@ -35635,10 +35651,6 @@
35635
35651
  isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;
35636
35652
  value = customMergeText;
35637
35653
  customStyle = customMergeStyle;
35638
- if (customStyle) {
35639
- cellTheme = getStyleTheme(customStyle, table, range.start.col, range.start.row, getProp).theme;
35640
- cellTheme.group.cornerRadius = getCellCornerRadius(col, row, table);
35641
- }
35642
35654
  if (customLayout || customRender) {
35643
35655
  customResult = dealWithCustom(customLayout, customRender, customMergeRange.start.col, customMergeRange.start.row, table.getColsWidth(customMergeRange.start.col, customMergeRange.end.col), table.getRowsHeight(customMergeRange.start.row, customMergeRange.end.row), false, table.isAutoRowHeight(row), [0, 0, 0, 0], range, table);
35644
35656
  }
@@ -35677,11 +35689,9 @@
35677
35689
  value = vtableMergeName;
35678
35690
  }
35679
35691
  }
35680
- const cellStyle = table._getCellStyle(range ? range.start.col : col, range ? range.start.row : row);
35692
+ const cellStyle = customStyle || table._getCellStyle(range ? range.start.col : col, range ? range.start.row : row);
35681
35693
  const autoWrapText = cellStyle.autoWrapText ?? table.internalProps.autoWrapText;
35682
- if (!cellTheme) {
35683
- cellTheme = getStyleTheme(cellStyle, table, isMerge ? range.start.col : col, isMerge ? range.start.row : row, getProp).theme;
35684
- }
35694
+ const cellTheme = getStyleTheme(cellStyle, table, isMerge ? range.start.col : col, isMerge ? range.start.row : row, getProp).theme;
35685
35695
  cellTheme.group.cornerRadius = getCellCornerRadius(col, row, table);
35686
35696
  if (!addNew &&
35687
35697
  !isMerge &&
@@ -35783,7 +35793,25 @@
35783
35793
  }
35784
35794
  if (isPromise(value)) {
35785
35795
  oldCellGroup.removeAllChild();
35786
- dealPromiseData(value, table, updateCellContent.bind(null, type, value, define, table, col, row, cellWidth, cellHeight, oldCellGroup, padding, textAlign, textBaseline, mayHaveIcon, addNew, cellTheme, range, customResult));
35796
+ dealPromiseData(value, table, callUpdateCellContentForPromiseValue.bind(null, {
35797
+ type,
35798
+ value,
35799
+ define,
35800
+ table,
35801
+ col,
35802
+ row,
35803
+ cellWidth,
35804
+ cellHeight,
35805
+ oldCellGroup,
35806
+ padding,
35807
+ textAlign,
35808
+ textBaseline,
35809
+ mayHaveIcon,
35810
+ addNew,
35811
+ range,
35812
+ customResult,
35813
+ customStyle
35814
+ }));
35787
35815
  }
35788
35816
  else {
35789
35817
  newCellGroup = updateCellContent(type, value, define, table, col, row, cellWidth, cellHeight, oldCellGroup, padding, textAlign, textBaseline, mayHaveIcon, addNew, cellTheme, range, customResult);
@@ -35844,6 +35872,13 @@
35844
35872
  }
35845
35873
  return false;
35846
35874
  }
35875
+ function callUpdateCellContentForPromiseValue(updateCellArgs) {
35876
+ const { type, value, define, table, col, row, cellWidth, cellHeight, oldCellGroup, padding, textAlign, textBaseline, mayHaveIcon, addNew, range, customResult, customStyle } = updateCellArgs;
35877
+ const cellStyle = customStyle || table._getCellStyle(range ? range.start.col : col, range ? range.start.row : row);
35878
+ const cellTheme = getStyleTheme(cellStyle, table, range ? range.start.col : col, range ? range.start.row : row, getProp).theme;
35879
+ cellTheme.group.cornerRadius = getCellCornerRadius(col, row, table);
35880
+ updateCellContent(type, value, define, table, col, row, cellWidth, cellHeight, oldCellGroup, padding, textAlign, textBaseline, mayHaveIcon, addNew, cellTheme, range, customResult);
35881
+ }
35847
35882
  function dealWithMergeCellSize(range, cellWidth, cellHeight, padding, textAlign, textBaseline, table) {
35848
35883
  for (let col = range.start.col; col <= range.end.col; col++) {
35849
35884
  for (let row = range.start.row; row <= range.end.row; row++) {
@@ -36977,11 +37012,7 @@
36977
37012
  const customContainer = cell.getChildByName(CUSTOM_CONTAINER_NAME) ||
36978
37013
  cell.getChildByName(CUSTOM_MERGE_CONTAINER_NAME);
36979
37014
  if (customContainer) {
36980
- if (scene.table.reactCustomLayout) {
36981
- scene.table.reactCustomLayout.removeCustomCell(col, row);
36982
- }
36983
37015
  let customElementsGroup;
36984
- customContainer.removeAllChild();
36985
37016
  cell.removeChild(customContainer);
36986
37017
  const customMergeRange = getCustomCellMergeCustom(col, row, cell, scene.table);
36987
37018
  if (customMergeRange) {
@@ -37333,11 +37364,7 @@
37333
37364
  const customContainer = cell.getChildByName(CUSTOM_CONTAINER_NAME) ||
37334
37365
  cell.getChildByName(CUSTOM_MERGE_CONTAINER_NAME);
37335
37366
  if (customContainer) {
37336
- if (scene.table.reactCustomLayout) {
37337
- scene.table.reactCustomLayout.removeCustomCell(col, row);
37338
- }
37339
37367
  let customElementsGroup;
37340
- customContainer.removeAllChild();
37341
37368
  cell.removeChild(customContainer);
37342
37369
  const customMergeRange = getCustomCellMergeCustom(col, row, cell, scene.table);
37343
37370
  if (customMergeRange) {
@@ -37389,7 +37416,7 @@
37389
37416
  width = scene.table.getColsWidth(cellGroup.mergeStartCol, cellGroup.mergeEndCol);
37390
37417
  height = scene.table.getRowsHeight(cellGroup.mergeStartRow, cellGroup.mergeEndRow);
37391
37418
  }
37392
- const customResult = dealWithCustom(customLayout, customRender, cellGroup.mergeStartCol ?? col, cellGroup.mergeStartRow ?? row, width, height, false, scene.table.isAutoRowHeight(row), padding, isMergeCellGroup(cellGroup)
37419
+ const customResult = dealWithCustom(customLayout, customRender, col, row, width, height, false, scene.table.isAutoRowHeight(row), padding, isMergeCellGroup(cellGroup)
37393
37420
  ? {
37394
37421
  start: { col: cellGroup.mergeStartCol, row: cellGroup.mergeStartRow },
37395
37422
  end: { col: cellGroup.mergeEndCol, row: cellGroup.mergeEndRow }
@@ -41338,7 +41365,9 @@
41338
41365
  colForDefine = range.start.col;
41339
41366
  rowForDefine = range.start.row;
41340
41367
  }
41341
- if ((cellLocation === 'columnHeader' || cellLocation === 'cornerHeader') && row >= table.columnHeaderLevelCount) {
41368
+ if (!table.isPivotTable() &&
41369
+ (cellLocation === 'columnHeader' || cellLocation === 'cornerHeader') &&
41370
+ row >= table.columnHeaderLevelCount) {
41342
41371
  cellLocation = 'body';
41343
41372
  }
41344
41373
  const define = cellLocation !== 'body'
@@ -41373,23 +41402,6 @@
41373
41402
  value = vtableMergeName;
41374
41403
  }
41375
41404
  }
41376
- const cellStyle = customStyle || table._getCellStyle(range ? range.start.col : col, range ? range.start.row : row);
41377
- const cellTheme = getStyleTheme(cellStyle, table, range ? range.start.col : col, range ? range.start.row : row, getProp).theme;
41378
- cellTheme.group.cornerRadius = getCellCornerRadius(col, row, table);
41379
- cellTheme.group.width = colWidth;
41380
- cellTheme.group.height = Array.isArray(defaultRowHeight) ? defaultRowHeight[row] : defaultRowHeight;
41381
- if (cellTheme._vtable.padding) {
41382
- padding = cellTheme._vtable.padding;
41383
- }
41384
- if (cellTheme.text.textAlign) {
41385
- textAlign = cellTheme.text.textAlign;
41386
- }
41387
- if (cellTheme.text.textBaseline) {
41388
- textBaseline = cellTheme.text.textBaseline;
41389
- }
41390
- if (cellLocation !== 'body' && !cellTheme.group.fill) {
41391
- cellTheme.group.fill = '#fff';
41392
- }
41393
41405
  const type = isVtableMerge || isCustomMerge
41394
41406
  ? 'text'
41395
41407
  : (table.isHeader(col, row)
@@ -41397,13 +41409,48 @@
41397
41409
  : table.getBodyColumnType(col, row)) || 'text';
41398
41410
  if (isPromise(value)) {
41399
41411
  createEmptyCellGroup(col, row, 0, y, cellWidth, cellHeight, columnGroup);
41400
- dealPromiseData(value, table, createCell.bind(null, type, value, define, table, col, row, colWidth, cellWidth, cellHeight, columnGroup, y, padding, textAlign, textBaseline, mayHaveIcon, cellTheme, range, customResult));
41412
+ dealPromiseData(value, table, callCreateCellForPromiseValue.bind(null, {
41413
+ type,
41414
+ value,
41415
+ define,
41416
+ table,
41417
+ col,
41418
+ row,
41419
+ colWidth,
41420
+ cellWidth,
41421
+ cellHeight,
41422
+ columnGroup,
41423
+ y,
41424
+ customStyle,
41425
+ mayHaveIcon,
41426
+ cellLocation,
41427
+ range,
41428
+ customResult,
41429
+ defaultRowHeight
41430
+ }));
41401
41431
  columnGroup.updateColumnRowNumber(row);
41402
41432
  const height = table.getRowHeight(row);
41403
41433
  columnGroup.updateColumnHeight(height);
41404
41434
  y += height;
41405
41435
  }
41406
41436
  else {
41437
+ const cellStyle = customStyle || table._getCellStyle(range ? range.start.col : col, range ? range.start.row : row);
41438
+ const cellTheme = getStyleTheme(cellStyle, table, range ? range.start.col : col, range ? range.start.row : row, getProp).theme;
41439
+ cellTheme.group.cornerRadius = getCellCornerRadius(col, row, table);
41440
+ cellTheme.group.width = colWidth;
41441
+ cellTheme.group.height = Array.isArray(defaultRowHeight) ? defaultRowHeight[row] : defaultRowHeight;
41442
+ if (cellTheme._vtable.padding) {
41443
+ padding = cellTheme._vtable.padding;
41444
+ }
41445
+ if (cellTheme.text.textAlign) {
41446
+ textAlign = cellTheme.text.textAlign;
41447
+ }
41448
+ if (cellTheme.text.textBaseline) {
41449
+ textBaseline = cellTheme.text.textBaseline;
41450
+ }
41451
+ if (cellLocation !== 'body' && !cellTheme.group.fill) {
41452
+ cellTheme.group.fill = '#fff';
41453
+ }
41407
41454
  const cellGroup = createCell(type, value, define, table, col, row, colWidth, cellWidth, cellHeight, columnGroup, y, padding, textAlign, textBaseline, mayHaveIcon, cellTheme, range, customResult);
41408
41455
  columnGroup.updateColumnRowNumber(row);
41409
41456
  if (isMerge) {
@@ -41432,6 +41479,30 @@
41432
41479
  height: y
41433
41480
  };
41434
41481
  }
41482
+ function callCreateCellForPromiseValue(createCellArgs) {
41483
+ let padding;
41484
+ let textAlign;
41485
+ let textBaseline;
41486
+ const { type, value, define, table, col, row, colWidth, cellWidth, cellHeight, columnGroup, y, cellLocation, mayHaveIcon, customStyle, range, customResult, defaultRowHeight } = createCellArgs;
41487
+ const cellStyle = customStyle || table._getCellStyle(range ? range.start.col : col, range ? range.start.row : row);
41488
+ const cellTheme = getStyleTheme(cellStyle, table, range ? range.start.col : col, range ? range.start.row : row, getProp).theme;
41489
+ cellTheme.group.cornerRadius = getCellCornerRadius(col, row, table);
41490
+ cellTheme.group.width = colWidth;
41491
+ cellTheme.group.height = Array.isArray(defaultRowHeight) ? defaultRowHeight[row] : defaultRowHeight;
41492
+ if (cellTheme._vtable.padding) {
41493
+ padding = cellTheme._vtable.padding;
41494
+ }
41495
+ if (cellTheme.text.textAlign) {
41496
+ textAlign = cellTheme.text.textAlign;
41497
+ }
41498
+ if (cellTheme.text.textBaseline) {
41499
+ textBaseline = cellTheme.text.textBaseline;
41500
+ }
41501
+ if (cellLocation !== 'body' && !cellTheme.group.fill) {
41502
+ cellTheme.group.fill = '#fff';
41503
+ }
41504
+ createCell(type, value, define, table, col, row, colWidth, cellWidth, cellHeight, columnGroup, y, padding, textAlign, textBaseline, mayHaveIcon, cellTheme, range, customResult);
41505
+ }
41435
41506
  function dealMerge(range, mergeMap, table, forceUpdate) {
41436
41507
  let cellWidth = 0;
41437
41508
  let cellHeight = 0;
@@ -44237,15 +44308,17 @@
44237
44308
  return;
44238
44309
  }
44239
44310
  const allColsWidth = table.getAllColsWidth();
44311
+ const tableNoFrameWidth = Math.min(allColsWidth, table.tableNoFrameWidth);
44240
44312
  const frozenColsWidth = table.getFrozenColsWidth();
44241
44313
  const rightFrozenColsWidth = table.getRightFrozenColsWidth();
44242
44314
  const totalFrozenColsWidth = frozenColsWidth + rightFrozenColsWidth;
44243
- const bodyWidth = Math.min(allColsWidth - totalFrozenColsWidth, table.tableNoFrameWidth - totalFrozenColsWidth);
44315
+ const bodyWidth = Math.min(allColsWidth - totalFrozenColsWidth, tableNoFrameWidth - totalFrozenColsWidth);
44244
44316
  const allRowsHeight = table.getAllRowsHeight();
44317
+ const tableNoFrameHeight = Math.min(allRowsHeight, table.tableNoFrameHeight);
44245
44318
  const frozenRowsHeight = table.getFrozenRowsHeight();
44246
44319
  const bottomFrozenRowsHeight = table.getBottomFrozenRowsHeight();
44247
44320
  const totalFrozenRowsHeight = frozenRowsHeight + bottomFrozenRowsHeight;
44248
- const bodyHeight = Math.min(allRowsHeight - totalFrozenRowsHeight, table.tableNoFrameHeight - totalFrozenRowsHeight);
44321
+ const bodyHeight = Math.min(allRowsHeight - totalFrozenRowsHeight, tableNoFrameHeight - totalFrozenRowsHeight);
44249
44322
  if (table.frozenColCount > 0) {
44250
44323
  headerDomContainer.style.left = `${table.tableX + frozenColsWidth}px`;
44251
44324
  bodyDomContainer.style.left = `${table.tableX + frozenColsWidth}px`;
@@ -44273,21 +44346,21 @@
44273
44346
  rightFrozenBodyDomContainer.style.width = `${rightFrozenColsWidth}px`;
44274
44347
  rightFrozenBodyDomContainer.style.height = `${bodyHeight}px`;
44275
44348
  rightFrozenBodyDomContainer.style.top = `${table.tableY + frozenRowsHeight}px`;
44276
- rightFrozenBodyDomContainer.style.left = `${table.tableX + table.tableNoFrameWidth - rightFrozenColsWidth}px`;
44349
+ rightFrozenBodyDomContainer.style.left = `${table.tableX + tableNoFrameWidth - rightFrozenColsWidth}px`;
44277
44350
  rightFrozenHeaderDomContainer.style.width = `${rightFrozenColsWidth}px`;
44278
44351
  rightFrozenHeaderDomContainer.style.height = `${frozenRowsHeight}px`;
44279
44352
  rightFrozenHeaderDomContainer.style.top = `${table.tableY}px`;
44280
- rightFrozenHeaderDomContainer.style.left = `${table.tableX + table.tableNoFrameWidth - rightFrozenColsWidth}px`;
44353
+ rightFrozenHeaderDomContainer.style.left = `${table.tableX + tableNoFrameWidth - rightFrozenColsWidth}px`;
44281
44354
  bottomDomContainer.style.width = `${bodyWidth}px`;
44282
44355
  bottomDomContainer.style.height = `${bottomFrozenRowsHeight}px`;
44283
- bottomDomContainer.style.top = `${table.tableY + table.tableNoFrameHeight - bottomFrozenRowsHeight}px`;
44356
+ bottomDomContainer.style.top = `${table.tableY + tableNoFrameHeight - bottomFrozenRowsHeight}px`;
44284
44357
  frozenBottomDomContainer.style.width = `${frozenColsWidth}px`;
44285
44358
  frozenBottomDomContainer.style.height = `${bottomFrozenRowsHeight}px`;
44286
- frozenBottomDomContainer.style.top = `${table.tableY + table.tableNoFrameHeight - bottomFrozenRowsHeight}px`;
44359
+ frozenBottomDomContainer.style.top = `${table.tableY + tableNoFrameHeight - bottomFrozenRowsHeight}px`;
44287
44360
  rightFrozenBottomDomContainer.style.width = `${rightFrozenColsWidth}px`;
44288
44361
  rightFrozenBottomDomContainer.style.height = `${bottomFrozenRowsHeight}px`;
44289
- rightFrozenBottomDomContainer.style.top = `${table.tableY + table.tableNoFrameHeight - bottomFrozenRowsHeight}px`;
44290
- rightFrozenBottomDomContainer.style.left = `${table.tableX + table.tableNoFrameWidth - rightFrozenColsWidth}px`;
44362
+ rightFrozenBottomDomContainer.style.top = `${table.tableY + tableNoFrameHeight - bottomFrozenRowsHeight}px`;
44363
+ rightFrozenBottomDomContainer.style.left = `${table.tableX + tableNoFrameWidth - rightFrozenColsWidth}px`;
44291
44364
  }
44292
44365
  function updateReactComponentContainer(scene) {
44293
44366
  if (!scene.table.reactCustomLayout) {
@@ -47592,6 +47665,19 @@
47592
47665
  col,
47593
47666
  row
47594
47667
  };
47668
+ const cellRange = skipBodyMerge ? { start: { col, row }, end: { col, row } } : table.getCellRange(col, row);
47669
+ if (currentRange.start.col < cellRange.end.col) {
47670
+ currentRange.end.col = cellRange.end.col;
47671
+ }
47672
+ else if (currentRange.start.col > cellRange.start.col) {
47673
+ currentRange.end.col = cellRange.start.col;
47674
+ }
47675
+ if (currentRange.start.row < cellRange.end.row) {
47676
+ currentRange.end.row = cellRange.end.row;
47677
+ }
47678
+ else if (currentRange.start.row > cellRange.start.row) {
47679
+ currentRange.end.row = cellRange.start.row;
47680
+ }
47595
47681
  if (skipBodyMerge) {
47596
47682
  currentRange.skipBodyMerge = true;
47597
47683
  }
@@ -47888,7 +47974,8 @@
47888
47974
  state.columnMove.colSource >= 0 &&
47889
47975
  state.columnMove.rowSource >= 0 &&
47890
47976
  state.columnMove.colTarget >= 0 &&
47891
- state.columnMove.rowTarget >= 0) {
47977
+ state.columnMove.rowTarget >= 0 &&
47978
+ state.table.options.customConfig?.notUpdateInColumnRowMove !== true) {
47892
47979
  const oldSourceMergeInfo = state.table.getCellRange(state.columnMove.colSource, state.columnMove.rowSource);
47893
47980
  const oldTargetMergeInfo = state.table.getCellRange(state.columnMove.colTarget, state.columnMove.rowTarget);
47894
47981
  const moveContext = state.table._moveHeaderPosition({ col: state.columnMove.colSource, row: state.columnMove.rowSource }, { col: state.columnMove.colTarget, row: state.columnMove.rowTarget });
@@ -47993,6 +48080,9 @@
47993
48080
  state.table.scenegraph.component.setRightFrozenColumnShadow(state.table.colCount - state.table.rightFrozenColCount);
47994
48081
  }
47995
48082
  state.table.scenegraph.updateNextFrame();
48083
+ if (state.table.options.customConfig?.notUpdateInColumnRowMove === true) {
48084
+ return true;
48085
+ }
47996
48086
  return moveColResult;
47997
48087
  }
47998
48088
  function clearWidthsAndHeightsCache(colMin, colMax, rowMin, rowMax, table) {
@@ -48697,6 +48787,7 @@
48697
48787
  class StateManager {
48698
48788
  table;
48699
48789
  interactionState;
48790
+ interactionStateBeforeScroll;
48700
48791
  select;
48701
48792
  fillHandle;
48702
48793
  hover;
@@ -48720,8 +48811,8 @@
48720
48811
  _checkboxCellTypeFields = [];
48721
48812
  _headerCheckFuncs = {};
48722
48813
  radioState = {};
48723
- resetInteractionState = debounce(() => {
48724
- this.updateInteractionState(InteractionState.default);
48814
+ resetInteractionState = debounce((state) => {
48815
+ this.updateInteractionState(state ?? InteractionState.default);
48725
48816
  }, 100);
48726
48817
  constructor(table) {
48727
48818
  this.table = table;
@@ -48990,6 +49081,9 @@
48990
49081
  if (this.interactionState === mode) {
48991
49082
  return;
48992
49083
  }
49084
+ if (mode === InteractionState.scrolling) {
49085
+ this.interactionStateBeforeScroll = this.interactionState;
49086
+ }
48993
49087
  const oldState = this.interactionState;
48994
49088
  this.interactionState = mode;
48995
49089
  if (oldState === InteractionState.scrolling && mode === InteractionState.default) ;
@@ -49196,8 +49290,9 @@
49196
49290
  this.fillHandle.beforeFillMinCol = undefined;
49197
49291
  this.fillHandle.beforeFillMinRow = undefined;
49198
49292
  }
49199
- startMoveCol(col, row, x, y) {
49293
+ startMoveCol(col, row, x, y, event) {
49200
49294
  startMoveCol(col, row, x, y, this);
49295
+ this.table.fireListeners(TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION_START, { col, row, x, y, event });
49201
49296
  }
49202
49297
  updateMoveCol(col, row, x, y) {
49203
49298
  updateMoveCol(col, row, x, y, this);
@@ -49938,7 +50033,7 @@
49938
50033
  state.setScrollTop(state.scroll.verticalBarPos + optimizedDeltaY, event);
49939
50034
  state.showVerticalScrollBar(true);
49940
50035
  }
49941
- isWheelEvent && state.resetInteractionState();
50036
+ isWheelEvent && state.resetInteractionState(state.interactionStateBeforeScroll);
49942
50037
  if (event.nativeEvent?.cancelable &&
49943
50038
  (state.table.internalProps.overscrollBehavior === 'none' ||
49944
50039
  (Math.abs(deltaY) >= Math.abs(deltaX) && deltaY !== 0 && isVerticalScrollable(deltaY, state)) ||
@@ -50056,6 +50151,17 @@
50056
50151
  eventManager.touchSetTimeout = undefined;
50057
50152
  }
50058
50153
  const eventArgsSet = getCellEventArgsSet(e);
50154
+ if (eventArgsSet.eventArgs && table.hasListeners(TABLE_EVENT_TYPE.MOUSEMOVE_TABLE)) {
50155
+ table.fireListeners(TABLE_EVENT_TYPE.MOUSEMOVE_TABLE, {
50156
+ col: eventArgsSet.eventArgs.col,
50157
+ row: eventArgsSet.eventArgs.row,
50158
+ x: eventArgsSet.abstractPos.x,
50159
+ y: eventArgsSet.abstractPos.y,
50160
+ event: e.nativeEvent,
50161
+ target: eventArgsSet?.eventArgs?.target,
50162
+ mergeCellInfo: eventArgsSet.eventArgs?.mergeInfo
50163
+ });
50164
+ }
50059
50165
  if (stateManager.interactionState === InteractionState.grabing &&
50060
50166
  !table.editorManager?.editingEditor) {
50061
50167
  if (Math.abs(lastX - e.x) + Math.abs(lastY - e.y) >= 1) {
@@ -50264,7 +50370,8 @@
50264
50370
  source: {
50265
50371
  col: table.stateManager.columnMove.colSource,
50266
50372
  row: table.stateManager.columnMove.rowSource
50267
- }
50373
+ },
50374
+ event: e.nativeEvent
50268
50375
  });
50269
50376
  }
50270
50377
  }
@@ -50299,6 +50406,17 @@
50299
50406
  }
50300
50407
  stateManager.updateInteractionState(InteractionState.default);
50301
50408
  eventManager.dealTableHover();
50409
+ });
50410
+ }
50411
+ };
50412
+ const globalPointerdownCallback = (e) => {
50413
+ const target = e.target;
50414
+ if (!table.getElement().contains(target)) {
50415
+ const isCompleteEdit = table.editorManager?.completeEdit(e);
50416
+ getPromiseValue(isCompleteEdit, isCompleteEdit => {
50417
+ if (isCompleteEdit === false) {
50418
+ return;
50419
+ }
50302
50420
  if (table.options.select?.outsideClickDeselect) {
50303
50421
  const isHasSelected = !!stateManager.select.ranges?.length;
50304
50422
  eventManager.dealTableSelect();
@@ -50312,7 +50430,13 @@
50312
50430
  env: 'document',
50313
50431
  callback: globalPointerupCallback
50314
50432
  });
50433
+ eventManager.globalEventListeners.push({
50434
+ name: 'pointerdown',
50435
+ env: 'document',
50436
+ callback: globalPointerdownCallback
50437
+ });
50315
50438
  vglobal.addEventListener('pointerup', globalPointerupCallback);
50439
+ vglobal.addEventListener('pointerdown', globalPointerdownCallback);
50316
50440
  table.scenegraph.tableGroup.addEventListener('pointerdown', (e) => {
50317
50441
  if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE)) {
50318
50442
  table.fireListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE, {
@@ -50392,7 +50516,7 @@
50392
50516
  }
50393
50517
  }
50394
50518
  else if (hitIcon.attribute.funcType === IconFuncTypeEnum.dragReorder) {
50395
- stateManager.startMoveCol(eventArgsSet.eventArgs.col, eventArgsSet.eventArgs.row, eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y);
50519
+ stateManager.startMoveCol(eventArgsSet.eventArgs.col, eventArgsSet.eventArgs.row, eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y, eventArgsSet.eventArgs?.event?.nativeEvent);
50396
50520
  stateManager.updateInteractionState(InteractionState.grabing);
50397
50521
  }
50398
50522
  if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_CELL)) {
@@ -50432,7 +50556,8 @@
50432
50556
  source: {
50433
50557
  col: table.stateManager.columnMove.colSource,
50434
50558
  row: table.stateManager.columnMove.rowSource
50435
- }
50559
+ },
50560
+ event: e.nativeEvent
50436
50561
  });
50437
50562
  }
50438
50563
  }
@@ -51535,7 +51660,7 @@
51535
51660
  let left = false;
51536
51661
  if (y > drawRange.bottom - bottomFrozenRowHeight &&
51537
51662
  canScrollY &&
51538
- table.scrollTop + table.tableNoFrameWidth < table.getAllRowsHeight()) {
51663
+ table.scrollTop + table.tableNoFrameHeight < table.getAllRowsHeight()) {
51539
51664
  bottom = true;
51540
51665
  table.eventManager.scrollYSpeed = -(y - drawRange.bottom + bottomFrozenRowHeight) / 50;
51541
51666
  }
@@ -52166,7 +52291,7 @@
52166
52291
  this.table.options.select?.disableHeaderSelect ||
52167
52292
  this.table.options.select?.disableSelect) &&
52168
52293
  this.table._canDragHeaderPosition(eventArgs.col, eventArgs.row)) {
52169
- this.table.stateManager.startMoveCol(eventArgs.col, eventArgs.row, eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y);
52294
+ this.table.stateManager.startMoveCol(eventArgs.col, eventArgs.row, eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y, eventArgs?.event?.nativeEvent);
52170
52295
  return true;
52171
52296
  }
52172
52297
  return false;
@@ -56327,7 +56452,7 @@
56327
56452
  return TABLE_EVENT_TYPE;
56328
56453
  }
56329
56454
  options;
56330
- version = "1.8.3-alpha.0";
56455
+ version = "1.8.3";
56331
56456
  pagination;
56332
56457
  id = `VTable${Date.now()}`;
56333
56458
  headerStyleCache;
@@ -60311,13 +60436,18 @@
60311
60436
  return false;
60312
60437
  }
60313
60438
  isSeriesNumber(col, row) {
60314
- if (this.leftRowSeriesNumberColumnCount > 0 && col >= 0 && row >= 0 && col < this.leftRowSeriesNumberColumnCount) {
60315
- return true;
60316
- }
60317
- if (this.rightRowSeriesNumberColumnCount > 0 &&
60318
- row >= 0 &&
60319
- col >= this.colCount - this.rightRowSeriesNumberColumnCount) {
60320
- return true;
60439
+ if (isValid$1(col) && isValid$1(row)) {
60440
+ if (this.leftRowSeriesNumberColumnCount > 0 &&
60441
+ col >= 0 &&
60442
+ row >= 0 &&
60443
+ col < this.leftRowSeriesNumberColumnCount) {
60444
+ return true;
60445
+ }
60446
+ if (this.rightRowSeriesNumberColumnCount > 0 &&
60447
+ row >= 0 &&
60448
+ col >= this.colCount - this.rightRowSeriesNumberColumnCount) {
60449
+ return true;
60450
+ }
60321
60451
  }
60322
60452
  return false;
60323
60453
  }
@@ -62214,6 +62344,10 @@
62214
62344
  this.internalProps.headerHelper.setTableColumnsEditor();
62215
62345
  this._hasAutoImageColumn = undefined;
62216
62346
  this.refreshHeader();
62347
+ this.dataSource.updateColumns?.(this.internalProps.columns);
62348
+ if (this.records && checkHasAggregationOnColumnDefine(columns)) {
62349
+ this.dataSource.processRecords(this.dataSource.dataSourceObj?.records ?? this.dataSource.dataSourceObj);
62350
+ }
62217
62351
  this.internalProps.useOneRowHeightFillAll = false;
62218
62352
  this.scenegraph.clearCells();
62219
62353
  this.headerStyleCache = new Map();
@@ -65209,12 +65343,14 @@
65209
65343
  }
65210
65344
  getLegendAttributes(rect) {
65211
65345
  const layout = this.orient === 'bottom' || this.orient === 'top' ? 'horizontal' : 'vertical';
65346
+ const legendAttrs = getLegendAttributes(this.option, rect);
65347
+ const padding = getQuadProps(legendAttrs.padding ?? this.option.padding ?? 10);
65212
65348
  const attrs = {
65213
65349
  layout,
65214
65350
  items: this.getLegendItems(),
65215
- maxWidth: rect.width,
65216
- maxHeight: rect.height,
65217
- ...getLegendAttributes(this.option, rect)
65351
+ maxWidth: rect.width - padding[1] - padding[3],
65352
+ maxHeight: rect.height - padding[0] - padding[2],
65353
+ ...legendAttrs
65218
65354
  };
65219
65355
  return attrs;
65220
65356
  }
@@ -69309,6 +69445,8 @@
69309
69445
  dimensionKey: dimensionKey,
69310
69446
  id,
69311
69447
  value: dimensionKey,
69448
+ headerCustomRender: this.cornerSetting.customRender,
69449
+ headerCustomLayout: this.cornerSetting.customLayout,
69312
69450
  headerEditor: this.cornerSetting.headerEditor,
69313
69451
  disableHeaderHover: !!this.cornerSetting.disableHeaderHover,
69314
69452
  disableHeaderSelect: !!this.cornerSetting.disableHeaderSelect
@@ -69354,7 +69492,8 @@
69354
69492
  define: {
69355
69493
  dimensionKey: '维度名称',
69356
69494
  id,
69357
- value: '',
69495
+ headerCustomRender: this.cornerSetting.customRender,
69496
+ headerCustomLayout: this.cornerSetting.customLayout,
69358
69497
  disableHeaderHover: !!this.cornerSetting.disableHeaderHover,
69359
69498
  disableHeaderSelect: !!this.cornerSetting.disableHeaderSelect
69360
69499
  }
@@ -69440,7 +69579,14 @@
69440
69579
  });
69441
69580
  }
69442
69581
  else {
69443
- const rowDimensionKeys = this.rowDimensionTree.dimensionKeysIncludeVirtual.valueArr();
69582
+ const rowDimensionKeys = this.rowDimensionTree.totalLevel > 0
69583
+ ? this.rowDimensionTree.dimensionKeysIncludeVirtual.valueArr()
69584
+ : this.rowsDefine.map(dimension => {
69585
+ if (typeof dimension === 'string') {
69586
+ return dimension;
69587
+ }
69588
+ return dimension.dimensionKey;
69589
+ });
69444
69590
  rowDimensionKeys.forEach((objKey, index) => {
69445
69591
  const dimension = this.rowsDefine?.find(dimension => typeof dimension === 'string' ? false : dimension.dimensionKey === objKey);
69446
69592
  dimension &&
@@ -71403,13 +71549,18 @@
71403
71549
  return false;
71404
71550
  }
71405
71551
  isSeriesNumber(col, row) {
71406
- if (this.leftRowSeriesNumberColumnCount > 0 && col >= 0 && row >= 0 && col < this.leftRowSeriesNumberColumnCount) {
71407
- return true;
71408
- }
71409
- if (this.rightRowSeriesNumberColumnCount > 0 &&
71410
- row >= 0 &&
71411
- col >= this.colCount - this.rightRowSeriesNumberColumnCount) {
71412
- return true;
71552
+ if (isValid$1(col) && isValid$1(row)) {
71553
+ if (this.leftRowSeriesNumberColumnCount > 0 &&
71554
+ col >= 0 &&
71555
+ row >= 0 &&
71556
+ col < this.leftRowSeriesNumberColumnCount) {
71557
+ return true;
71558
+ }
71559
+ if (this.rightRowSeriesNumberColumnCount > 0 &&
71560
+ row >= 0 &&
71561
+ col >= this.colCount - this.rightRowSeriesNumberColumnCount) {
71562
+ return true;
71563
+ }
71413
71564
  }
71414
71565
  return false;
71415
71566
  }
@@ -76472,7 +76623,7 @@
76472
76623
  }
76473
76624
 
76474
76625
  registerForVrender();
76475
- const version = "1.8.3-alpha.0";
76626
+ const version = "1.8.3";
76476
76627
  function getIcons() {
76477
76628
  return get$2();
76478
76629
  }