@visactor/vtable 1.21.1 → 1.22.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.
Files changed (161) hide show
  1. package/cjs/ListTable.d.ts +4 -2
  2. package/cjs/ListTable.js +76 -16
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotTable.d.ts +1 -1
  5. package/cjs/PivotTable.js +1 -1
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/core/BaseTable.d.ts +4 -0
  8. package/cjs/core/BaseTable.js +23 -1
  9. package/cjs/core/BaseTable.js.map +1 -1
  10. package/cjs/core/TABLE_EVENT_TYPE.d.ts +7 -0
  11. package/cjs/core/TABLE_EVENT_TYPE.js +8 -1
  12. package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
  13. package/cjs/core/record-helper.d.ts +2 -2
  14. package/cjs/core/record-helper.js +141 -129
  15. package/cjs/core/record-helper.js.map +1 -1
  16. package/cjs/core/tableHelper.js +6 -1
  17. package/cjs/core/tableHelper.js.map +1 -1
  18. package/cjs/core/utils/get-cell-position.d.ts +2 -0
  19. package/cjs/core/utils/get-cell-position.js +29 -2
  20. package/cjs/core/utils/get-cell-position.js.map +1 -1
  21. package/cjs/data/CachedDataSource.js +2 -2
  22. package/cjs/data/CachedDataSource.js.map +1 -1
  23. package/cjs/event/event.d.ts +1 -1
  24. package/cjs/event/event.js +5 -4
  25. package/cjs/event/event.js.map +1 -1
  26. package/cjs/event/helper.js +3 -1
  27. package/cjs/event/helper.js.map +1 -1
  28. package/cjs/event/listener/container-dom.js +3 -3
  29. package/cjs/event/listener/container-dom.js.map +1 -1
  30. package/cjs/event/listener/table-group.js +3 -2
  31. package/cjs/event/listener/table-group.js.map +1 -1
  32. package/cjs/event/scroll.d.ts +1 -1
  33. package/cjs/event/scroll.js +4 -4
  34. package/cjs/event/scroll.js.map +1 -1
  35. package/cjs/index.d.ts +1 -1
  36. package/cjs/index.js +1 -1
  37. package/cjs/index.js.map +1 -1
  38. package/cjs/layout/row-height-map.d.ts +2 -2
  39. package/cjs/layout/row-height-map.js +27 -28
  40. package/cjs/layout/row-height-map.js.map +1 -1
  41. package/cjs/layout/simple-header-layout.js +18 -7
  42. package/cjs/layout/simple-header-layout.js.map +1 -1
  43. package/cjs/scenegraph/component/cell-mover.js +3 -3
  44. package/cjs/scenegraph/component/cell-mover.js.map +1 -1
  45. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +4 -4
  46. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  47. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js +8 -2
  48. package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  49. package/cjs/scenegraph/group-creater/progress/proxy.js +1 -1
  50. package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
  51. package/cjs/scenegraph/layout/compute-col-width.js +5 -2
  52. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  53. package/cjs/scenegraph/scenegraph.js +5 -3
  54. package/cjs/scenegraph/scenegraph.js.map +1 -1
  55. package/cjs/scenegraph/select/update-select-border.js +6 -1
  56. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  57. package/cjs/scenegraph/utils/text-icon-layout.js +17 -3
  58. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  59. package/cjs/state/cell-move/index.d.ts +1 -1
  60. package/cjs/state/cell-move/index.js +24 -15
  61. package/cjs/state/cell-move/index.js.map +1 -1
  62. package/cjs/state/resize/update-resize-column.js +6 -1
  63. package/cjs/state/resize/update-resize-column.js.map +1 -1
  64. package/cjs/state/resize/update-resize-row.js +6 -1
  65. package/cjs/state/resize/update-resize-row.js.map +1 -1
  66. package/cjs/state/state.d.ts +2 -1
  67. package/cjs/state/state.js +7 -5
  68. package/cjs/state/state.js.map +1 -1
  69. package/cjs/tools/debounce.js +3 -3
  70. package/cjs/tools/debounce.js.map +1 -1
  71. package/cjs/tools/helper.d.ts +2 -1
  72. package/cjs/tools/helper.js.map +1 -1
  73. package/cjs/ts-types/base-table.d.ts +5 -1
  74. package/cjs/ts-types/base-table.js.map +1 -1
  75. package/cjs/ts-types/events.d.ts +55 -2
  76. package/cjs/ts-types/events.js.map +1 -1
  77. package/cjs/ts-types/table-engine.d.ts +1 -0
  78. package/cjs/ts-types/table-engine.js.map +1 -1
  79. package/cjs/vrender.js.map +1 -1
  80. package/dist/vtable.js +647 -335
  81. package/dist/vtable.min.js +2 -2
  82. package/es/ListTable.d.ts +4 -2
  83. package/es/ListTable.js +76 -16
  84. package/es/ListTable.js.map +1 -1
  85. package/es/PivotTable.d.ts +1 -1
  86. package/es/PivotTable.js +1 -1
  87. package/es/PivotTable.js.map +1 -1
  88. package/es/core/BaseTable.d.ts +4 -0
  89. package/es/core/BaseTable.js +24 -2
  90. package/es/core/BaseTable.js.map +1 -1
  91. package/es/core/TABLE_EVENT_TYPE.d.ts +7 -0
  92. package/es/core/TABLE_EVENT_TYPE.js +8 -1
  93. package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
  94. package/es/core/record-helper.d.ts +2 -2
  95. package/es/core/record-helper.js +141 -129
  96. package/es/core/record-helper.js.map +1 -1
  97. package/es/core/tableHelper.js +7 -2
  98. package/es/core/tableHelper.js.map +1 -1
  99. package/es/core/utils/get-cell-position.d.ts +2 -0
  100. package/es/core/utils/get-cell-position.js +26 -0
  101. package/es/core/utils/get-cell-position.js.map +1 -1
  102. package/es/data/CachedDataSource.js +2 -2
  103. package/es/data/CachedDataSource.js.map +1 -1
  104. package/es/event/event.d.ts +1 -1
  105. package/es/event/event.js +5 -4
  106. package/es/event/event.js.map +1 -1
  107. package/es/event/helper.js +3 -1
  108. package/es/event/helper.js.map +1 -1
  109. package/es/event/listener/container-dom.js +3 -3
  110. package/es/event/listener/container-dom.js.map +1 -1
  111. package/es/event/listener/table-group.js +3 -2
  112. package/es/event/listener/table-group.js.map +1 -1
  113. package/es/event/scroll.d.ts +1 -1
  114. package/es/event/scroll.js +5 -3
  115. package/es/event/scroll.js.map +1 -1
  116. package/es/index.d.ts +1 -1
  117. package/es/index.js +1 -1
  118. package/es/index.js.map +1 -1
  119. package/es/layout/row-height-map.d.ts +2 -2
  120. package/es/layout/row-height-map.js +27 -28
  121. package/es/layout/row-height-map.js.map +1 -1
  122. package/es/layout/simple-header-layout.js +18 -7
  123. package/es/layout/simple-header-layout.js.map +1 -1
  124. package/es/scenegraph/component/cell-mover.js +3 -3
  125. package/es/scenegraph/component/cell-mover.js.map +1 -1
  126. package/es/scenegraph/graphic/contributions/chart-render-helper.js +5 -5
  127. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  128. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js +8 -2
  129. package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
  130. package/es/scenegraph/group-creater/progress/proxy.js +1 -1
  131. package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
  132. package/es/scenegraph/layout/compute-col-width.js +5 -2
  133. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  134. package/es/scenegraph/scenegraph.js +5 -3
  135. package/es/scenegraph/scenegraph.js.map +1 -1
  136. package/es/scenegraph/select/update-select-border.js +7 -0
  137. package/es/scenegraph/select/update-select-border.js.map +1 -1
  138. package/es/scenegraph/utils/text-icon-layout.js +18 -2
  139. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  140. package/es/state/cell-move/index.d.ts +1 -1
  141. package/es/state/cell-move/index.js +24 -15
  142. package/es/state/cell-move/index.js.map +1 -1
  143. package/es/state/resize/update-resize-column.js +6 -1
  144. package/es/state/resize/update-resize-column.js.map +1 -1
  145. package/es/state/resize/update-resize-row.js +6 -1
  146. package/es/state/resize/update-resize-row.js.map +1 -1
  147. package/es/state/state.d.ts +2 -1
  148. package/es/state/state.js +7 -5
  149. package/es/state/state.js.map +1 -1
  150. package/es/tools/debounce.js +4 -2
  151. package/es/tools/debounce.js.map +1 -1
  152. package/es/tools/helper.d.ts +2 -1
  153. package/es/tools/helper.js.map +1 -1
  154. package/es/ts-types/base-table.d.ts +5 -1
  155. package/es/ts-types/base-table.js.map +1 -1
  156. package/es/ts-types/events.d.ts +55 -2
  157. package/es/ts-types/events.js.map +1 -1
  158. package/es/ts-types/table-engine.d.ts +1 -0
  159. package/es/ts-types/table-engine.js.map +1 -1
  160. package/es/vrender.js.map +1 -1
  161. package/package.json +8 -8
@@ -20,10 +20,11 @@ export declare class ListTable extends BaseTable implements ListTableAPI {
20
20
  get recordsCount(): number;
21
21
  updateColumns(columns: ColumnsDefine, options?: {
22
22
  clearColWidthCache?: boolean;
23
+ clearRowHeightCache?: boolean;
23
24
  }): void;
24
25
  private _recreateSceneForStateChange;
25
- addColumn(column: ColumnDefine, colIndex?: number, isMaintainArrayData?: boolean): void;
26
- deleteColumn(colIndex: number): void;
26
+ addColumns(toAddColumns: ColumnDefine[], colIndex?: number, isMaintainArrayData?: boolean): void;
27
+ deleteColumns(deleteColIndexs: number[], isMaintainArrayData?: boolean): void;
27
28
  get columns(): ColumnsDefine;
28
29
  get header(): ColumnsDefine;
29
30
  set header(header: ColumnsDefine);
@@ -69,6 +70,7 @@ export declare class ListTable extends BaseTable implements ListTableAPI {
69
70
  _getSortFuncFromHeaderOption(columns: ColumnsDefine | undefined, field: FieldDef, fieldKey?: FieldKeyDef): SortState['orderFn'] | undefined;
70
71
  updateSortState(sortState: SortState[] | SortState | null, executeSort?: boolean): void;
71
72
  updateFilterRules(filterRules: FilterRules): void;
73
+ getFilteredRecords(): any[];
72
74
  getCheckboxState(field?: string | number): any[];
73
75
  getCellCheckboxState(col: number, row: number): boolean | "indeterminate";
74
76
  getRadioState(field?: string | number): number | boolean | Record<string | number, number | boolean | Record<number, number>>;
package/cjs/ListTable.js CHANGED
@@ -84,7 +84,10 @@ class ListTable extends core_1.BaseTable {
84
84
  get recordsCount() {
85
85
  return this.dataSource.records.length;
86
86
  }
87
- updateColumns(columns, options) {
87
+ updateColumns(columns, options = {
88
+ clearColWidthCache: !1,
89
+ clearRowHeightCache: !0
90
+ }) {
88
91
  var _a, _b, _c, _d;
89
92
  this.scenegraph.clearCells();
90
93
  const oldHoverState = {
@@ -97,7 +100,7 @@ class ListTable extends core_1.BaseTable {
97
100
  this._hasAutoImageColumn = void 0, this.refreshHeader(), null === (_b = (_a = this.dataSource).updateColumns) || void 0 === _b || _b.call(_a, this.internalProps.columns),
98
101
  this.records && (0, tableHelper_1.checkHasAggregationOnColumnDefine)(this.internalProps.columns) && this.dataSource.processRecords(null !== (_d = null === (_c = this.dataSource.dataSourceObj) || void 0 === _c ? void 0 : _c.records) && void 0 !== _d ? _d : this.dataSource.dataSourceObj),
99
102
  this.internalProps.useOneRowHeightFillAll = !1, this.headerStyleCache = new Map,
100
- this.bodyStyleCache = new Map, this.bodyBottomStyleCache = new Map, this.scenegraph.createSceneGraph(),
103
+ this.bodyStyleCache = new Map, this.bodyBottomStyleCache = new Map, this.scenegraph.createSceneGraph(!(null == options ? void 0 : options.clearRowHeightCache)),
101
104
  this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row), this.renderAsync(),
102
105
  this.eventManager.updateEventBinder();
103
106
  }
@@ -114,21 +117,52 @@ class ListTable extends core_1.BaseTable {
114
117
  this.scenegraph.createSceneGraph(), this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row),
115
118
  this.renderAsync(), this.eventManager.updateEventBinder();
116
119
  }
117
- addColumn(column, colIndex, isMaintainArrayData = !0) {
120
+ addColumns(toAddColumns, colIndex, isMaintainArrayData = !0) {
121
+ var _a;
118
122
  const columns = this.options.columns;
119
- if (void 0 === colIndex) columns.push(column); else {
120
- if (isMaintainArrayData) for (let i = 0; i < columns.length; i++) "number" == typeof columns[i].field && columns[i].field >= colIndex && (columns[i].field = columns[i].field + 1);
121
- columns.splice(colIndex, 0, column);
122
- }
123
- if (isMaintainArrayData) for (let i = 0; i < this.records.length; i++) {
124
- const record = this.records[i];
125
- Array.isArray(record) && record.splice(colIndex, 0, void 0);
123
+ void 0 === colIndex ? (colIndex = columns.length, columns.push(...toAddColumns)) : columns.splice(colIndex, 0, ...toAddColumns);
124
+ for (let i = 0; i < toAddColumns.length; i++) this.colWidthsMap.addAndReorder(colIndex + i, null !== (_a = toAddColumns[i].width) && void 0 !== _a ? _a : this.internalProps.defaultColWidth);
125
+ this.internalProps._colRangeWidthsMap.clear();
126
+ const resizedColIndexs = Array.from(this.internalProps._widthResizedColMap.keys());
127
+ for (let i = 0; i < resizedColIndexs.length; i++) resizedColIndexs[i] >= colIndex && (this.internalProps._widthResizedColMap.delete(resizedColIndexs[i]),
128
+ this.internalProps._widthResizedColMap.add(resizedColIndexs[i] + toAddColumns.length));
129
+ if (isMaintainArrayData) {
130
+ for (let i = 0; i < columns.length; i++) columns[i].field = i;
131
+ for (let i = 0; i < this.records.length; i++) {
132
+ const record = this.records[i];
133
+ Array.isArray(record) && record.splice(colIndex, 0, ...Array(toAddColumns.length).fill(void 0));
134
+ }
126
135
  }
127
- this.updateColumns(columns);
136
+ this.updateColumns(columns, {
137
+ clearRowHeightCache: !1
138
+ }), this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.ADD_COLUMN, {
139
+ columnIndex: colIndex,
140
+ columnCount: toAddColumns.length,
141
+ columns: columns
142
+ });
128
143
  }
129
- deleteColumn(colIndex) {
144
+ deleteColumns(deleteColIndexs, isMaintainArrayData = !0) {
130
145
  const columns = this.options.columns;
131
- columns.splice(colIndex, 1), this.updateColumns(columns);
146
+ deleteColIndexs.sort(((a, b) => b - a));
147
+ for (let i = 0; i < deleteColIndexs.length; i++) if (columns.splice(deleteColIndexs[i], 1),
148
+ this.colWidthsMap.delAndReorder(deleteColIndexs[i]), this.internalProps._widthResizedColMap.delete(deleteColIndexs[i]),
149
+ isMaintainArrayData) for (let j = 0; j < this.records.length; j++) {
150
+ const record = this.records[j];
151
+ Array.isArray(record) && record.splice(deleteColIndexs[i], 1);
152
+ }
153
+ this.internalProps._colRangeWidthsMap.clear();
154
+ const resizedColIndexs = Array.from(this.internalProps._widthResizedColMap.keys());
155
+ for (let i = 0; i < resizedColIndexs.length; i++) for (let j = 0; j < deleteColIndexs.length; j++) if (resizedColIndexs[i] > deleteColIndexs[j]) {
156
+ this.internalProps._widthResizedColMap.delete(resizedColIndexs[i]), this.internalProps._widthResizedColMap.add(resizedColIndexs[i] - (deleteColIndexs.length - j));
157
+ break;
158
+ }
159
+ if (isMaintainArrayData) for (let i = 0; i < columns.length; i++) columns[i].field = i;
160
+ this.updateColumns(columns, {
161
+ clearRowHeightCache: !1
162
+ }), this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.DELETE_COLUMN, {
163
+ deleteColIndexs: deleteColIndexs,
164
+ columns: columns
165
+ });
132
166
  }
133
167
  get columns() {
134
168
  return this.internalProps.layoutMap.columnTree.getCopiedTree();
@@ -531,6 +565,9 @@ class ListTable extends core_1.BaseTable {
531
565
  this.refreshRowColCount(), this.stateManager.initCheckedState(this.records), this.scenegraph.createSceneGraph(),
532
566
  this.resize();
533
567
  }
568
+ getFilteredRecords() {
569
+ return this.dataSource.records;
570
+ }
534
571
  getCheckboxState(field) {
535
572
  if (this.stateManager.checkedState.size < this.rowCount - this.columnHeaderLevelCount && this.stateManager.initLeftRecordsCheckState(this.records),
536
573
  (0, vutils_1.isValid)(field)) {
@@ -672,18 +709,41 @@ class ListTable extends core_1.BaseTable {
672
709
  }
673
710
  addRecord(record, recordIndex) {
674
711
  var _a;
675
- (0, record_helper_1.listTableAddRecord)(record, recordIndex, this), null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible();
712
+ const success = (0, record_helper_1.listTableAddRecord)(record, recordIndex, this);
713
+ null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible(),
714
+ success && this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.ADD_RECORD, {
715
+ records: [ record ],
716
+ recordIndex: recordIndex,
717
+ recordCount: 1
718
+ });
676
719
  }
677
720
  addRecords(records, recordIndex) {
678
721
  var _a;
679
- (0, record_helper_1.listTableAddRecords)(records, recordIndex, this), null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible();
722
+ const success = (0, record_helper_1.listTableAddRecords)(records, recordIndex, this);
723
+ null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible(),
724
+ success && this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.ADD_RECORD, {
725
+ records: records,
726
+ recordIndex: recordIndex,
727
+ recordCount: records.length
728
+ });
680
729
  }
681
730
  deleteRecords(recordIndexs) {
682
731
  var _a;
683
732
  (0, record_helper_1.listTableDeleteRecords)(recordIndexs, this), null === (_a = this.internalProps.emptyTip) || void 0 === _a || _a.resetVisible();
733
+ const rowIndexs = [];
734
+ for (let i = 0; i < recordIndexs.length; i++) rowIndexs.push(this.getBodyRowIndexByRecordIndex(recordIndexs[i]) + this.columnHeaderLevelCount);
735
+ this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.DELETE_RECORD, {
736
+ recordIndexs: recordIndexs,
737
+ rowIndexs: rowIndexs,
738
+ deletedCount: (Array.isArray(recordIndexs[0]), recordIndexs.length)
739
+ });
684
740
  }
685
741
  updateRecords(records, recordIndexs) {
686
- (0, record_helper_1.listTableUpdateRecords)(records, recordIndexs, this);
742
+ (0, record_helper_1.listTableUpdateRecords)(records, recordIndexs, this), this.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.UPDATE_RECORD, {
743
+ records: records,
744
+ recordIndexs: recordIndexs,
745
+ updateCount: records.length
746
+ });
687
747
  }
688
748
  _hasCustomRenderOrLayout() {
689
749
  var _a, _b, _c, _d;