@visactor/vtable 1.5.0 → 1.5.2-alpha.0

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 (43) hide show
  1. package/cjs/core/BaseTable.js +1 -1
  2. package/cjs/core/BaseTable.js.map +1 -1
  3. package/cjs/core/utils/get-cell-position.js +21 -14
  4. package/cjs/core/utils/get-cell-position.js.map +1 -1
  5. package/cjs/edit/edit-manager.d.ts +2 -1
  6. package/cjs/edit/edit-manager.js +25 -14
  7. package/cjs/edit/edit-manager.js.map +1 -1
  8. package/cjs/event/listener/table-group.js +53 -41
  9. package/cjs/event/listener/table-group.js.map +1 -1
  10. package/cjs/index.d.ts +1 -1
  11. package/cjs/index.js +1 -1
  12. package/cjs/index.js.map +1 -1
  13. package/cjs/scenegraph/component/table-component.js +4 -4
  14. package/cjs/scenegraph/component/table-component.js.map +1 -1
  15. package/cjs/state/state.js +13 -11
  16. package/cjs/state/state.js.map +1 -1
  17. package/cjs/tools/helper.d.ts +1 -0
  18. package/cjs/tools/helper.js +10 -3
  19. package/cjs/tools/helper.js.map +1 -1
  20. package/cjs/vrender.js.map +1 -1
  21. package/dist/vtable.js +180 -127
  22. package/dist/vtable.min.js +2 -2
  23. package/es/core/BaseTable.js +1 -1
  24. package/es/core/BaseTable.js.map +1 -1
  25. package/es/core/utils/get-cell-position.js +21 -14
  26. package/es/core/utils/get-cell-position.js.map +1 -1
  27. package/es/edit/edit-manager.d.ts +2 -1
  28. package/es/edit/edit-manager.js +26 -13
  29. package/es/edit/edit-manager.js.map +1 -1
  30. package/es/event/listener/table-group.js +54 -42
  31. package/es/event/listener/table-group.js.map +1 -1
  32. package/es/index.d.ts +1 -1
  33. package/es/index.js +1 -1
  34. package/es/index.js.map +1 -1
  35. package/es/scenegraph/component/table-component.js +4 -4
  36. package/es/scenegraph/component/table-component.js.map +1 -1
  37. package/es/state/state.js +13 -11
  38. package/es/state/state.js.map +1 -1
  39. package/es/tools/helper.d.ts +1 -0
  40. package/es/tools/helper.js +6 -0
  41. package/es/tools/helper.js.map +1 -1
  42. package/es/vrender.js.map +1 -1
  43. package/package.json +5 -5
package/dist/vtable.js CHANGED
@@ -44370,6 +44370,17 @@
44370
44370
  function isPromise(data) {
44371
44371
  return Boolean(data && typeof data.then === 'function');
44372
44372
  }
44373
+ function getPromiseValue(value, callback) {
44374
+ if (isPromise(value)) {
44375
+ value.then(result => {
44376
+ callback(result);
44377
+ }).catch((err) => {
44378
+ });
44379
+ }
44380
+ else {
44381
+ callback(value);
44382
+ }
44383
+ }
44373
44384
  function isTouchEvent$2(e) {
44374
44385
  return !!e.changedTouches;
44375
44386
  }
@@ -53895,7 +53906,8 @@
53895
53906
  const frozenColsWidth = this.table.getFrozenColsWidth();
53896
53907
  const bottomFrozenRowsHeight = this.table.getBottomFrozenRowsHeight();
53897
53908
  const rightFrozenColsWidth = this.table.getRightFrozenColsWidth();
53898
- if (totalWidth > tableWidth) {
53909
+ const sizeTolerance = this.table.options.customConfig?._disableColumnAndRowSizeRound ? 1 : 0;
53910
+ if (totalWidth > tableWidth + sizeTolerance) {
53899
53911
  const y = Math.min(tableHeight, totalHeight);
53900
53912
  const rangeEnd = Math.max(0.05, (tableWidth - frozenColsWidth) / (totalWidth - frozenColsWidth));
53901
53913
  const hoverOn = this.table.theme.scrollStyle.hoverOn;
@@ -53933,7 +53945,7 @@
53933
53945
  visible: false
53934
53946
  });
53935
53947
  }
53936
- if (totalHeight > tableHeight) {
53948
+ if (totalHeight > tableHeight + sizeTolerance) {
53937
53949
  const x = Math.min(tableWidth, totalWidth);
53938
53950
  const rangeEnd = Math.max(0.05, (tableHeight - frozenRowsHeight) / (totalHeight - frozenRowsHeight));
53939
53951
  let attrX = 0;
@@ -64070,7 +64082,8 @@
64070
64082
  }
64071
64083
  setScrollTop(top) {
64072
64084
  const totalHeight = this.table.getAllRowsHeight();
64073
- top = Math.max(0, Math.min(top, totalHeight - this.table.scenegraph.height));
64085
+ const sizeTolerance = this.table.options.customConfig?._disableColumnAndRowSizeRound ? 1 : 0;
64086
+ top = Math.max(0, Math.min(top, totalHeight - this.table.scenegraph.height - sizeTolerance));
64074
64087
  top = Math.ceil(top);
64075
64088
  if (top !== this.scroll.verticalBarPos || this.table.isPivotChart()) {
64076
64089
  this.updateHoverPos(-1, -1);
@@ -64101,7 +64114,8 @@
64101
64114
  this.table.scrollLeft;
64102
64115
  const totalWidth = this.table.getAllColsWidth();
64103
64116
  this.table.getFrozenColsWidth();
64104
- left = Math.max(0, Math.min(left, totalWidth - this.table.scenegraph.width));
64117
+ const sizeTolerance = this.table.options.customConfig?._disableColumnAndRowSizeRound ? 1 : 0;
64118
+ left = Math.max(0, Math.min(left, totalWidth - this.table.scenegraph.width - sizeTolerance));
64105
64119
  left = Math.ceil(left);
64106
64120
  if (left !== this.scroll.horizontalBarPos) {
64107
64121
  this.updateHoverPos(-1, -1);
@@ -64823,16 +64837,18 @@
64823
64837
  }
64824
64838
  }
64825
64839
  const isCompleteEdit = table.editorManager?.completeEdit(e.nativeEvent);
64826
- if (isCompleteEdit === false) {
64827
- return;
64828
- }
64829
- stateManager.updateInteractionState(InteractionState.default);
64830
- eventManager.dealTableHover();
64831
- if (table.options.select?.outsideClickDeselect) {
64832
- const isHasSelected = !!stateManager.select.ranges?.length;
64833
- eventManager.dealTableSelect();
64834
- stateManager.endSelectCells(true, isHasSelected);
64835
- }
64840
+ getPromiseValue(isCompleteEdit, (isCompleteEdit) => {
64841
+ if (isCompleteEdit === false) {
64842
+ return;
64843
+ }
64844
+ stateManager.updateInteractionState(InteractionState.default);
64845
+ eventManager.dealTableHover();
64846
+ if (table.options.select?.outsideClickDeselect) {
64847
+ const isHasSelected = !!stateManager.select.ranges?.length;
64848
+ eventManager.dealTableSelect();
64849
+ stateManager.endSelectCells(true, isHasSelected);
64850
+ }
64851
+ });
64836
64852
  });
64837
64853
  table.scenegraph.tableGroup.addEventListener('pointerdown', (e) => {
64838
64854
  if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE)) {
@@ -64858,72 +64874,74 @@
64858
64874
  stateManager.hideMenu();
64859
64875
  }
64860
64876
  const isCompleteEdit = table.editorManager?.completeEdit(e.nativeEvent);
64861
- if (isCompleteEdit === false) {
64862
- return;
64863
- }
64864
- const hitIcon = eventArgsSet?.eventArgs?.target?.role?.startsWith('icon')
64865
- ? eventArgsSet.eventArgs.target
64866
- : e.target.role?.startsWith('icon')
64867
- ? e.target
64868
- : undefined;
64869
- eventManager.downIcon = hitIcon;
64870
- if (!hitIcon || hitIcon.attribute.interactive === false) {
64871
- if (e.pointerType === 'touch') {
64872
- eventManager.touchEnd = false;
64873
- eventManager.touchSetTimeout = setTimeout(() => {
64874
- eventManager.isTouchdown = false;
64875
- eventManager.touchMove = true;
64876
- if (!eventManager.touchEnd &&
64877
+ getPromiseValue(isCompleteEdit, (isCompleteEdit) => {
64878
+ if (isCompleteEdit === false) {
64879
+ return;
64880
+ }
64881
+ const hitIcon = eventArgsSet?.eventArgs?.target?.role?.startsWith('icon')
64882
+ ? eventArgsSet.eventArgs.target
64883
+ : e.target.role?.startsWith('icon')
64884
+ ? e.target
64885
+ : undefined;
64886
+ eventManager.downIcon = hitIcon;
64887
+ if (!hitIcon || hitIcon.attribute.interactive === false) {
64888
+ if (e.pointerType === 'touch') {
64889
+ eventManager.touchEnd = false;
64890
+ eventManager.touchSetTimeout = setTimeout(() => {
64891
+ eventManager.isTouchdown = false;
64892
+ eventManager.touchMove = true;
64893
+ if (!eventManager.touchEnd &&
64894
+ (eventManager.checkColumnResize(eventArgsSet, true) || eventManager.checkRowResize(eventArgsSet, true))) {
64895
+ stateManager.updateInteractionState(InteractionState.grabing);
64896
+ return;
64897
+ }
64898
+ if (!eventManager.touchEnd && eventManager.chechColumnMover(eventArgsSet)) {
64899
+ stateManager.updateInteractionState(InteractionState.grabing);
64900
+ return;
64901
+ }
64902
+ if (eventManager.dealTableSelect(eventArgsSet) && !eventManager.touchEnd) {
64903
+ stateManager.updateInteractionState(InteractionState.grabing);
64904
+ }
64905
+ }, 500);
64906
+ eventManager.dealTableHover(eventArgsSet);
64907
+ }
64908
+ else {
64909
+ if (!eventManager.checkCellFillhandle(eventArgsSet) &&
64877
64910
  (eventManager.checkColumnResize(eventArgsSet, true) || eventManager.checkRowResize(eventArgsSet, true))) {
64911
+ table.scenegraph.updateChartState(null);
64878
64912
  stateManager.updateInteractionState(InteractionState.grabing);
64879
64913
  return;
64880
64914
  }
64881
- if (!eventManager.touchEnd && eventManager.chechColumnMover(eventArgsSet)) {
64915
+ if (eventManager.chechColumnMover(eventArgsSet)) {
64882
64916
  stateManager.updateInteractionState(InteractionState.grabing);
64883
64917
  return;
64884
64918
  }
64885
- if (eventManager.dealTableSelect(eventArgsSet) && !eventManager.touchEnd) {
64919
+ if (eventManager.checkCellFillhandle(eventArgsSet, true) && eventManager.dealFillSelect(eventArgsSet)) {
64920
+ stateManager.updateInteractionState(InteractionState.grabing);
64921
+ return;
64922
+ }
64923
+ if (eventManager.dealTableSelect(eventArgsSet)) {
64886
64924
  stateManager.updateInteractionState(InteractionState.grabing);
64887
64925
  }
64888
- }, 500);
64889
- eventManager.dealTableHover(eventArgsSet);
64890
- }
64891
- else {
64892
- if (!eventManager.checkCellFillhandle(eventArgsSet) &&
64893
- (eventManager.checkColumnResize(eventArgsSet, true) || eventManager.checkRowResize(eventArgsSet, true))) {
64894
- table.scenegraph.updateChartState(null);
64895
- stateManager.updateInteractionState(InteractionState.grabing);
64896
- return;
64897
- }
64898
- if (eventManager.chechColumnMover(eventArgsSet)) {
64899
- stateManager.updateInteractionState(InteractionState.grabing);
64900
- return;
64901
- }
64902
- if (eventManager.checkCellFillhandle(eventArgsSet, true) && eventManager.dealFillSelect(eventArgsSet)) {
64903
- stateManager.updateInteractionState(InteractionState.grabing);
64904
- return;
64905
- }
64906
- if (eventManager.dealTableSelect(eventArgsSet)) {
64907
- stateManager.updateInteractionState(InteractionState.grabing);
64908
64926
  }
64909
64927
  }
64910
- }
64911
- else if (hitIcon.attribute.funcType === IconFuncTypeEnum.dragReorder) {
64912
- stateManager.startMoveCol(eventArgsSet.eventArgs.col, eventArgsSet.eventArgs.row, eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y);
64913
- stateManager.updateInteractionState(InteractionState.grabing);
64914
- }
64915
- if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_CELL)) {
64916
- const eventArgsSet = getCellEventArgsSet(e);
64917
- if (eventArgsSet.eventArgs) {
64918
- table.fireListeners(TABLE_EVENT_TYPE.MOUSEDOWN_CELL, {
64919
- col: eventArgsSet.eventArgs.col,
64920
- row: eventArgsSet.eventArgs.row,
64921
- event: e.nativeEvent,
64922
- target: eventArgsSet?.eventArgs?.target,
64923
- mergeCellInfo: eventArgsSet.eventArgs.mergeInfo
64924
- });
64928
+ else if (hitIcon.attribute.funcType === IconFuncTypeEnum.dragReorder) {
64929
+ stateManager.startMoveCol(eventArgsSet.eventArgs.col, eventArgsSet.eventArgs.row, eventArgsSet.abstractPos.x, eventArgsSet.abstractPos.y);
64930
+ stateManager.updateInteractionState(InteractionState.grabing);
64925
64931
  }
64926
- }
64932
+ if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_CELL)) {
64933
+ const eventArgsSet = getCellEventArgsSet(e);
64934
+ if (eventArgsSet.eventArgs) {
64935
+ table.fireListeners(TABLE_EVENT_TYPE.MOUSEDOWN_CELL, {
64936
+ col: eventArgsSet.eventArgs.col,
64937
+ row: eventArgsSet.eventArgs.row,
64938
+ event: e.nativeEvent,
64939
+ target: eventArgsSet?.eventArgs?.target,
64940
+ mergeCellInfo: eventArgsSet.eventArgs.mergeInfo
64941
+ });
64942
+ }
64943
+ }
64944
+ });
64927
64945
  });
64928
64946
  table.scenegraph.tableGroup.addEventListener('pointerup', (e) => {
64929
64947
  if (e.button !== 0) {
@@ -65086,30 +65104,32 @@
65086
65104
  stateManager.hideMenu();
65087
65105
  }
65088
65106
  const isCompleteEdit = table.editorManager?.completeEdit(e.nativeEvent);
65089
- if (isCompleteEdit === false) {
65090
- return;
65091
- }
65092
- const hitIcon = e.target.role?.startsWith('icon') ? e.target : undefined;
65093
- eventManager.downIcon = hitIcon;
65094
- if (!hitIcon &&
65095
- !eventManager.checkCellFillhandle(eventArgsSet) &&
65096
- !stateManager.columnResize.resizing &&
65097
- eventManager.checkColumnResize(eventArgsSet, true)) {
65098
- table.scenegraph.updateChartState(null);
65099
- stateManager.updateInteractionState(InteractionState.grabing);
65100
- const { eventArgs } = eventArgsSet;
65101
- if (!eventArgs?.targetCell) {
65102
- const cell = table.getCellAt(eventArgsSet.abstractPos.x - ResizeColumnHotSpotSize / 2, eventArgsSet.abstractPos.y);
65103
- if (cell) {
65104
- if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE)) {
65105
- table.fireListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE, {
65106
- event: e.nativeEvent
65107
- });
65107
+ getPromiseValue(isCompleteEdit, (isCompleteEdit) => {
65108
+ if (isCompleteEdit === false) {
65109
+ return;
65110
+ }
65111
+ const hitIcon = e.target.role?.startsWith('icon') ? e.target : undefined;
65112
+ eventManager.downIcon = hitIcon;
65113
+ if (!hitIcon &&
65114
+ !eventManager.checkCellFillhandle(eventArgsSet) &&
65115
+ !stateManager.columnResize.resizing &&
65116
+ eventManager.checkColumnResize(eventArgsSet, true)) {
65117
+ table.scenegraph.updateChartState(null);
65118
+ stateManager.updateInteractionState(InteractionState.grabing);
65119
+ const { eventArgs } = eventArgsSet;
65120
+ if (!eventArgs?.targetCell) {
65121
+ const cell = table.getCellAt(eventArgsSet.abstractPos.x - ResizeColumnHotSpotSize / 2, eventArgsSet.abstractPos.y);
65122
+ if (cell) {
65123
+ if (table.hasListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE)) {
65124
+ table.fireListeners(TABLE_EVENT_TYPE.MOUSEDOWN_TABLE, {
65125
+ event: e.nativeEvent
65126
+ });
65127
+ }
65108
65128
  }
65109
65129
  }
65130
+ return;
65110
65131
  }
65111
- return;
65112
- }
65132
+ });
65113
65133
  });
65114
65134
  table.scenegraph.stage.addEventListener('pointerup', (e) => {
65115
65135
  if (stateManager.interactionState === 'grabing') {
@@ -70063,7 +70083,8 @@
70063
70083
  }
70064
70084
  if (isConsider &&
70065
70085
  absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&
70066
- absoluteX < _this.tableNoFrameWidth) {
70086
+ absoluteX < _this.tableNoFrameWidth &&
70087
+ absoluteX <= _this.getAllColsWidth()) {
70067
70088
  for (let i = 0; i < _this.rightFrozenColCount; i++) {
70068
70089
  if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) {
70069
70090
  return {
@@ -70136,30 +70157,37 @@
70136
70157
  leftFrozen = true;
70137
70158
  }
70138
70159
  let bottomFrozen = false;
70139
- if (y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() && y < _this.tableNoFrameHeight) {
70160
+ if (y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&
70161
+ y < _this.tableNoFrameHeight &&
70162
+ y <= _this.getAllRowsHeight()) {
70140
70163
  bottomFrozen = true;
70141
70164
  }
70142
70165
  let rightFrozen = false;
70143
- if (x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() && x < _this.tableNoFrameWidth) {
70166
+ if (x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&
70167
+ x < _this.tableNoFrameWidth &&
70168
+ x <= _this.getAllColsWidth()) {
70144
70169
  rightFrozen = true;
70145
70170
  }
70146
70171
  const colInfo = getTargetColAtConsiderRightFrozen(leftFrozen || rightFrozen ? x : x + _this.scrollLeft, rightFrozen, _this);
70147
70172
  const rowInfo = getTargetRowAtConsiderBottomFrozen(topFrozen || bottomFrozen ? y : y + _this.scrollTop, bottomFrozen, _this);
70148
- const { row, top, bottom, height } = rowInfo;
70149
- const { col, left, right, width } = colInfo;
70150
- const rect = {
70151
- left,
70152
- right,
70153
- top,
70154
- bottom,
70155
- width,
70156
- height
70157
- };
70158
- return {
70159
- row,
70160
- col,
70161
- rect
70162
- };
70173
+ if (colInfo && rowInfo) {
70174
+ const { row, top, bottom, height } = rowInfo;
70175
+ const { col, left, right, width } = colInfo;
70176
+ const rect = {
70177
+ left,
70178
+ right,
70179
+ top,
70180
+ bottom,
70181
+ width,
70182
+ height
70183
+ };
70184
+ return {
70185
+ row,
70186
+ col,
70187
+ rect
70188
+ };
70189
+ }
70190
+ return { col: -1, row: -1 };
70163
70191
  }
70164
70192
 
70165
70193
  const { toBoxArray } = style;
@@ -70194,7 +70222,7 @@
70194
70222
  return TABLE_EVENT_TYPE;
70195
70223
  }
70196
70224
  options;
70197
- version = "1.5.0";
70225
+ version = "1.5.2-alpha.0";
70198
70226
  pagination;
70199
70227
  id = `VTable${Date.now()}`;
70200
70228
  headerStyleCache;
@@ -75334,25 +75362,50 @@
75334
75362
  }
75335
75363
  }
75336
75364
  if (!this.editingEditor.getValue) ;
75337
- if (!this.editingEditor.validateValue || this.editingEditor.validateValue?.()) {
75338
- const changedValue = this.editingEditor.getValue?.();
75339
- const range = this.table.getCellRange(this.editCell.col, this.editCell.row);
75340
- const changedValues = [];
75341
- for (let row = range.start.row; row <= range.end.row; row++) {
75342
- const rowChangedValues = [];
75343
- for (let col = range.start.col; col <= range.end.col; col++) {
75344
- rowChangedValues.push(changedValue);
75345
- }
75346
- changedValues.push(rowChangedValues);
75347
- }
75348
- this.table.changeCellValues(range.start.col, range.start.row, changedValues);
75349
- this.editingEditor.exit && (void 0);
75350
- this.editingEditor.exit?.();
75351
- this.editingEditor.onEnd?.();
75352
- this.editingEditor = null;
75353
- return true;
75365
+ if (this.editingEditor.validateValue) {
75366
+ const maybePromiseOrValue = this.editingEditor.validateValue?.();
75367
+ if (isPromise(maybePromiseOrValue)) {
75368
+ return new Promise((resolve, reject) => {
75369
+ maybePromiseOrValue
75370
+ .then(result => {
75371
+ if (result) {
75372
+ this.doExit();
75373
+ resolve(true);
75374
+ }
75375
+ else {
75376
+ resolve(false);
75377
+ }
75378
+ })
75379
+ .catch((err) => {
75380
+ reject(err);
75381
+ });
75382
+ });
75383
+ }
75384
+ else if (maybePromiseOrValue) {
75385
+ this.doExit();
75386
+ return true;
75387
+ }
75388
+ return false;
75354
75389
  }
75355
- return false;
75390
+ this.doExit();
75391
+ return true;
75392
+ }
75393
+ doExit() {
75394
+ const changedValue = this.editingEditor.getValue?.();
75395
+ const range = this.table.getCellRange(this.editCell.col, this.editCell.row);
75396
+ const changedValues = [];
75397
+ for (let row = range.start.row; row <= range.end.row; row++) {
75398
+ const rowChangedValues = [];
75399
+ for (let col = range.start.col; col <= range.end.col; col++) {
75400
+ rowChangedValues.push(changedValue);
75401
+ }
75402
+ changedValues.push(rowChangedValues);
75403
+ }
75404
+ this.table.changeCellValues(range.start.col, range.start.row, changedValues);
75405
+ this.editingEditor.exit && (void 0);
75406
+ this.editingEditor.exit?.();
75407
+ this.editingEditor.onEnd?.();
75408
+ this.editingEditor = null;
75356
75409
  }
75357
75410
  cancelEdit() {
75358
75411
  if (this.editingEditor) {
@@ -88562,7 +88615,7 @@
88562
88615
  }
88563
88616
 
88564
88617
  registerForVrender();
88565
- const version = "1.5.0";
88618
+ const version = "1.5.2-alpha.0";
88566
88619
  function getIcons() {
88567
88620
  return get$2();
88568
88621
  }