tabulator-tables 5.0.1 → 5.0.6
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.
- package/bower.json +1 -1
- package/build/rollup.js +1 -1
- package/dist/css/tabulator_bootstrap3.css +9 -0
- package/dist/css/tabulator_bootstrap3.css.map +1 -1
- package/dist/css/tabulator_bootstrap3.min.css +1 -1
- package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
- package/dist/css/tabulator_bootstrap4.css +0 -4
- package/dist/css/tabulator_bootstrap4.css.map +1 -1
- package/dist/css/tabulator_bootstrap4.min.css +1 -1
- package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
- package/dist/css/tabulator_bulma.css +5 -1
- package/dist/css/tabulator_bulma.css.map +1 -1
- package/dist/css/tabulator_bulma.min.css +1 -1
- package/dist/css/tabulator_bulma.min.css.map +1 -1
- package/dist/css/tabulator_semanticui.css +11 -2
- package/dist/css/tabulator_semanticui.css.map +1 -1
- package/dist/css/tabulator_semanticui.min.css +1 -1
- package/dist/css/tabulator_semanticui.min.css.map +1 -1
- package/dist/js/tabulator.js +295 -176
- package/dist/js/tabulator.js.map +1 -1
- package/dist/js/tabulator.min.js +2 -2
- package/dist/js/tabulator.min.js.map +1 -1
- package/dist/js/tabulator_esm.js +252 -153
- package/dist/js/tabulator_esm.js.map +1 -1
- package/dist/js/tabulator_esm.min.js +2 -2
- package/dist/js/tabulator_esm.min.js.map +1 -1
- package/package.json +1 -1
- package/src/js/core/ColumnManager.js +12 -12
- package/src/js/core/FooterManager.js +2 -2
- package/src/js/core/RowManager.js +6 -5
- package/src/js/core/Tabulator.js +64 -29
- package/src/js/core/column/Column.js +2 -2
- package/src/js/core/rendering/renderers/VirtualDomVertical.js +4 -0
- package/src/js/core/row/Row.js +4 -1
- package/src/js/core/tools/DataLoader.js +1 -1
- package/src/js/core/tools/ExternalEventBus.js +3 -2
- package/src/js/core/tools/Helpers.js +24 -7
- package/src/js/core/tools/InteractionMonitor.js +1 -0
- package/src/js/core/tools/ModuleBinder.js +1 -1
- package/src/js/modules/Accessor/Accessor.js +1 -1
- package/src/js/modules/Ajax/defaults/contentTypeFormatters.js +22 -1
- package/src/js/modules/DataTree/DataTree.js +1 -1
- package/src/js/modules/Edit/Edit.js +7 -6
- package/src/js/modules/Edit/defaults/editors/progress.js +2 -2
- package/src/js/modules/Filter/Filter.js +1 -1
- package/src/js/modules/Format/defaults/formatters/money.js +8 -1
- package/src/js/modules/FrozenColumns/FrozenColumns.js +21 -0
- package/src/js/modules/GroupRows/Group.js +2 -0
- package/src/js/modules/GroupRows/GroupRows.js +4 -6
- package/src/js/modules/History/defaults/redoers.js +1 -0
- package/src/js/modules/History/defaults/undoers.js +1 -0
- package/src/js/modules/HtmlTableImport/HtmlTableImport.js +4 -22
- package/src/js/modules/Page/Page.js +2 -2
- package/src/js/modules/ReactiveData/ReactiveData.js +28 -27
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +5 -1
- package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +9 -0
- package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +0 -4
- package/src/scss/themes/bulma/tabulator_bulma.scss +5 -1
- package/src/scss/themes/semanticui/tabulator_semanticui.scss +12 -7
package/dist/js/tabulator_esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Tabulator v5.0.
|
|
1
|
+
/* Tabulator v5.0.6 (c) Oliver Folkerd 2021 */
|
|
2
2
|
class CoreFeature{
|
|
3
3
|
|
|
4
4
|
constructor(table){
|
|
@@ -195,7 +195,7 @@ class Module extends CoreFeature{
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
class Helpers
|
|
198
|
+
class Helpers{
|
|
199
199
|
|
|
200
200
|
static elVisible(el){
|
|
201
201
|
return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
|
|
@@ -210,18 +210,35 @@ class Helpers$1{
|
|
|
210
210
|
};
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
static deepClone(obj){
|
|
214
|
-
var
|
|
213
|
+
static deepClone(obj, clone, list = []){
|
|
214
|
+
var objectProto = {}.__proto__,
|
|
215
|
+
arrayProto = [].__proto__;
|
|
216
|
+
|
|
217
|
+
if (!clone){
|
|
218
|
+
clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);
|
|
219
|
+
}
|
|
215
220
|
|
|
216
221
|
for(var i in obj) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
+
let subject = obj[i],
|
|
223
|
+
match, copy;
|
|
224
|
+
|
|
225
|
+
if(subject != null && typeof subject === "object" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){
|
|
226
|
+
match = list.findIndex((item) => {
|
|
227
|
+
return item.subject === subject;
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
if(match > -1){
|
|
231
|
+
clone[i] = list[match].copy;
|
|
232
|
+
}else {
|
|
233
|
+
copy = Object.assign(Array.isArray(subject) ? [] : {}, subject);
|
|
234
|
+
|
|
235
|
+
list.unshift({subject, copy});
|
|
236
|
+
|
|
237
|
+
clone[i] = this.deepClone(subject, copy, list);
|
|
222
238
|
}
|
|
223
239
|
}
|
|
224
240
|
}
|
|
241
|
+
|
|
225
242
|
return clone;
|
|
226
243
|
}
|
|
227
244
|
}
|
|
@@ -259,7 +276,7 @@ class Accessor extends Module{
|
|
|
259
276
|
var match = false,
|
|
260
277
|
config = {};
|
|
261
278
|
|
|
262
|
-
this.allowedTypes.forEach(
|
|
279
|
+
this.allowedTypes.forEach((type) => {
|
|
263
280
|
var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
|
|
264
281
|
accessor;
|
|
265
282
|
|
|
@@ -309,7 +326,7 @@ class Accessor extends Module{
|
|
|
309
326
|
rowComponent = row.getComponent();
|
|
310
327
|
|
|
311
328
|
//clone data object with deep copy to isolate internal data from returned result
|
|
312
|
-
var data = Helpers
|
|
329
|
+
var data = Helpers.deepClone(row.data || {});
|
|
313
330
|
|
|
314
331
|
this.table.columnManager.traverse(function(column){
|
|
315
332
|
var value, accessor, params, colCompnent;
|
|
@@ -475,6 +492,26 @@ function defaultLoaderPromise(url, config, params){
|
|
|
475
492
|
});
|
|
476
493
|
}
|
|
477
494
|
|
|
495
|
+
function generateParamsList$1(data, prefix){
|
|
496
|
+
var output = [];
|
|
497
|
+
|
|
498
|
+
prefix = prefix || "";
|
|
499
|
+
|
|
500
|
+
if(Array.isArray(data)){
|
|
501
|
+
data.forEach((item, i) => {
|
|
502
|
+
output = output.concat(generateParamsList$1(item, prefix ? prefix + "[" + i + "]" : i));
|
|
503
|
+
});
|
|
504
|
+
}else if (typeof data === "object"){
|
|
505
|
+
for (var key in data){
|
|
506
|
+
output = output.concat(generateParamsList$1(data[key], prefix ? prefix + "[" + key + "]" : key));
|
|
507
|
+
}
|
|
508
|
+
}else {
|
|
509
|
+
output.push({key:prefix, value:data});
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
return output;
|
|
513
|
+
}
|
|
514
|
+
|
|
478
515
|
var defaultContentTypeFormatters = {
|
|
479
516
|
"json":{
|
|
480
517
|
headers:{
|
|
@@ -488,7 +525,8 @@ var defaultContentTypeFormatters = {
|
|
|
488
525
|
headers:{
|
|
489
526
|
},
|
|
490
527
|
body:function(url, config, params){
|
|
491
|
-
|
|
528
|
+
|
|
529
|
+
var output = generateParamsList$1(params),
|
|
492
530
|
form = new FormData();
|
|
493
531
|
|
|
494
532
|
output.forEach(function(item){
|
|
@@ -2292,7 +2330,7 @@ class Column$1 extends CoreFeature{
|
|
|
2292
2330
|
this.reinitializeWidth();
|
|
2293
2331
|
}
|
|
2294
2332
|
|
|
2295
|
-
this.table.columnManager.
|
|
2333
|
+
this.table.columnManager.verticalAlignHeaders();
|
|
2296
2334
|
|
|
2297
2335
|
this.dispatch("column-show", this, responsiveToggle);
|
|
2298
2336
|
|
|
@@ -2317,7 +2355,7 @@ class Column$1 extends CoreFeature{
|
|
|
2317
2355
|
|
|
2318
2356
|
this.element.style.display = "none";
|
|
2319
2357
|
|
|
2320
|
-
this.table.columnManager.
|
|
2358
|
+
this.table.columnManager.verticalAlignHeaders();
|
|
2321
2359
|
|
|
2322
2360
|
if(this.parent.isGroup){
|
|
2323
2361
|
this.parent.checkColumnVisibility();
|
|
@@ -2836,6 +2874,10 @@ class Row$1 extends CoreFeature{
|
|
|
2836
2874
|
}
|
|
2837
2875
|
}
|
|
2838
2876
|
|
|
2877
|
+
deinitializeHeight(){
|
|
2878
|
+
this.heightInitialized = false;
|
|
2879
|
+
}
|
|
2880
|
+
|
|
2839
2881
|
reinitialize(children){
|
|
2840
2882
|
this.initialized = false;
|
|
2841
2883
|
this.heightInitialized = false;
|
|
@@ -2892,7 +2934,6 @@ class Row$1 extends CoreFeature{
|
|
|
2892
2934
|
|
|
2893
2935
|
//normalize the height of elements in the row
|
|
2894
2936
|
normalizeHeight(force){
|
|
2895
|
-
|
|
2896
2937
|
if(force){
|
|
2897
2938
|
this.clearCellHeight();
|
|
2898
2939
|
}
|
|
@@ -2946,7 +2987,7 @@ class Row$1 extends CoreFeature{
|
|
|
2946
2987
|
|
|
2947
2988
|
//update the rows data
|
|
2948
2989
|
updateData(updatedData){
|
|
2949
|
-
var visible = this.element && Helpers
|
|
2990
|
+
var visible = this.element && Helpers.elVisible(this.element),
|
|
2950
2991
|
tempData = {},
|
|
2951
2992
|
newRowData;
|
|
2952
2993
|
|
|
@@ -4281,7 +4322,7 @@ class DataTree extends Module{
|
|
|
4281
4322
|
|
|
4282
4323
|
checkForRestyle(cell){
|
|
4283
4324
|
if(!cell.row.cells.indexOf(cell)){
|
|
4284
|
-
cell.row
|
|
4325
|
+
this.layoutRow(cell.row);
|
|
4285
4326
|
}
|
|
4286
4327
|
}
|
|
4287
4328
|
|
|
@@ -5589,7 +5630,7 @@ function select(cell, onRendered, success, cancel, editorParams){
|
|
|
5589
5630
|
}
|
|
5590
5631
|
|
|
5591
5632
|
|
|
5592
|
-
var offset = Helpers
|
|
5633
|
+
var offset = Helpers.elOffset(cellEl);
|
|
5593
5634
|
|
|
5594
5635
|
listEl.style.minWidth = cellEl.offsetWidth + "px";
|
|
5595
5636
|
|
|
@@ -6066,7 +6107,7 @@ function autocomplete(cell, onRendered, success, cancel, editorParams){
|
|
|
6066
6107
|
if(!listEl.parentNode){
|
|
6067
6108
|
while(listEl.firstChild) listEl.removeChild(listEl.firstChild);
|
|
6068
6109
|
|
|
6069
|
-
var offset = Helpers
|
|
6110
|
+
var offset = Helpers.elOffset(cellEl);
|
|
6070
6111
|
|
|
6071
6112
|
listEl.style.minWidth = cellEl.offsetWidth + "px";
|
|
6072
6113
|
|
|
@@ -6381,8 +6422,8 @@ function star(cell, onRendered, success, cancel, editorParams){
|
|
|
6381
6422
|
//draggable progress bar
|
|
6382
6423
|
function progress(cell, onRendered, success, cancel, editorParams){
|
|
6383
6424
|
var element = cell.getElement(),
|
|
6384
|
-
max = typeof editorParams.max === "undefined" ? ( element.getElementsByTagName("div")[0]
|
|
6385
|
-
min = typeof editorParams.min === "undefined" ? ( element.getElementsByTagName("div")[0]
|
|
6425
|
+
max = typeof editorParams.max === "undefined" ? ( element.getElementsByTagName("div")[0]?.getAttribute("max") || 100) : editorParams.max,
|
|
6426
|
+
min = typeof editorParams.min === "undefined" ? ( element.getElementsByTagName("div")[0]?.getAttribute("min") || 0) : editorParams.min,
|
|
6386
6427
|
percent = (max - min) / 100,
|
|
6387
6428
|
value = cell.getValue() || 0,
|
|
6388
6429
|
handle = document.createElement("div"),
|
|
@@ -6754,7 +6795,7 @@ class Edit extends Module{
|
|
|
6754
6795
|
nextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);
|
|
6755
6796
|
|
|
6756
6797
|
if(nextCell){
|
|
6757
|
-
nextCell.edit();
|
|
6798
|
+
nextCell.getComponent().edit();
|
|
6758
6799
|
return true;
|
|
6759
6800
|
}
|
|
6760
6801
|
}
|
|
@@ -6785,7 +6826,7 @@ class Edit extends Module{
|
|
|
6785
6826
|
nextCell = this.findNextEditableCell(nextRow, -1);
|
|
6786
6827
|
|
|
6787
6828
|
if(nextCell){
|
|
6788
|
-
nextCell.edit();
|
|
6829
|
+
nextCell.getComponent().edit();
|
|
6789
6830
|
return true;
|
|
6790
6831
|
}
|
|
6791
6832
|
}
|
|
@@ -6809,7 +6850,7 @@ class Edit extends Module{
|
|
|
6809
6850
|
nextCell = this.findPrevEditableCell(cell.row, index);
|
|
6810
6851
|
|
|
6811
6852
|
if(nextCell){
|
|
6812
|
-
nextCell.edit();
|
|
6853
|
+
nextCell.getComponent().edit();
|
|
6813
6854
|
return true;
|
|
6814
6855
|
}
|
|
6815
6856
|
}
|
|
@@ -6831,7 +6872,7 @@ class Edit extends Module{
|
|
|
6831
6872
|
nextCell = this.findNextEditableCell(cell.row, index);
|
|
6832
6873
|
|
|
6833
6874
|
if(nextCell){
|
|
6834
|
-
nextCell.edit();
|
|
6875
|
+
nextCell.getComponent().edit();
|
|
6835
6876
|
return true;
|
|
6836
6877
|
}
|
|
6837
6878
|
}
|
|
@@ -6853,7 +6894,7 @@ class Edit extends Module{
|
|
|
6853
6894
|
nextRow = this.table.rowManager.prevDisplayRow(cell.row, true);
|
|
6854
6895
|
|
|
6855
6896
|
if(nextRow){
|
|
6856
|
-
nextRow.cells[index].edit();
|
|
6897
|
+
nextRow.cells[index].getComponent().edit();
|
|
6857
6898
|
return true;
|
|
6858
6899
|
}
|
|
6859
6900
|
}
|
|
@@ -6875,7 +6916,7 @@ class Edit extends Module{
|
|
|
6875
6916
|
nextRow = this.table.rowManager.nextDisplayRow(cell.row, true);
|
|
6876
6917
|
|
|
6877
6918
|
if(nextRow){
|
|
6878
|
-
nextRow.cells[index].edit();
|
|
6919
|
+
nextRow.cells[index].getComponent().edit();
|
|
6879
6920
|
return true;
|
|
6880
6921
|
}
|
|
6881
6922
|
}
|
|
@@ -8954,10 +8995,12 @@ function textarea$1(cell, formatterParams, onRendered){
|
|
|
8954
8995
|
|
|
8955
8996
|
function money(cell, formatterParams, onRendered){
|
|
8956
8997
|
var floatVal = parseFloat(cell.getValue()),
|
|
8998
|
+
sign = "",
|
|
8957
8999
|
number, integer, decimal, rgx;
|
|
8958
9000
|
|
|
8959
9001
|
var decimalSym = formatterParams.decimal || ".";
|
|
8960
9002
|
var thousandSym = formatterParams.thousand || ",";
|
|
9003
|
+
var negativeSign = formatterParams.negativeSign || "-";
|
|
8961
9004
|
var symbol = formatterParams.symbol || "";
|
|
8962
9005
|
var after = !!formatterParams.symbolAfter;
|
|
8963
9006
|
var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
|
|
@@ -8966,6 +9009,11 @@ function money(cell, formatterParams, onRendered){
|
|
|
8966
9009
|
return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
|
|
8967
9010
|
}
|
|
8968
9011
|
|
|
9012
|
+
if(floatVal < 0){
|
|
9013
|
+
floatVal = Math.abs(floatVal);
|
|
9014
|
+
sign = negativeSign;
|
|
9015
|
+
}
|
|
9016
|
+
|
|
8969
9017
|
number = precision !== false ? floatVal.toFixed(precision) : floatVal;
|
|
8970
9018
|
number = String(number).split(".");
|
|
8971
9019
|
|
|
@@ -8978,7 +9026,7 @@ function money(cell, formatterParams, onRendered){
|
|
|
8978
9026
|
integer = integer.replace(rgx, "$1" + thousandSym + "$2");
|
|
8979
9027
|
}
|
|
8980
9028
|
|
|
8981
|
-
return after ? integer + decimal + symbol : symbol + integer + decimal;
|
|
9029
|
+
return after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;
|
|
8982
9030
|
}
|
|
8983
9031
|
|
|
8984
9032
|
function link(cell, formatterParams, onRendered){
|
|
@@ -9865,12 +9913,33 @@ class FrozenColumns extends Module{
|
|
|
9865
9913
|
if(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){
|
|
9866
9914
|
this.layoutRow(this.table.modules.columnCalcs.topRow);
|
|
9867
9915
|
}
|
|
9916
|
+
|
|
9868
9917
|
if(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){
|
|
9869
9918
|
this.layoutRow(this.table.modules.columnCalcs.botRow);
|
|
9870
9919
|
}
|
|
9920
|
+
|
|
9921
|
+
if(this.table.modExists("groupRows")){
|
|
9922
|
+
this.layoutGroupCalcs(this.table.modules.groupRows.getGroups());
|
|
9923
|
+
}
|
|
9871
9924
|
}
|
|
9872
9925
|
}
|
|
9873
9926
|
|
|
9927
|
+
layoutGroupCalcs(groups){
|
|
9928
|
+
groups.forEach((group) => {
|
|
9929
|
+
if(group.calcs.top){
|
|
9930
|
+
this.layoutRow(group.calcs.top);
|
|
9931
|
+
}
|
|
9932
|
+
|
|
9933
|
+
if(group.calcs.bottom){
|
|
9934
|
+
this.layoutRow(group.calcs.bottom);
|
|
9935
|
+
}
|
|
9936
|
+
|
|
9937
|
+
if(group.groupList && group.groupList.length){
|
|
9938
|
+
this.layoutGroupCalcs(group.groupList && group.groupList);
|
|
9939
|
+
}
|
|
9940
|
+
});
|
|
9941
|
+
}
|
|
9942
|
+
|
|
9874
9943
|
//calculate column positions and layout headers
|
|
9875
9944
|
layoutColumnPosition(allCells){
|
|
9876
9945
|
|
|
@@ -10794,7 +10863,7 @@ class Group{
|
|
|
10794
10863
|
this.initialized = false;
|
|
10795
10864
|
this.height = 0;
|
|
10796
10865
|
|
|
10797
|
-
if(Helpers
|
|
10866
|
+
if(Helpers.elVisible(this.element)){
|
|
10798
10867
|
this.initialize(true);
|
|
10799
10868
|
}
|
|
10800
10869
|
}
|
|
@@ -10823,6 +10892,8 @@ class Group{
|
|
|
10823
10892
|
|
|
10824
10893
|
clearCellHeight(){}
|
|
10825
10894
|
|
|
10895
|
+
deinitializeHeight(){}
|
|
10896
|
+
|
|
10826
10897
|
//////////////// Object Generation /////////////////
|
|
10827
10898
|
getComponent(){
|
|
10828
10899
|
if(!this.component){
|
|
@@ -11159,14 +11230,12 @@ class GroupRows extends Module{
|
|
|
11159
11230
|
getRows(rows){
|
|
11160
11231
|
if(this.groupIDLookups.length){
|
|
11161
11232
|
|
|
11162
|
-
|
|
11163
|
-
this.dispatchExternal("dataGrouping");
|
|
11233
|
+
this.dispatchExternal("dataGrouping");
|
|
11164
11234
|
|
|
11165
|
-
|
|
11235
|
+
this.generateGroups(rows);
|
|
11166
11236
|
|
|
11167
|
-
|
|
11168
|
-
|
|
11169
|
-
}
|
|
11237
|
+
if(this.subscribedExternal("dataGrouped")){
|
|
11238
|
+
this.dispatchExternal("dataGrouped", this.getGroups(true));
|
|
11170
11239
|
}
|
|
11171
11240
|
|
|
11172
11241
|
return this.updateGroupRows();
|
|
@@ -11403,6 +11472,7 @@ GroupRows.moduleName = "groupRows";
|
|
|
11403
11472
|
var defaultUndoers = {
|
|
11404
11473
|
cellEdit: function(action){
|
|
11405
11474
|
action.component.setValueProcessData(action.data.oldValue);
|
|
11475
|
+
action.component.cellRendered();
|
|
11406
11476
|
},
|
|
11407
11477
|
|
|
11408
11478
|
rowAdd: function(action){
|
|
@@ -11428,6 +11498,7 @@ var defaultUndoers = {
|
|
|
11428
11498
|
var defaultRedoers = {
|
|
11429
11499
|
cellEdit: function(action){
|
|
11430
11500
|
action.component.setValueProcessData(action.data.newValue);
|
|
11501
|
+
action.component.cellRendered();
|
|
11431
11502
|
},
|
|
11432
11503
|
|
|
11433
11504
|
rowAdd: function(action){
|
|
@@ -11624,17 +11695,17 @@ class HtmlTableImport extends Module{
|
|
|
11624
11695
|
}
|
|
11625
11696
|
|
|
11626
11697
|
initialize(){
|
|
11627
|
-
this.
|
|
11698
|
+
this.tableElementCheck();
|
|
11628
11699
|
}
|
|
11629
11700
|
|
|
11630
11701
|
tableElementCheck(){
|
|
11631
|
-
if(this.table.
|
|
11702
|
+
if(this.table.originalElement && this.table.originalElement.tagName === "TABLE"){
|
|
11632
11703
|
this.parseTable();
|
|
11633
11704
|
}
|
|
11634
11705
|
}
|
|
11635
11706
|
|
|
11636
11707
|
parseTable(){
|
|
11637
|
-
var element = this.table.
|
|
11708
|
+
var element = this.table.originalElement,
|
|
11638
11709
|
options = this.table.options,
|
|
11639
11710
|
columns = options.columns,
|
|
11640
11711
|
headers = element.getElementsByTagName("th"),
|
|
@@ -11678,28 +11749,9 @@ class HtmlTableImport extends Module{
|
|
|
11678
11749
|
data.push(item);
|
|
11679
11750
|
}
|
|
11680
11751
|
|
|
11681
|
-
//create new element
|
|
11682
|
-
var newElement = document.createElement("div");
|
|
11683
|
-
|
|
11684
|
-
//transfer attributes to new element
|
|
11685
|
-
var attributes = element.attributes;
|
|
11686
|
-
|
|
11687
|
-
// loop through attributes and apply them on div
|
|
11688
|
-
|
|
11689
|
-
for(var i in attributes){
|
|
11690
|
-
if(typeof attributes[i] == "object"){
|
|
11691
|
-
newElement.setAttribute(attributes[i].name, attributes[i].value);
|
|
11692
|
-
}
|
|
11693
|
-
}
|
|
11694
|
-
|
|
11695
|
-
// replace table with div element
|
|
11696
|
-
element.parentNode.replaceChild(newElement, element);
|
|
11697
|
-
|
|
11698
11752
|
options.data = data;
|
|
11699
11753
|
|
|
11700
11754
|
this.dispatchExternal("htmlImported");
|
|
11701
|
-
|
|
11702
|
-
this.table.element = newElement;
|
|
11703
11755
|
}
|
|
11704
11756
|
|
|
11705
11757
|
//extract tabulator attribute options
|
|
@@ -11776,7 +11828,7 @@ class HtmlTableImport extends Module{
|
|
|
11776
11828
|
header.attributes;
|
|
11777
11829
|
|
|
11778
11830
|
// //check for tablator inline options
|
|
11779
|
-
this._extractOptions(header, col, Column.prototype.defaultOptionList);
|
|
11831
|
+
this._extractOptions(header, col, Column$1.prototype.defaultOptionList);
|
|
11780
11832
|
|
|
11781
11833
|
this.fieldIndex[index] = col.field;
|
|
11782
11834
|
|
|
@@ -12682,7 +12734,7 @@ class Menu extends Module{
|
|
|
12682
12734
|
|
|
12683
12735
|
this.positionReversedX = false;
|
|
12684
12736
|
}else {
|
|
12685
|
-
parentOffset = Helpers
|
|
12737
|
+
parentOffset = Helpers.elOffset(parentEl);
|
|
12686
12738
|
x = parentOffset.left + parentEl.offsetWidth;
|
|
12687
12739
|
y = parentOffset.top - 1;
|
|
12688
12740
|
}
|
|
@@ -12800,7 +12852,7 @@ class MoveColumns extends Module{
|
|
|
12800
12852
|
|
|
12801
12853
|
config.mousemove = function(e){
|
|
12802
12854
|
if(column.parent === self.moving.parent){
|
|
12803
|
-
if((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers
|
|
12855
|
+
if((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){
|
|
12804
12856
|
if(self.toCol !== column || !self.toColAfter){
|
|
12805
12857
|
colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
|
|
12806
12858
|
self.moveColumn(column, true);
|
|
@@ -12916,7 +12968,7 @@ class MoveColumns extends Module{
|
|
|
12916
12968
|
var element = column.getElement();
|
|
12917
12969
|
|
|
12918
12970
|
this.moving = column;
|
|
12919
|
-
this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers
|
|
12971
|
+
this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;
|
|
12920
12972
|
|
|
12921
12973
|
this.table.element.classList.add("tabulator-block-select");
|
|
12922
12974
|
|
|
@@ -13015,7 +13067,7 @@ class MoveColumns extends Module{
|
|
|
13015
13067
|
moveHover(e){
|
|
13016
13068
|
var columnHolder = this.table.columnManager.getElement(),
|
|
13017
13069
|
scrollLeft = columnHolder.scrollLeft,
|
|
13018
|
-
xPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers
|
|
13070
|
+
xPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,
|
|
13019
13071
|
scrollPos;
|
|
13020
13072
|
|
|
13021
13073
|
this.hoverElement.style.left = (xPos - this.startX) + "px";
|
|
@@ -13117,7 +13169,7 @@ class MoveRows extends Module{
|
|
|
13117
13169
|
|
|
13118
13170
|
//same table drag drop
|
|
13119
13171
|
config.mousemove = function(e){
|
|
13120
|
-
if(((e.pageY - Helpers
|
|
13172
|
+
if(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){
|
|
13121
13173
|
if(self.toRow !== group || !self.toRowAfter){
|
|
13122
13174
|
var rowEl = group.getElement();
|
|
13123
13175
|
rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
|
|
@@ -13151,7 +13203,7 @@ class MoveRows extends Module{
|
|
|
13151
13203
|
config.mousemove = function(e){
|
|
13152
13204
|
var rowEl = row.getElement();
|
|
13153
13205
|
|
|
13154
|
-
if(((e.pageY - Helpers
|
|
13206
|
+
if(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){
|
|
13155
13207
|
if(self.toRow !== row || !self.toRowAfter){
|
|
13156
13208
|
rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
|
|
13157
13209
|
self.moveRow(row, true);
|
|
@@ -13943,6 +13995,8 @@ class Page extends Module{
|
|
|
13943
13995
|
|
|
13944
13996
|
this.table.rowManager.getTableElement().removeChild(testElRow);
|
|
13945
13997
|
}
|
|
13998
|
+
|
|
13999
|
+
this.generatePageSizeSelectList();
|
|
13946
14000
|
}
|
|
13947
14001
|
|
|
13948
14002
|
initialLoadComplete(){
|
|
@@ -14202,8 +14256,6 @@ class Page extends Module{
|
|
|
14202
14256
|
|
|
14203
14257
|
this.page = this.table.options.paginationInitialPage;
|
|
14204
14258
|
this.count = this.table.options.paginationButtonCount;
|
|
14205
|
-
|
|
14206
|
-
this.generatePageSizeSelectList();
|
|
14207
14259
|
}
|
|
14208
14260
|
|
|
14209
14261
|
//set default values
|
|
@@ -15216,7 +15268,8 @@ class ReactiveData extends Module{
|
|
|
15216
15268
|
}
|
|
15217
15269
|
|
|
15218
15270
|
watchData(data){
|
|
15219
|
-
var
|
|
15271
|
+
var self = this,
|
|
15272
|
+
version;
|
|
15220
15273
|
|
|
15221
15274
|
this.currentVersion ++;
|
|
15222
15275
|
|
|
@@ -15232,16 +15285,16 @@ class ReactiveData extends Module{
|
|
|
15232
15285
|
Object.defineProperty(this.data, "push", {
|
|
15233
15286
|
enumerable: false,
|
|
15234
15287
|
configurable: true,
|
|
15235
|
-
value: ()
|
|
15288
|
+
value: function(){
|
|
15236
15289
|
var args = Array.from(arguments);
|
|
15237
15290
|
|
|
15238
|
-
if(!
|
|
15291
|
+
if(!self.blocked && version === self.currentVersion){
|
|
15239
15292
|
args.forEach((arg) => {
|
|
15240
|
-
|
|
15293
|
+
self.table.rowManager.addRowActual(arg, false);
|
|
15241
15294
|
});
|
|
15242
15295
|
}
|
|
15243
15296
|
|
|
15244
|
-
return
|
|
15297
|
+
return self.origFuncs.push.apply(data, arguments);
|
|
15245
15298
|
}
|
|
15246
15299
|
});
|
|
15247
15300
|
|
|
@@ -15251,16 +15304,16 @@ class ReactiveData extends Module{
|
|
|
15251
15304
|
Object.defineProperty(this.data, "unshift", {
|
|
15252
15305
|
enumerable: false,
|
|
15253
15306
|
configurable: true,
|
|
15254
|
-
value: ()
|
|
15307
|
+
value: function(){
|
|
15255
15308
|
var args = Array.from(arguments);
|
|
15256
15309
|
|
|
15257
|
-
if(!
|
|
15310
|
+
if(!self.blocked && version === self.currentVersion){
|
|
15258
15311
|
args.forEach((arg) => {
|
|
15259
|
-
|
|
15312
|
+
self.table.rowManager.addRowActual(arg, true);
|
|
15260
15313
|
});
|
|
15261
15314
|
}
|
|
15262
15315
|
|
|
15263
|
-
return
|
|
15316
|
+
return self.origFuncs.unshift.apply(data, arguments);
|
|
15264
15317
|
}
|
|
15265
15318
|
});
|
|
15266
15319
|
|
|
@@ -15271,12 +15324,12 @@ class ReactiveData extends Module{
|
|
|
15271
15324
|
Object.defineProperty(this.data, "shift", {
|
|
15272
15325
|
enumerable: false,
|
|
15273
15326
|
configurable: true,
|
|
15274
|
-
value: ()
|
|
15327
|
+
value: function(){
|
|
15275
15328
|
var row;
|
|
15276
15329
|
|
|
15277
|
-
if(!
|
|
15278
|
-
if(
|
|
15279
|
-
row =
|
|
15330
|
+
if(!self.blocked && version === self.currentVersion){
|
|
15331
|
+
if(self.data.length){
|
|
15332
|
+
row = self.table.rowManager.getRowFromDataObject(self.data[0]);
|
|
15280
15333
|
|
|
15281
15334
|
if(row){
|
|
15282
15335
|
row.deleteActual();
|
|
@@ -15284,7 +15337,7 @@ class ReactiveData extends Module{
|
|
|
15284
15337
|
}
|
|
15285
15338
|
}
|
|
15286
15339
|
|
|
15287
|
-
return
|
|
15340
|
+
return self.origFuncs.shift.call(data);
|
|
15288
15341
|
}
|
|
15289
15342
|
});
|
|
15290
15343
|
|
|
@@ -15294,18 +15347,18 @@ class ReactiveData extends Module{
|
|
|
15294
15347
|
Object.defineProperty(this.data, "pop", {
|
|
15295
15348
|
enumerable: false,
|
|
15296
15349
|
configurable: true,
|
|
15297
|
-
value: ()
|
|
15350
|
+
value: function(){
|
|
15298
15351
|
var row;
|
|
15299
|
-
if(!
|
|
15300
|
-
if(
|
|
15301
|
-
row =
|
|
15352
|
+
if(!self.blocked && version === self.currentVersion){
|
|
15353
|
+
if(self.data.length){
|
|
15354
|
+
row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
|
|
15302
15355
|
|
|
15303
15356
|
if(row){
|
|
15304
15357
|
row.deleteActual();
|
|
15305
15358
|
}
|
|
15306
15359
|
}
|
|
15307
15360
|
}
|
|
15308
|
-
return
|
|
15361
|
+
return self.origFuncs.pop.call(data);
|
|
15309
15362
|
}
|
|
15310
15363
|
});
|
|
15311
15364
|
|
|
@@ -15316,28 +15369,28 @@ class ReactiveData extends Module{
|
|
|
15316
15369
|
Object.defineProperty(this.data, "splice", {
|
|
15317
15370
|
enumerable: false,
|
|
15318
15371
|
configurable: true,
|
|
15319
|
-
value: ()
|
|
15372
|
+
value: function(){
|
|
15320
15373
|
var args = Array.from(arguments),
|
|
15321
15374
|
start = args[0] < 0 ? data.length + args[0] : args[0],
|
|
15322
15375
|
end = args[1],
|
|
15323
15376
|
newRows = args[2] ? args.slice(2) : false,
|
|
15324
15377
|
startRow;
|
|
15325
15378
|
|
|
15326
|
-
if(!
|
|
15379
|
+
if(!self.blocked && version === self.currentVersion){
|
|
15327
15380
|
|
|
15328
15381
|
//add new rows
|
|
15329
15382
|
if(newRows){
|
|
15330
|
-
startRow = data[start] ?
|
|
15383
|
+
startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
|
|
15331
15384
|
|
|
15332
15385
|
if(startRow){
|
|
15333
15386
|
newRows.forEach((rowData) => {
|
|
15334
|
-
|
|
15387
|
+
self.table.rowManager.addRowActual(rowData, true, startRow, true);
|
|
15335
15388
|
});
|
|
15336
15389
|
}else {
|
|
15337
15390
|
newRows = newRows.slice().reverse();
|
|
15338
15391
|
|
|
15339
15392
|
newRows.forEach((rowData) => {
|
|
15340
|
-
|
|
15393
|
+
self.table.rowManager.addRowActual(rowData, true, false, true);
|
|
15341
15394
|
});
|
|
15342
15395
|
}
|
|
15343
15396
|
}
|
|
@@ -15347,7 +15400,7 @@ class ReactiveData extends Module{
|
|
|
15347
15400
|
var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
|
|
15348
15401
|
|
|
15349
15402
|
oldRows.forEach((rowData, i) => {
|
|
15350
|
-
var row =
|
|
15403
|
+
var row = self.table.rowManager.getRowFromDataObject(rowData);
|
|
15351
15404
|
|
|
15352
15405
|
if(row){
|
|
15353
15406
|
row.deleteActual(i !== oldRows.length - 1);
|
|
@@ -15356,11 +15409,11 @@ class ReactiveData extends Module{
|
|
|
15356
15409
|
}
|
|
15357
15410
|
|
|
15358
15411
|
if(newRows || end !== 0){
|
|
15359
|
-
|
|
15412
|
+
self.table.rowManager.reRenderInPosition();
|
|
15360
15413
|
}
|
|
15361
15414
|
}
|
|
15362
15415
|
|
|
15363
|
-
return
|
|
15416
|
+
return self.origFuncs.splice.apply(data, arguments);
|
|
15364
15417
|
}
|
|
15365
15418
|
});
|
|
15366
15419
|
}
|
|
@@ -16242,10 +16295,14 @@ class ResponsiveLayout extends Module{
|
|
|
16242
16295
|
},
|
|
16243
16296
|
};
|
|
16244
16297
|
|
|
16298
|
+
function onRendered(callback){
|
|
16299
|
+
callback();
|
|
16300
|
+
}
|
|
16301
|
+
|
|
16245
16302
|
output.push({
|
|
16246
16303
|
field: column.field,
|
|
16247
16304
|
title: column.definition.title,
|
|
16248
|
-
value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
|
|
16305
|
+
value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)
|
|
16249
16306
|
});
|
|
16250
16307
|
}else {
|
|
16251
16308
|
output.push({
|
|
@@ -18082,8 +18139,8 @@ class Renderer extends CoreFeature{
|
|
|
18082
18139
|
|
|
18083
18140
|
//check row visibility
|
|
18084
18141
|
if(!ifVisible){
|
|
18085
|
-
if(Helpers
|
|
18086
|
-
offset = Helpers
|
|
18142
|
+
if(Helpers.elVisible(rowEl)){
|
|
18143
|
+
offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;
|
|
18087
18144
|
|
|
18088
18145
|
if(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){
|
|
18089
18146
|
return false;
|
|
@@ -18686,6 +18743,7 @@ class ColumnManager extends CoreFeature {
|
|
|
18686
18743
|
var el = document.createElement("div");
|
|
18687
18744
|
|
|
18688
18745
|
el.classList.add("tabulator-headers");
|
|
18746
|
+
el.setAttribute("role", "row");
|
|
18689
18747
|
|
|
18690
18748
|
return el;
|
|
18691
18749
|
}
|
|
@@ -18694,6 +18752,7 @@ class ColumnManager extends CoreFeature {
|
|
|
18694
18752
|
var el = document.createElement("div");
|
|
18695
18753
|
|
|
18696
18754
|
el.classList.add("tabulator-header");
|
|
18755
|
+
el.setAttribute("role", "rowgroup");
|
|
18697
18756
|
|
|
18698
18757
|
if(!this.table.options.headerVisible){
|
|
18699
18758
|
el.classList.add("tabulator-header-hidden");
|
|
@@ -18852,7 +18911,6 @@ class ColumnManager extends CoreFeature {
|
|
|
18852
18911
|
index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
|
|
18853
18912
|
|
|
18854
18913
|
if(nextToColumn && index > -1){
|
|
18855
|
-
|
|
18856
18914
|
var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
|
|
18857
18915
|
var nextEl = nextToColumn.getElement();
|
|
18858
18916
|
|
|
@@ -18863,7 +18921,6 @@ class ColumnManager extends CoreFeature {
|
|
|
18863
18921
|
this.columns.splice(parentIndex + 1, 0, column);
|
|
18864
18922
|
nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
|
|
18865
18923
|
}
|
|
18866
|
-
|
|
18867
18924
|
}else {
|
|
18868
18925
|
if(before){
|
|
18869
18926
|
this.columns.unshift(column);
|
|
@@ -18872,10 +18929,10 @@ class ColumnManager extends CoreFeature {
|
|
|
18872
18929
|
this.columns.push(column);
|
|
18873
18930
|
this.headersElement.appendChild(column.getElement());
|
|
18874
18931
|
}
|
|
18875
|
-
|
|
18876
|
-
column.columnRendered();
|
|
18877
18932
|
}
|
|
18878
18933
|
|
|
18934
|
+
column.columnRendered();
|
|
18935
|
+
|
|
18879
18936
|
return column;
|
|
18880
18937
|
}
|
|
18881
18938
|
|
|
@@ -18898,7 +18955,7 @@ class ColumnManager extends CoreFeature {
|
|
|
18898
18955
|
}
|
|
18899
18956
|
|
|
18900
18957
|
//ensure column headers take up the correct amount of space in column groups
|
|
18901
|
-
|
|
18958
|
+
verticalAlignHeaders(){
|
|
18902
18959
|
var minHeight = 0;
|
|
18903
18960
|
|
|
18904
18961
|
this.columns.forEach((column) => {
|
|
@@ -19055,7 +19112,7 @@ class ColumnManager extends CoreFeature {
|
|
|
19055
19112
|
to.element.parentNode.insertBefore(to.element, from.element);
|
|
19056
19113
|
}
|
|
19057
19114
|
|
|
19058
|
-
this.
|
|
19115
|
+
this.verticalAlignHeaders();
|
|
19059
19116
|
|
|
19060
19117
|
this.table.rowManager.reinitialize();
|
|
19061
19118
|
}
|
|
@@ -19236,7 +19293,7 @@ class ColumnManager extends CoreFeature {
|
|
|
19236
19293
|
column.reinitializeWidth();
|
|
19237
19294
|
}
|
|
19238
19295
|
|
|
19239
|
-
this.
|
|
19296
|
+
this.verticalAlignHeaders();
|
|
19240
19297
|
|
|
19241
19298
|
this.table.rowManager.reinitialize();
|
|
19242
19299
|
|
|
@@ -19270,18 +19327,18 @@ class ColumnManager extends CoreFeature {
|
|
|
19270
19327
|
this.columns.splice(index, 1);
|
|
19271
19328
|
}
|
|
19272
19329
|
|
|
19273
|
-
this.
|
|
19330
|
+
this.verticalAlignHeaders();
|
|
19274
19331
|
|
|
19275
19332
|
this.redraw();
|
|
19276
19333
|
}
|
|
19277
19334
|
|
|
19278
19335
|
//redraw columns
|
|
19279
19336
|
redraw(force){
|
|
19280
|
-
if(
|
|
19281
|
-
|
|
19282
|
-
|
|
19283
|
-
}
|
|
19337
|
+
if(Helpers.elVisible(this.element)){
|
|
19338
|
+
this.verticalAlignHeaders();
|
|
19339
|
+
}
|
|
19284
19340
|
|
|
19341
|
+
if(force){
|
|
19285
19342
|
this.table.rowManager.resetScroll();
|
|
19286
19343
|
this.table.rowManager.reinitialize();
|
|
19287
19344
|
}
|
|
@@ -19355,7 +19412,7 @@ class BaiscVertical extends Renderer{
|
|
|
19355
19412
|
}
|
|
19356
19413
|
|
|
19357
19414
|
scrollToRowNearestTop(row){
|
|
19358
|
-
var rowTop = Helpers
|
|
19415
|
+
var rowTop = Helpers.elOffset(row.getElement()).top;
|
|
19359
19416
|
|
|
19360
19417
|
return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));
|
|
19361
19418
|
}
|
|
@@ -19363,7 +19420,7 @@ class BaiscVertical extends Renderer{
|
|
|
19363
19420
|
scrollToRow(row){
|
|
19364
19421
|
var rowEl = row.getElement();
|
|
19365
19422
|
|
|
19366
|
-
this.elementVertical.scrollTop = Helpers
|
|
19423
|
+
this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;
|
|
19367
19424
|
}
|
|
19368
19425
|
|
|
19369
19426
|
visibleRows(includingBuffer){
|
|
@@ -19461,6 +19518,10 @@ class VirtualDomVertical extends Renderer{
|
|
|
19461
19518
|
}
|
|
19462
19519
|
}
|
|
19463
19520
|
|
|
19521
|
+
rows.forEach((row) => {
|
|
19522
|
+
row.deinitializeHeight();
|
|
19523
|
+
});
|
|
19524
|
+
|
|
19464
19525
|
if(callback){
|
|
19465
19526
|
callback();
|
|
19466
19527
|
}
|
|
@@ -19621,7 +19682,7 @@ class VirtualDomVertical extends Renderer{
|
|
|
19621
19682
|
position -= topPad;
|
|
19622
19683
|
}
|
|
19623
19684
|
|
|
19624
|
-
if(rowsCount && Helpers
|
|
19685
|
+
if(rowsCount && Helpers.elVisible(this.elementVertical)){
|
|
19625
19686
|
this.vDomTop = position;
|
|
19626
19687
|
|
|
19627
19688
|
this.vDomBottom = position -1;
|
|
@@ -19980,6 +20041,7 @@ class RowManager extends CoreFeature{
|
|
|
19980
20041
|
|
|
19981
20042
|
el.classList.add("tabulator-tableholder");
|
|
19982
20043
|
el.setAttribute("tabindex", 0);
|
|
20044
|
+
el.setAttribute("role", "rowgroup");
|
|
19983
20045
|
|
|
19984
20046
|
return el;
|
|
19985
20047
|
}
|
|
@@ -19988,6 +20050,7 @@ class RowManager extends CoreFeature{
|
|
|
19988
20050
|
var el = document.createElement("div");
|
|
19989
20051
|
|
|
19990
20052
|
el.classList.add("tabulator-table");
|
|
20053
|
+
el.setAttribute("role", "rowgroup");
|
|
19991
20054
|
|
|
19992
20055
|
return el;
|
|
19993
20056
|
}
|
|
@@ -20110,13 +20173,12 @@ class RowManager extends CoreFeature{
|
|
|
20110
20173
|
});
|
|
20111
20174
|
}
|
|
20112
20175
|
}else {
|
|
20113
|
-
if(this.table.options.autoColumns && columnsChanged){
|
|
20176
|
+
if(this.table.options.autoColumns && columnsChanged && this.table.initialized){
|
|
20114
20177
|
this.table.columnManager.generateColumnsFromRowData(data);
|
|
20115
20178
|
}
|
|
20116
20179
|
this.resetScroll();
|
|
20117
20180
|
|
|
20118
20181
|
this._setDataActual(data);
|
|
20119
|
-
|
|
20120
20182
|
}
|
|
20121
20183
|
|
|
20122
20184
|
resolve();
|
|
@@ -20236,7 +20298,7 @@ class RowManager extends CoreFeature{
|
|
|
20236
20298
|
this.dispatch("row-added", row, data, pos, index);
|
|
20237
20299
|
});
|
|
20238
20300
|
|
|
20239
|
-
this.
|
|
20301
|
+
this.refreshActiveData(false, false, true);
|
|
20240
20302
|
|
|
20241
20303
|
this.regenerateRowNumbers();
|
|
20242
20304
|
|
|
@@ -20618,7 +20680,7 @@ class RowManager extends CoreFeature{
|
|
|
20618
20680
|
//case to handle scenario when trying to skip past end stage
|
|
20619
20681
|
}
|
|
20620
20682
|
|
|
20621
|
-
if(Helpers
|
|
20683
|
+
if(Helpers.elVisible(this.element)){
|
|
20622
20684
|
if(renderInPosition){
|
|
20623
20685
|
this.reRenderInPosition();
|
|
20624
20686
|
}else {
|
|
@@ -20781,13 +20843,13 @@ class RowManager extends CoreFeature{
|
|
|
20781
20843
|
}
|
|
20782
20844
|
|
|
20783
20845
|
renderTable(){
|
|
20784
|
-
|
|
20785
20846
|
this.dispatchExternal("renderStarted");
|
|
20786
20847
|
|
|
20787
20848
|
this.element.scrollTop = 0;
|
|
20788
20849
|
|
|
20850
|
+
this._clearTable();
|
|
20851
|
+
|
|
20789
20852
|
if(this.displayRowsCount){
|
|
20790
|
-
this._clearTable();
|
|
20791
20853
|
this.renderer.renderRows();
|
|
20792
20854
|
|
|
20793
20855
|
if(this.firstRender){
|
|
@@ -20978,7 +21040,7 @@ class FooterManager extends CoreFeature{
|
|
|
20978
21040
|
}
|
|
20979
21041
|
|
|
20980
21042
|
initialize(){
|
|
20981
|
-
|
|
21043
|
+
this.initializeElement();
|
|
20982
21044
|
}
|
|
20983
21045
|
|
|
20984
21046
|
createElement (){
|
|
@@ -20989,7 +21051,7 @@ class FooterManager extends CoreFeature{
|
|
|
20989
21051
|
return el;
|
|
20990
21052
|
}
|
|
20991
21053
|
|
|
20992
|
-
initializeElement(
|
|
21054
|
+
initializeElement(){
|
|
20993
21055
|
if(this.table.options.footerElement){
|
|
20994
21056
|
|
|
20995
21057
|
switch(typeof this.table.options.footerElement){
|
|
@@ -21155,6 +21217,7 @@ class InteractionManager extends CoreFeature {
|
|
|
21155
21217
|
if(!listener.handler){
|
|
21156
21218
|
listener.handler = this.track.bind(this, key);
|
|
21157
21219
|
this.el.addEventListener(key, listener.handler);
|
|
21220
|
+
console.log("add", key);
|
|
21158
21221
|
// this.el.addEventListener(key, listener.handler, {passive: true})
|
|
21159
21222
|
}
|
|
21160
21223
|
}else {
|
|
@@ -21390,7 +21453,7 @@ class DataLoader extends CoreFeature{
|
|
|
21390
21453
|
this.hideLoader();
|
|
21391
21454
|
|
|
21392
21455
|
if(rowData !== false){
|
|
21393
|
-
this.dispatchExternal("dataLoaded",
|
|
21456
|
+
this.dispatchExternal("dataLoaded", rowData);
|
|
21394
21457
|
this.table.rowManager.setData(rowData, replace, !replace);
|
|
21395
21458
|
}
|
|
21396
21459
|
}else {
|
|
@@ -21494,7 +21557,8 @@ class DataLoader extends CoreFeature{
|
|
|
21494
21557
|
|
|
21495
21558
|
class ExternalEventBus {
|
|
21496
21559
|
|
|
21497
|
-
constructor(optionsList, debug){
|
|
21560
|
+
constructor(table, optionsList, debug){
|
|
21561
|
+
this.table = table;
|
|
21498
21562
|
this.events = {};
|
|
21499
21563
|
this.optionsList = optionsList || {};
|
|
21500
21564
|
this.subscriptionNotifiers = {};
|
|
@@ -21572,7 +21636,7 @@ class ExternalEventBus {
|
|
|
21572
21636
|
|
|
21573
21637
|
if(this.events[key]){
|
|
21574
21638
|
this.events[key].forEach((callback, i) => {
|
|
21575
|
-
let callResult = callback.apply(this, args);
|
|
21639
|
+
let callResult = callback.apply(this.table, args);
|
|
21576
21640
|
|
|
21577
21641
|
if(!i){
|
|
21578
21642
|
result = callResult;
|
|
@@ -22155,7 +22219,7 @@ class Localize extends Module{
|
|
|
22155
22219
|
}
|
|
22156
22220
|
|
|
22157
22221
|
initialize(){
|
|
22158
|
-
this.langList = Helpers
|
|
22222
|
+
this.langList = Helpers.deepClone(Localize.langs);
|
|
22159
22223
|
|
|
22160
22224
|
if(this.table.options.columnDefaults.headerFilterPlaceholder !== false){
|
|
22161
22225
|
this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);
|
|
@@ -22247,7 +22311,7 @@ class Localize extends Module{
|
|
|
22247
22311
|
this.locale = desiredLocale;
|
|
22248
22312
|
|
|
22249
22313
|
//load default lang template
|
|
22250
|
-
this.lang = Helpers
|
|
22314
|
+
this.lang = Helpers.deepClone(this.langList.default || {});
|
|
22251
22315
|
|
|
22252
22316
|
if(desiredLocale != "default"){
|
|
22253
22317
|
traverseLang(this.langList[desiredLocale], this.lang);
|
|
@@ -22399,7 +22463,7 @@ class ModuleBinder {
|
|
|
22399
22463
|
|
|
22400
22464
|
tabulator.extendModule = function(name, property, values){
|
|
22401
22465
|
if(tabulator.moduleBindings[name]){
|
|
22402
|
-
var source = tabulator.moduleBindings[name]
|
|
22466
|
+
var source = tabulator.moduleBindings[name][property];
|
|
22403
22467
|
|
|
22404
22468
|
if(source){
|
|
22405
22469
|
if(typeof values == "object"){
|
|
@@ -22484,6 +22548,7 @@ class Tabulator {
|
|
|
22484
22548
|
this.browserSlow = false; //handle reduced functionality for slower browsers
|
|
22485
22549
|
this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
|
|
22486
22550
|
this.rtl = false; //check if the table is in RTL mode
|
|
22551
|
+
this.originalElement = null; //hold original table element if it has been replaced
|
|
22487
22552
|
|
|
22488
22553
|
this.componentFunctionBinder = new ComponentFuctionBinder(this); //bind component functions
|
|
22489
22554
|
this.dataLoader = false; //bind component functions
|
|
@@ -22542,7 +22607,7 @@ class Tabulator {
|
|
|
22542
22607
|
|
|
22543
22608
|
this._mapDepricatedFunctionality();
|
|
22544
22609
|
|
|
22545
|
-
this.externalEvents = new ExternalEventBus(this.options, this.options.debugEventsExternal);
|
|
22610
|
+
this.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);
|
|
22546
22611
|
this.eventBus = new InternalEventBus(this.options.debugEventsInternal);
|
|
22547
22612
|
|
|
22548
22613
|
this.interactionMonitor = new InteractionManager(this);
|
|
@@ -22553,27 +22618,6 @@ class Tabulator {
|
|
|
22553
22618
|
this.footerManager.initialize();
|
|
22554
22619
|
}
|
|
22555
22620
|
|
|
22556
|
-
rtlCheck(){
|
|
22557
|
-
var style = window.getComputedStyle(this.element);
|
|
22558
|
-
|
|
22559
|
-
switch(this.options.textDirection){
|
|
22560
|
-
case"auto":
|
|
22561
|
-
if(style.direction !== "rtl"){
|
|
22562
|
-
break;
|
|
22563
|
-
}
|
|
22564
|
-
case "rtl":
|
|
22565
|
-
this.element.classList.add("tabulator-rtl");
|
|
22566
|
-
this.rtl = true;
|
|
22567
|
-
break;
|
|
22568
|
-
|
|
22569
|
-
case "ltr":
|
|
22570
|
-
this.element.classList.add("tabulator-ltr");
|
|
22571
|
-
|
|
22572
|
-
default:
|
|
22573
|
-
this.rtl = false;
|
|
22574
|
-
}
|
|
22575
|
-
}
|
|
22576
|
-
|
|
22577
22621
|
//convert depricated functionality to new functions
|
|
22578
22622
|
_mapDepricatedFunctionality(){
|
|
22579
22623
|
//all previously deprecated functionality removed in the 5.0 release
|
|
@@ -22601,13 +22645,38 @@ class Tabulator {
|
|
|
22601
22645
|
this.externalEvents.dispatch("tableBuilding");
|
|
22602
22646
|
this.eventBus.dispatch("table-building");
|
|
22603
22647
|
|
|
22604
|
-
this.
|
|
22648
|
+
this._rtlCheck();
|
|
22605
22649
|
|
|
22606
22650
|
this._buildElement();
|
|
22607
22651
|
|
|
22652
|
+
this._initializeTable();
|
|
22653
|
+
|
|
22608
22654
|
this._loadInitialData();
|
|
22609
22655
|
|
|
22610
22656
|
this.initialized = true;
|
|
22657
|
+
|
|
22658
|
+
this.externalEvents.dispatch("tableBuilt");
|
|
22659
|
+
}
|
|
22660
|
+
|
|
22661
|
+
_rtlCheck(){
|
|
22662
|
+
var style = window.getComputedStyle(this.element);
|
|
22663
|
+
|
|
22664
|
+
switch(this.options.textDirection){
|
|
22665
|
+
case"auto":
|
|
22666
|
+
if(style.direction !== "rtl"){
|
|
22667
|
+
break;
|
|
22668
|
+
}
|
|
22669
|
+
case "rtl":
|
|
22670
|
+
this.element.classList.add("tabulator-rtl");
|
|
22671
|
+
this.rtl = true;
|
|
22672
|
+
break;
|
|
22673
|
+
|
|
22674
|
+
case "ltr":
|
|
22675
|
+
this.element.classList.add("tabulator-ltr");
|
|
22676
|
+
|
|
22677
|
+
default:
|
|
22678
|
+
this.rtl = false;
|
|
22679
|
+
}
|
|
22611
22680
|
}
|
|
22612
22681
|
|
|
22613
22682
|
//clear pointers to objects in default config object
|
|
@@ -22622,7 +22691,28 @@ class Tabulator {
|
|
|
22622
22691
|
//build tabulator element
|
|
22623
22692
|
_buildElement(){
|
|
22624
22693
|
var element = this.element,
|
|
22625
|
-
options = this.options
|
|
22694
|
+
options = this.options,
|
|
22695
|
+
newElement;
|
|
22696
|
+
|
|
22697
|
+
if(element.tagName === "TABLE"){
|
|
22698
|
+
this.originalElement = this.element;
|
|
22699
|
+
newElement = document.createElement("div");
|
|
22700
|
+
|
|
22701
|
+
//transfer attributes to new element
|
|
22702
|
+
var attributes = element.attributes;
|
|
22703
|
+
|
|
22704
|
+
// loop through attributes and apply them on div
|
|
22705
|
+
for(var i in attributes){
|
|
22706
|
+
if(typeof attributes[i] == "object"){
|
|
22707
|
+
newElement.setAttribute(attributes[i].name, attributes[i].value);
|
|
22708
|
+
}
|
|
22709
|
+
}
|
|
22710
|
+
|
|
22711
|
+
// replace table with div element
|
|
22712
|
+
element.parentNode.replaceChild(newElement, element);
|
|
22713
|
+
|
|
22714
|
+
this.element = element = newElement;
|
|
22715
|
+
}
|
|
22626
22716
|
|
|
22627
22717
|
element.classList.add("tabulator");
|
|
22628
22718
|
element.setAttribute("role", "grid");
|
|
@@ -22647,6 +22737,12 @@ class Tabulator {
|
|
|
22647
22737
|
options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px";
|
|
22648
22738
|
element.style.maxHeight = options.maxHeight;
|
|
22649
22739
|
}
|
|
22740
|
+
}
|
|
22741
|
+
|
|
22742
|
+
//initialize core systems and modules
|
|
22743
|
+
_initializeTable(){
|
|
22744
|
+
var element = this.element,
|
|
22745
|
+
options = this.options;
|
|
22650
22746
|
|
|
22651
22747
|
this.columnManager.initialize();
|
|
22652
22748
|
this.rowManager.initialize();
|
|
@@ -22662,7 +22758,6 @@ class Tabulator {
|
|
|
22662
22758
|
|
|
22663
22759
|
//configure placeholder element
|
|
22664
22760
|
if(typeof options.placeholder == "string"){
|
|
22665
|
-
|
|
22666
22761
|
var el = document.createElement("div");
|
|
22667
22762
|
el.classList.add("tabulator-placeholder");
|
|
22668
22763
|
|
|
@@ -22682,7 +22777,8 @@ class Tabulator {
|
|
|
22682
22777
|
this.footerManager.activate();
|
|
22683
22778
|
}
|
|
22684
22779
|
|
|
22685
|
-
if(options.autoColumns &&
|
|
22780
|
+
if(options.autoColumns && options.data){
|
|
22781
|
+
|
|
22686
22782
|
this.columnManager.generateColumnsFromRowData(this.options.data);
|
|
22687
22783
|
}
|
|
22688
22784
|
|
|
@@ -22696,7 +22792,6 @@ class Tabulator {
|
|
|
22696
22792
|
this.columnManager.setColumns(options.columns);
|
|
22697
22793
|
|
|
22698
22794
|
this.eventBus.dispatch("table-built");
|
|
22699
|
-
this.externalEvents.dispatch("tableBuilt");
|
|
22700
22795
|
}
|
|
22701
22796
|
|
|
22702
22797
|
_loadInitialData(){
|
|
@@ -23088,7 +23183,11 @@ class Tabulator {
|
|
|
23088
23183
|
|
|
23089
23184
|
/////////////// Column Functions ///////////////
|
|
23090
23185
|
setColumns(definition){
|
|
23091
|
-
this.
|
|
23186
|
+
if(this.initialized){
|
|
23187
|
+
this.columnManager.setColumns(definition);
|
|
23188
|
+
}else {
|
|
23189
|
+
console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.");
|
|
23190
|
+
}
|
|
23092
23191
|
}
|
|
23093
23192
|
|
|
23094
23193
|
getColumns(structured){
|