tabulator-tables 5.2.7 → 5.3.2
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/.eslintignore +3 -0
- package/.eslintrc.js +28 -0
- package/.github/workflows/bad-files-check.yml +39 -0
- package/.github/workflows/lint-and-test.yml +31 -0
- package/README.md +3 -3
- package/bower.json +1 -1
- package/build/Bundler.js +77 -77
- package/dist/css/tabulator.css +12 -7
- package/dist/css/tabulator.css.map +1 -1
- package/dist/css/tabulator.min.css +1 -1
- package/dist/css/tabulator.min.css.map +1 -1
- package/dist/css/tabulator_bootstrap3.css +12 -7
- 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 +12 -7
- 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_bootstrap5.css +12 -7
- package/dist/css/tabulator_bootstrap5.css.map +1 -1
- package/dist/css/tabulator_bootstrap5.min.css +1 -1
- package/dist/css/tabulator_bootstrap5.min.css.map +1 -1
- package/dist/css/tabulator_bulma.css +12 -7
- 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_materialize.css +12 -7
- package/dist/css/tabulator_materialize.css.map +1 -1
- package/dist/css/tabulator_materialize.min.css +1 -1
- package/dist/css/tabulator_materialize.min.css.map +1 -1
- package/dist/css/tabulator_midnight.css +12 -7
- package/dist/css/tabulator_midnight.css.map +1 -1
- package/dist/css/tabulator_midnight.min.css +1 -1
- package/dist/css/tabulator_midnight.min.css.map +1 -1
- package/dist/css/tabulator_modern.css +12 -7
- package/dist/css/tabulator_modern.css.map +1 -1
- package/dist/css/tabulator_modern.min.css +1 -1
- package/dist/css/tabulator_modern.min.css.map +1 -1
- package/dist/css/tabulator_semanticui.css +12 -7
- 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/css/tabulator_simple.css +12 -7
- package/dist/css/tabulator_simple.css.map +1 -1
- package/dist/css/tabulator_simple.min.css +1 -1
- package/dist/css/tabulator_simple.min.css.map +1 -1
- package/dist/css/tabulator_site.css +12 -7
- package/dist/css/tabulator_site.css.map +1 -1
- package/dist/css/tabulator_site.min.css +1 -1
- package/dist/css/tabulator_site.min.css.map +1 -1
- package/dist/js/jquery_wrapper.js +37 -37
- package/dist/js/tabulator.js +1551 -793
- 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 +4300 -3581
- 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 +4 -1
- package/src/js/builds/jquery_wrapper.js +37 -37
- package/src/js/core/ColumnManager.js +270 -232
- package/src/js/core/CoreFeature.js +16 -2
- package/src/js/core/FooterManager.js +10 -10
- package/src/js/core/Module.js +8 -8
- package/src/js/core/RowManager.js +139 -156
- package/src/js/core/Tabulator.js +88 -74
- package/src/js/core/TabulatorFull.js +1 -1
- package/src/js/core/cell/Cell.js +15 -16
- package/src/js/core/cell/CellComponent.js +2 -2
- package/src/js/core/column/Column.js +81 -68
- package/src/js/core/column/ColumnComponent.js +4 -4
- package/src/js/core/column/defaults/options.js +1 -1
- package/src/js/core/defaults/options.js +4 -2
- package/src/js/core/rendering/Renderer.js +19 -19
- package/src/js/core/rendering/renderers/BasicHorizontal.js +1 -2
- package/src/js/core/rendering/renderers/BasicVertical.js +1 -1
- package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +42 -58
- package/src/js/core/rendering/renderers/VirtualDomVertical.js +31 -22
- package/src/js/core/row/Row.js +32 -8
- package/src/js/core/row/RowComponent.js +8 -4
- package/src/js/core/tools/Alert.js +44 -45
- package/src/js/core/tools/ComponentFunctionBinder.js +4 -2
- package/src/js/core/tools/DataLoader.js +3 -3
- package/src/js/core/tools/DeprecationAdvisor.js +47 -0
- package/src/js/core/tools/ExternalEventBus.js +5 -5
- package/src/js/core/tools/InteractionMonitor.js +41 -39
- package/src/js/core/tools/InternalEventBus.js +5 -5
- package/src/js/core/tools/ModuleBinder.js +6 -6
- package/src/js/core/tools/OptionsList.js +4 -4
- package/src/js/core/tools/Popup.js +211 -202
- package/src/js/modules/Accessor/Accessor.js +16 -16
- package/src/js/modules/Accessor/defaults/accessors.js +1 -1
- package/src/js/modules/Ajax/Ajax.js +7 -7
- package/src/js/modules/Ajax/defaults/loaderPromise.js +19 -19
- package/src/js/modules/Ajax/defaults/urlGenerator.js +1 -1
- package/src/js/modules/Clipboard/Clipboard.js +23 -23
- package/src/js/modules/Clipboard/defaults/pasteParsers.js +0 -2
- package/src/js/modules/ColumnCalcs/CalcComponent.js +2 -2
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +55 -51
- package/src/js/modules/ColumnCalcs/defaults/calculations.js +1 -1
- package/src/js/modules/DataTree/DataTree.js +24 -15
- package/src/js/modules/Download/Download.js +15 -8
- package/src/js/modules/Download/defaults/downloaders/csv.js +28 -28
- package/src/js/modules/Download/defaults/downloaders/html.js +2 -2
- package/src/js/modules/Download/defaults/downloaders/json.js +14 -14
- package/src/js/modules/Download/defaults/downloaders/jsonLines.js +1 -1
- package/src/js/modules/Download/defaults/downloaders/pdf.js +17 -19
- package/src/js/modules/Download/defaults/downloaders/xlsx.js +2 -2
- package/src/js/modules/Edit/Edit.js +219 -201
- package/src/js/modules/Edit/List.js +1026 -1006
- package/src/js/modules/Edit/defaults/editors/autocomplete.js +3 -3
- package/src/js/modules/Edit/defaults/editors/date.js +110 -0
- package/src/js/modules/Edit/defaults/editors/datetime.js +97 -0
- package/src/js/modules/Edit/defaults/editors/input.js +7 -7
- package/src/js/modules/Edit/defaults/editors/list.js +2 -2
- package/src/js/modules/Edit/defaults/editors/number.js +12 -12
- package/src/js/modules/Edit/defaults/editors/progress.js +11 -11
- package/src/js/modules/Edit/defaults/editors/range.js +5 -5
- package/src/js/modules/Edit/defaults/editors/select.js +3 -3
- package/src/js/modules/Edit/defaults/editors/star.js +9 -9
- package/src/js/modules/Edit/defaults/editors/textarea.js +97 -92
- package/src/js/modules/Edit/defaults/editors/tickCross.js +1 -3
- package/src/js/modules/Edit/defaults/editors/time.js +98 -0
- package/src/js/modules/Edit/defaults/editors.js +8 -2
- package/src/js/modules/Edit/inputMask.js +19 -26
- package/src/js/modules/Export/Export.js +69 -65
- package/src/js/modules/Filter/Filter.js +88 -95
- package/src/js/modules/Format/Format.js +24 -26
- package/src/js/modules/Format/defaults/formatters/buttonCross.js +1 -1
- package/src/js/modules/Format/defaults/formatters/buttonTick.js +1 -1
- package/src/js/modules/Format/defaults/formatters/color.js +1 -1
- package/src/js/modules/Format/defaults/formatters/datetime.js +7 -7
- package/src/js/modules/Format/defaults/formatters/datetimediff.js +7 -7
- package/src/js/modules/Format/defaults/formatters/handle.js +1 -1
- package/src/js/modules/Format/defaults/formatters/html.js +1 -1
- package/src/js/modules/Format/defaults/formatters/image.js +9 -9
- package/src/js/modules/Format/defaults/formatters/link.js +10 -10
- package/src/js/modules/Format/defaults/formatters/lookup.js +1 -1
- package/src/js/modules/Format/defaults/formatters/money.js +1 -1
- package/src/js/modules/Format/defaults/formatters/plaintext.js +1 -1
- package/src/js/modules/Format/defaults/formatters/progress.js +41 -42
- package/src/js/modules/Format/defaults/formatters/responsiveCollapse.js +3 -3
- package/src/js/modules/Format/defaults/formatters/rowSelection.js +1 -1
- package/src/js/modules/Format/defaults/formatters/rownum.js +9 -2
- package/src/js/modules/Format/defaults/formatters/star.js +1 -1
- package/src/js/modules/Format/defaults/formatters/textarea.js +1 -1
- package/src/js/modules/Format/defaults/formatters/tickCross.js +1 -1
- package/src/js/modules/Format/defaults/formatters/traffic.js +14 -14
- package/src/js/modules/FrozenColumns/FrozenColumns.js +6 -8
- package/src/js/modules/FrozenRows/FrozenRows.js +37 -7
- package/src/js/modules/GroupRows/Group.js +7 -7
- package/src/js/modules/GroupRows/GroupComponent.js +2 -2
- package/src/js/modules/GroupRows/GroupRows.js +34 -11
- package/src/js/modules/History/History.js +2 -2
- package/src/js/modules/HtmlTableImport/HtmlTableImport.js +3 -6
- package/src/js/modules/Import/Import.js +158 -159
- package/src/js/modules/Import/defaults/importers/array.js +5 -0
- package/src/js/modules/Import/defaults/importers/csv.js +49 -49
- package/src/js/modules/Import/defaults/importers/json.js +6 -6
- package/src/js/modules/Import/defaults/importers.js +2 -0
- package/src/js/modules/Interaction/Interaction.js +42 -43
- package/src/js/modules/Keybindings/Keybindings.js +14 -14
- package/src/js/modules/Keybindings/defaults/actions.js +1 -2
- package/src/js/modules/Layout/Layout.js +4 -5
- package/src/js/modules/Layout/defaults/modes/fitColumns.js +13 -16
- package/src/js/modules/Layout/defaults/modes/fitData.js +6 -4
- package/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +2 -2
- package/src/js/modules/Layout/defaults/modes/fitDataStretch.js +2 -2
- package/src/js/modules/Localize/Localize.js +7 -7
- package/src/js/modules/Menu/Menu.js +8 -11
- package/src/js/modules/MoveColumns/MoveColumns.js +3 -6
- package/src/js/modules/MoveRows/MoveRows.js +30 -36
- package/src/js/modules/Mutator/Mutator.js +9 -9
- package/src/js/modules/Page/Page.js +73 -80
- package/src/js/modules/Page/defaults/pageCounters/pages.js +2 -2
- package/src/js/modules/Page/defaults/pageCounters/rows.js +1 -1
- package/src/js/modules/Persistence/Persistence.js +40 -44
- package/src/js/modules/Persistence/defaults/readers.js +1 -1
- package/src/js/modules/Popup/Popup.js +4 -5
- package/src/js/modules/Print/Print.js +2 -2
- package/src/js/modules/ReactiveData/ReactiveData.js +178 -115
- package/src/js/modules/ResizeColumns/ResizeColumns.js +3 -3
- package/src/js/modules/ResizeRows/ResizeRows.js +1 -1
- package/src/js/modules/ResizeTable/ResizeTable.js +77 -46
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +3 -5
- package/src/js/modules/SelectRow/SelectRow.js +26 -28
- package/src/js/modules/Sort/Sort.js +113 -85
- package/src/js/modules/Sort/defaults/sorters/alphanum.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/array.js +24 -28
- package/src/js/modules/Sort/defaults/sorters/boolean.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/date.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/datetime.js +13 -13
- package/src/js/modules/Sort/defaults/sorters/exists.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/number.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/string.js +7 -7
- package/src/js/modules/Sort/defaults/sorters/time.js +1 -1
- package/src/js/modules/Tooltip/Tooltip.js +5 -7
- package/src/js/modules/Validate/Validate.js +10 -13
- package/src/js/modules/Validate/defaults/validators.js +8 -3
- package/src/scss/tabulator.scss +28 -17
- package/src/scss/themes/bootstrap/functions4.scss +1 -1
- package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +8 -8
- package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +8 -8
- package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +8 -8
- package/src/scss/themes/bulma/tabulator_bulma.scss +7 -7
- package/src/scss/themes/materialize/tabulator_materialize.scss +6 -6
- package/src/scss/themes/materialize/variables.scss +1 -1
- package/src/scss/themes/semanticui/tabulator_semanticui.scss +7 -7
- package/src/scss/themes/tabulator_midnight.scss +7 -7
- package/src/scss/themes/tabulator_modern.scss +14 -14
- package/src/scss/themes/tabulator_simple.scss +8 -8
- package/src/scss/themes/tabulator_site.scss +15 -15
|
@@ -39,12 +39,12 @@ class Column extends CoreFeature{
|
|
|
39
39
|
this.modules = {}; //hold module variables;
|
|
40
40
|
|
|
41
41
|
this.width = null; //column width
|
|
42
|
-
this.widthStyled = ""; //column width
|
|
42
|
+
this.widthStyled = ""; //column width pre-styled to improve render efficiency
|
|
43
43
|
this.maxWidth = null; //column maximum width
|
|
44
|
-
this.maxWidthStyled = ""; //column maximum
|
|
44
|
+
this.maxWidthStyled = ""; //column maximum pre-styled to improve render efficiency
|
|
45
45
|
this.maxInitialWidth = null;
|
|
46
46
|
this.minWidth = null; //column minimum width
|
|
47
|
-
this.minWidthStyled = ""; //column minimum
|
|
47
|
+
this.minWidthStyled = ""; //column minimum pre-styled to improve render efficiency
|
|
48
48
|
this.widthFixed = false; //user has specified a width for this column
|
|
49
49
|
|
|
50
50
|
this.visible = true; //default visible state
|
|
@@ -67,8 +67,6 @@ class Column extends CoreFeature{
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
this._initialize();
|
|
70
|
-
|
|
71
|
-
this.bindModuleColumns();
|
|
72
70
|
}
|
|
73
71
|
|
|
74
72
|
createElement (){
|
|
@@ -78,6 +76,15 @@ class Column extends CoreFeature{
|
|
|
78
76
|
el.setAttribute("role", "columnheader");
|
|
79
77
|
el.setAttribute("aria-sort", "none");
|
|
80
78
|
|
|
79
|
+
switch(this.table.options.columnHeaderVertAlign){
|
|
80
|
+
case "middle":
|
|
81
|
+
el.style.justifyContent = "center";
|
|
82
|
+
break;
|
|
83
|
+
case "bottom":
|
|
84
|
+
el.style.justifyContent = "flex-end";
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
|
|
81
88
|
return el;
|
|
82
89
|
}
|
|
83
90
|
|
|
@@ -101,13 +108,13 @@ class Column extends CoreFeature{
|
|
|
101
108
|
}
|
|
102
109
|
}
|
|
103
110
|
|
|
104
|
-
this.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)
|
|
111
|
+
this.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition);
|
|
105
112
|
}
|
|
106
113
|
|
|
107
114
|
checkDefinition(){
|
|
108
115
|
Object.keys(this.definition).forEach((key) => {
|
|
109
116
|
if(Column.defaultOptionList.indexOf(key) === -1){
|
|
110
|
-
console.warn("Invalid column definition option in '" + (this.field || this.definition.title) + "' column:", key)
|
|
117
|
+
console.warn("Invalid column definition option in '" + (this.field || this.definition.title) + "' column:", key);
|
|
111
118
|
}
|
|
112
119
|
});
|
|
113
120
|
}
|
|
@@ -140,10 +147,6 @@ class Column extends CoreFeature{
|
|
|
140
147
|
}
|
|
141
148
|
}
|
|
142
149
|
|
|
143
|
-
_mapDepricatedFunctionality(){
|
|
144
|
-
//all previously deprecated functionality removed in the 5.0 release
|
|
145
|
-
}
|
|
146
|
-
|
|
147
150
|
//build header element
|
|
148
151
|
_initialize(){
|
|
149
152
|
var def = this.definition;
|
|
@@ -173,8 +176,7 @@ class Column extends CoreFeature{
|
|
|
173
176
|
|
|
174
177
|
//build header element for header
|
|
175
178
|
_buildColumnHeader(){
|
|
176
|
-
var def = this.definition
|
|
177
|
-
table = this.table;
|
|
179
|
+
var def = this.definition;
|
|
178
180
|
|
|
179
181
|
this.dispatch("column-layout", this);
|
|
180
182
|
|
|
@@ -187,10 +189,10 @@ class Column extends CoreFeature{
|
|
|
187
189
|
}
|
|
188
190
|
}
|
|
189
191
|
|
|
190
|
-
//
|
|
192
|
+
//assign additional css classes to column header
|
|
191
193
|
if(def.cssClass){
|
|
192
|
-
var
|
|
193
|
-
|
|
194
|
+
var classNames = def.cssClass.split(" ");
|
|
195
|
+
classNames.forEach((className) => {
|
|
194
196
|
this.element.classList.add(className);
|
|
195
197
|
});
|
|
196
198
|
}
|
|
@@ -212,7 +214,7 @@ class Column extends CoreFeature{
|
|
|
212
214
|
|
|
213
215
|
this.reinitializeWidth();
|
|
214
216
|
|
|
215
|
-
//set
|
|
217
|
+
//set horizontal text alignment
|
|
216
218
|
this.hozAlign = this.definition.hozAlign;
|
|
217
219
|
this.vertAlign = this.definition.vertAlign;
|
|
218
220
|
|
|
@@ -220,9 +222,6 @@ class Column extends CoreFeature{
|
|
|
220
222
|
}
|
|
221
223
|
|
|
222
224
|
_buildColumnHeaderContent(){
|
|
223
|
-
var def = this.definition,
|
|
224
|
-
table = this.table;
|
|
225
|
-
|
|
226
225
|
var contentElement = document.createElement("div");
|
|
227
226
|
contentElement.classList.add("tabulator-col-content");
|
|
228
227
|
|
|
@@ -240,8 +239,7 @@ class Column extends CoreFeature{
|
|
|
240
239
|
|
|
241
240
|
//build title element of column
|
|
242
241
|
_buildColumnHeaderTitle(){
|
|
243
|
-
var def = this.definition
|
|
244
|
-
title;
|
|
242
|
+
var def = this.definition;
|
|
245
243
|
|
|
246
244
|
var titleHolderElement = document.createElement("div");
|
|
247
245
|
titleHolderElement.classList.add("tabulator-col-title");
|
|
@@ -290,18 +288,18 @@ class Column extends CoreFeature{
|
|
|
290
288
|
|
|
291
289
|
switch(typeof contents){
|
|
292
290
|
case "object":
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
291
|
+
if(contents instanceof Node){
|
|
292
|
+
el.appendChild(contents);
|
|
293
|
+
}else{
|
|
294
|
+
el.innerHTML = "";
|
|
295
|
+
console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents);
|
|
296
|
+
}
|
|
297
|
+
break;
|
|
300
298
|
case "undefined":
|
|
301
|
-
|
|
302
|
-
|
|
299
|
+
el.innerHTML = "";
|
|
300
|
+
break;
|
|
303
301
|
default:
|
|
304
|
-
|
|
302
|
+
el.innerHTML = contents;
|
|
305
303
|
}
|
|
306
304
|
}
|
|
307
305
|
|
|
@@ -313,8 +311,8 @@ class Column extends CoreFeature{
|
|
|
313
311
|
|
|
314
312
|
//asign additional css classes to column header
|
|
315
313
|
if(this.definition.cssClass){
|
|
316
|
-
var
|
|
317
|
-
|
|
314
|
+
var classNames = this.definition.cssClass.split(" ");
|
|
315
|
+
classNames.forEach((className) => {
|
|
318
316
|
this.element.classList.add(className);
|
|
319
317
|
});
|
|
320
318
|
}
|
|
@@ -409,20 +407,20 @@ class Column extends CoreFeature{
|
|
|
409
407
|
}
|
|
410
408
|
|
|
411
409
|
//vertically align cell contents
|
|
412
|
-
if(!this.isGroup && alignment !== "top"){
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
}
|
|
410
|
+
// if(!this.isGroup && alignment !== "top"){
|
|
411
|
+
// if(alignment === "bottom"){
|
|
412
|
+
// this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + "px";
|
|
413
|
+
// }else{
|
|
414
|
+
// this.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + "px";
|
|
415
|
+
// }
|
|
416
|
+
// }
|
|
419
417
|
|
|
420
418
|
this.columns.forEach(function(column){
|
|
421
419
|
column.verticalAlign(alignment);
|
|
422
420
|
});
|
|
423
421
|
}
|
|
424
422
|
|
|
425
|
-
//clear vertical
|
|
423
|
+
//clear vertical alignment
|
|
426
424
|
clearVerticalAlign(){
|
|
427
425
|
this.element.style.paddingTop = "";
|
|
428
426
|
this.element.style.height = "";
|
|
@@ -436,20 +434,13 @@ class Column extends CoreFeature{
|
|
|
436
434
|
this.dispatch("column-height", this, "");
|
|
437
435
|
}
|
|
438
436
|
|
|
439
|
-
|
|
440
|
-
//check if rownum formatter is being used on a column
|
|
441
|
-
if(this.definition.formatter == "rownum"){
|
|
442
|
-
this.table.rowManager.rowNumColumn = this;
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
//// Retreive Column Information ////
|
|
437
|
+
//// Retrieve Column Information ////
|
|
447
438
|
//return column header element
|
|
448
439
|
getElement(){
|
|
449
440
|
return this.element;
|
|
450
441
|
}
|
|
451
442
|
|
|
452
|
-
//return
|
|
443
|
+
//return column group element
|
|
453
444
|
getGroupElement(){
|
|
454
445
|
return this.groupElement;
|
|
455
446
|
}
|
|
@@ -490,8 +481,20 @@ class Column extends CoreFeature{
|
|
|
490
481
|
}
|
|
491
482
|
|
|
492
483
|
//return all columns in a group
|
|
493
|
-
getColumns(){
|
|
494
|
-
|
|
484
|
+
getColumns(traverse){
|
|
485
|
+
var columns = [];
|
|
486
|
+
|
|
487
|
+
if(traverse){
|
|
488
|
+
this.columns.forEach((column) => {
|
|
489
|
+
columns.push(column);
|
|
490
|
+
|
|
491
|
+
columns = columns.concat(column.getColumns(true));
|
|
492
|
+
});
|
|
493
|
+
}else{
|
|
494
|
+
columns = this.columns;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
return columns;
|
|
495
498
|
}
|
|
496
499
|
|
|
497
500
|
//return all columns in a group
|
|
@@ -499,7 +502,7 @@ class Column extends CoreFeature{
|
|
|
499
502
|
return this.cells;
|
|
500
503
|
}
|
|
501
504
|
|
|
502
|
-
//
|
|
505
|
+
//retrieve the top column in a group of columns
|
|
503
506
|
getTopColumn(){
|
|
504
507
|
if(this.parent.isGroup){
|
|
505
508
|
return this.parent.getTopColumn();
|
|
@@ -573,7 +576,7 @@ class Column extends CoreFeature{
|
|
|
573
576
|
}
|
|
574
577
|
|
|
575
578
|
if(!this.silent){
|
|
576
|
-
this.table.columnManager.
|
|
579
|
+
this.table.columnManager.rerenderColumns();
|
|
577
580
|
}
|
|
578
581
|
}
|
|
579
582
|
}
|
|
@@ -606,7 +609,7 @@ class Column extends CoreFeature{
|
|
|
606
609
|
}
|
|
607
610
|
|
|
608
611
|
if(!this.silent){
|
|
609
|
-
this.table.columnManager.
|
|
612
|
+
this.table.columnManager.rerenderColumns();
|
|
610
613
|
}
|
|
611
614
|
}
|
|
612
615
|
}
|
|
@@ -719,6 +722,12 @@ class Column extends CoreFeature{
|
|
|
719
722
|
}
|
|
720
723
|
|
|
721
724
|
setMinWidth(minWidth){
|
|
725
|
+
if(this.maxWidth && minWidth > this.maxWidth){
|
|
726
|
+
minWidth = this.maxWidth;
|
|
727
|
+
|
|
728
|
+
console.warn("the minWidth ("+ minWidth + "px) for column '" + this.field + "' cannot be bigger that its maxWidth ("+ this.maxWidthStyled + ")");
|
|
729
|
+
}
|
|
730
|
+
|
|
722
731
|
this.minWidth = minWidth;
|
|
723
732
|
this.minWidthStyled = minWidth ? minWidth + "px" : "";
|
|
724
733
|
|
|
@@ -730,6 +739,12 @@ class Column extends CoreFeature{
|
|
|
730
739
|
}
|
|
731
740
|
|
|
732
741
|
setMaxWidth(maxWidth){
|
|
742
|
+
if(this.minWidth && maxWidth < this.minWidth){
|
|
743
|
+
maxWidth = this.minWidth;
|
|
744
|
+
|
|
745
|
+
console.warn("the maxWidth ("+ maxWidth + "px) for column '" + this.field + "' cannot be smaller that its minWidth ("+ this.minWidthStyled + ")");
|
|
746
|
+
}
|
|
747
|
+
|
|
733
748
|
this.maxWidth = maxWidth;
|
|
734
749
|
this.maxWidthStyled = maxWidth ? maxWidth + "px" : "";
|
|
735
750
|
|
|
@@ -742,8 +757,6 @@ class Column extends CoreFeature{
|
|
|
742
757
|
|
|
743
758
|
delete(){
|
|
744
759
|
return new Promise((resolve, reject) => {
|
|
745
|
-
var index;
|
|
746
|
-
|
|
747
760
|
if(this.isGroup){
|
|
748
761
|
this.columns.forEach(function(column){
|
|
749
762
|
column.delete();
|
|
@@ -773,7 +786,7 @@ class Column extends CoreFeature{
|
|
|
773
786
|
|
|
774
787
|
this.table.columnManager.deregisterColumn(this);
|
|
775
788
|
|
|
776
|
-
this.table.columnManager.
|
|
789
|
+
this.table.columnManager.rerenderColumns(true);
|
|
777
790
|
|
|
778
791
|
resolve();
|
|
779
792
|
});
|
|
@@ -877,18 +890,18 @@ class Column extends CoreFeature{
|
|
|
877
890
|
definition = Object.assign(definition, updates);
|
|
878
891
|
|
|
879
892
|
return this.table.columnManager.addColumn(definition, false, this)
|
|
880
|
-
|
|
893
|
+
.then((column) => {
|
|
881
894
|
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
895
|
+
if(definition.field == this.field){
|
|
896
|
+
this.field = false; //clear field name to prevent deletion of duplicate column from arrays
|
|
897
|
+
}
|
|
885
898
|
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
899
|
+
return this.delete()
|
|
900
|
+
.then(() => {
|
|
901
|
+
return column.getComponent();
|
|
902
|
+
});
|
|
890
903
|
|
|
891
|
-
|
|
904
|
+
});
|
|
892
905
|
}else{
|
|
893
906
|
console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns");
|
|
894
907
|
return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups");
|
|
@@ -11,10 +11,10 @@ export default class ColumnComponent {
|
|
|
11
11
|
if (typeof target[name] !== "undefined") {
|
|
12
12
|
return target[name];
|
|
13
13
|
}else{
|
|
14
|
-
return target._column.table.componentFunctionBinder.handle("column", target._column, name)
|
|
14
|
+
return target._column.table.componentFunctionBinder.handle("column", target._column, name);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
})
|
|
17
|
+
});
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
getElement(){
|
|
@@ -111,7 +111,7 @@ export default class ColumnComponent {
|
|
|
111
111
|
var toColumn = this._column.table.columnManager.findColumn(to);
|
|
112
112
|
|
|
113
113
|
if(toColumn){
|
|
114
|
-
this._column.table.columnManager.moveColumn(this._column, toColumn, after)
|
|
114
|
+
this._column.table.columnManager.moveColumn(this._column, toColumn, after);
|
|
115
115
|
}else{
|
|
116
116
|
console.warn("Move Error - No matching column found:", toColumn);
|
|
117
117
|
}
|
|
@@ -146,7 +146,7 @@ export default class ColumnComponent {
|
|
|
146
146
|
result = this._column.setWidth(width);
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
this._column.table.columnManager.
|
|
149
|
+
this._column.table.columnManager.rerenderColumns(true);
|
|
150
150
|
|
|
151
151
|
return result;
|
|
152
152
|
}
|
|
@@ -3,7 +3,9 @@ export default {
|
|
|
3
3
|
debugEventsExternal:false, //flag to console log events
|
|
4
4
|
debugEventsInternal:false, //flag to console log events
|
|
5
5
|
debugInvalidOptions:true, //allow toggling of invalid option warnings
|
|
6
|
-
|
|
6
|
+
debugInvalidComponentFuncs:true, //allow toggling of invalid component warnings
|
|
7
|
+
debugInitialization:true, //allow toggling of pre initialization function call warnings
|
|
8
|
+
debugDeprecation:true, //allow toggling of deprecation warnings
|
|
7
9
|
|
|
8
10
|
height:false, //height of tabulator
|
|
9
11
|
minHeight:false, //minimum height of tabulator
|
|
@@ -60,4 +62,4 @@ export default {
|
|
|
60
62
|
dataSendParams:{},
|
|
61
63
|
|
|
62
64
|
dataReceiveParams:{},
|
|
63
|
-
}
|
|
65
|
+
};
|
|
@@ -9,7 +9,7 @@ export default class Renderer extends CoreFeature{
|
|
|
9
9
|
this.elementHorizontal = table.columnManager.element;
|
|
10
10
|
this.tableElement = table.rowManager.tableElement;
|
|
11
11
|
|
|
12
|
-
this.verticalFillMode = "fit"; // used by row manager to
|
|
12
|
+
this.verticalFillMode = "fit"; // used by row manager to determine how to size the render area ("fit" - fits container to the contents, "fill" - fills the container without resizing it)
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
|
|
@@ -67,11 +67,11 @@ export default class Renderer extends CoreFeature{
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
scrollRows(top, dir){
|
|
70
|
-
//handle vertical
|
|
70
|
+
//handle vertical scrolling
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
resize(){
|
|
74
|
-
//container has
|
|
74
|
+
//container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
scrollToRow(row){
|
|
@@ -79,7 +79,7 @@ export default class Renderer extends CoreFeature{
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
scrollToRowNearestTop(row){
|
|
82
|
-
//determine weather the row is nearest the top or bottom of the table,
|
|
82
|
+
//determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
visibleRows(includingBuffer){
|
|
@@ -159,7 +159,7 @@ export default class Renderer extends CoreFeature{
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
if(position === "nearest"){
|
|
162
|
-
position = this.scrollToRowNearestTop(row) ? "top" : "bottom"
|
|
162
|
+
position = this.scrollToRowNearestTop(row) ? "top" : "bottom";
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
//scroll to row
|
|
@@ -170,27 +170,27 @@ export default class Renderer extends CoreFeature{
|
|
|
170
170
|
case "middle":
|
|
171
171
|
case "center":
|
|
172
172
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
173
|
+
if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){
|
|
174
|
+
this.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);
|
|
175
|
+
}else{
|
|
176
|
+
this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);
|
|
177
|
+
}
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
break;
|
|
180
180
|
|
|
181
181
|
case "bottom":
|
|
182
182
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
183
|
+
if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){
|
|
184
|
+
this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
|
|
185
|
+
}else{
|
|
186
|
+
this.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;
|
|
187
|
+
}
|
|
188
188
|
|
|
189
|
-
|
|
189
|
+
break;
|
|
190
190
|
|
|
191
191
|
case "top":
|
|
192
|
-
|
|
193
|
-
|
|
192
|
+
this.elementVertical.scrollTop = rowEl.offsetTop;
|
|
193
|
+
break;
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
resolve();
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import Renderer from '../Renderer.js';
|
|
2
|
-
import Helpers from '../../tools/Helpers.js';
|
|
3
2
|
|
|
4
3
|
export default class VirtualDomHorizontal extends Renderer{
|
|
5
4
|
constructor(table){
|
|
@@ -235,9 +234,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
235
234
|
|
|
236
235
|
dataChange(){
|
|
237
236
|
var change = false,
|
|
238
|
-
|
|
239
|
-
colEnd = 0,
|
|
240
|
-
group, row, rowEl;
|
|
237
|
+
row, rowEl;
|
|
241
238
|
|
|
242
239
|
if(this.isFitData){
|
|
243
240
|
this.table.columnManager.columnsByIndex.forEach((column) => {
|
|
@@ -246,46 +243,30 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
246
243
|
}
|
|
247
244
|
});
|
|
248
245
|
|
|
249
|
-
if(change){
|
|
250
|
-
|
|
246
|
+
if(change && this.table.rowManager.getDisplayRows().length){
|
|
247
|
+
this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;
|
|
248
|
+
|
|
249
|
+
row = this.chain("rows-sample", [1], [], () => {
|
|
250
|
+
return this.table.rowManager.getDisplayRows();
|
|
251
|
+
})[0];
|
|
252
|
+
|
|
253
|
+
if(row){
|
|
254
|
+
rowEl = row.getElement();
|
|
251
255
|
|
|
252
|
-
|
|
256
|
+
row.generateCells();
|
|
253
257
|
|
|
254
|
-
|
|
255
|
-
return this.table.rowManager.getDisplayRows();
|
|
256
|
-
})[0];
|
|
258
|
+
this.tableElement.appendChild(rowEl);
|
|
257
259
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
rowEl
|
|
261
|
-
|
|
262
|
-
row.generateCells();
|
|
263
|
-
|
|
264
|
-
this.tableElement.appendChild(rowEl);
|
|
265
|
-
|
|
266
|
-
for(var colEnd = 0; colEnd < row.cells.length; colEnd++){
|
|
267
|
-
let cell = row.cells[colEnd];
|
|
268
|
-
rowEl.appendChild(cell.getElement());
|
|
269
|
-
|
|
270
|
-
cell.column.reinitializeWidth();
|
|
271
|
-
|
|
272
|
-
collsWidth += cell.column.getWidth();
|
|
273
|
-
|
|
274
|
-
// if(collsWidth > this.vDomScrollPosRight){
|
|
275
|
-
// break;
|
|
276
|
-
// }
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
rowEl.parentNode.removeChild(rowEl);
|
|
280
|
-
|
|
281
|
-
// this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));
|
|
260
|
+
for(let colEnd = 0; colEnd < row.cells.length; colEnd++){
|
|
261
|
+
let cell = row.cells[colEnd];
|
|
262
|
+
rowEl.appendChild(cell.getElement());
|
|
282
263
|
|
|
283
|
-
|
|
284
|
-
// this.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);
|
|
285
|
-
// }
|
|
286
|
-
|
|
287
|
-
this.rerenderColumns(false, true);
|
|
264
|
+
cell.column.reinitializeWidth();
|
|
288
265
|
}
|
|
266
|
+
|
|
267
|
+
rowEl.parentNode.removeChild(rowEl);
|
|
268
|
+
|
|
269
|
+
this.rerenderColumns(false, true);
|
|
289
270
|
}
|
|
290
271
|
}
|
|
291
272
|
}else{
|
|
@@ -356,9 +337,10 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
356
337
|
}
|
|
357
338
|
|
|
358
339
|
addColRight(){
|
|
359
|
-
var changes = false
|
|
340
|
+
var changes = false,
|
|
341
|
+
working = true;
|
|
360
342
|
|
|
361
|
-
while(
|
|
343
|
+
while(working){
|
|
362
344
|
|
|
363
345
|
let column = this.columns[this.rightCol + 1];
|
|
364
346
|
|
|
@@ -384,10 +366,10 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
384
366
|
this.vDomPadRight -= column.getWidth();
|
|
385
367
|
}
|
|
386
368
|
}else{
|
|
387
|
-
|
|
369
|
+
working = false;
|
|
388
370
|
}
|
|
389
371
|
}else{
|
|
390
|
-
|
|
372
|
+
working = false;
|
|
391
373
|
}
|
|
392
374
|
}
|
|
393
375
|
|
|
@@ -397,9 +379,10 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
397
379
|
}
|
|
398
380
|
|
|
399
381
|
addColLeft(){
|
|
400
|
-
var changes = false
|
|
382
|
+
var changes = false,
|
|
383
|
+
working = true;
|
|
401
384
|
|
|
402
|
-
while(
|
|
385
|
+
while(working){
|
|
403
386
|
let column = this.columns[this.leftCol - 1];
|
|
404
387
|
|
|
405
388
|
if(column){
|
|
@@ -430,10 +413,10 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
430
413
|
}
|
|
431
414
|
|
|
432
415
|
}else{
|
|
433
|
-
|
|
416
|
+
working = false;
|
|
434
417
|
}
|
|
435
418
|
}else{
|
|
436
|
-
|
|
419
|
+
working = false;
|
|
437
420
|
}
|
|
438
421
|
}
|
|
439
422
|
|
|
@@ -443,9 +426,10 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
443
426
|
}
|
|
444
427
|
|
|
445
428
|
removeColRight(){
|
|
446
|
-
var changes = false
|
|
429
|
+
var changes = false,
|
|
430
|
+
working = true;
|
|
447
431
|
|
|
448
|
-
while(
|
|
432
|
+
while(working){
|
|
449
433
|
let column = this.columns[this.rightCol];
|
|
450
434
|
|
|
451
435
|
if(column){
|
|
@@ -459,7 +443,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
459
443
|
try {
|
|
460
444
|
row.getElement().removeChild(cell.getElement());
|
|
461
445
|
} catch (ex) {
|
|
462
|
-
console.warn("Could not removeColRight", ex.message)
|
|
446
|
+
console.warn("Could not removeColRight", ex.message);
|
|
463
447
|
}
|
|
464
448
|
}
|
|
465
449
|
});
|
|
@@ -467,10 +451,10 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
467
451
|
this.vDomPadRight += column.getWidth();
|
|
468
452
|
this.rightCol --;
|
|
469
453
|
}else{
|
|
470
|
-
|
|
454
|
+
working = false;
|
|
471
455
|
}
|
|
472
456
|
}else{
|
|
473
|
-
|
|
457
|
+
working = false;
|
|
474
458
|
}
|
|
475
459
|
}
|
|
476
460
|
|
|
@@ -480,9 +464,10 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
480
464
|
}
|
|
481
465
|
|
|
482
466
|
removeColLeft(){
|
|
483
|
-
var changes = false
|
|
467
|
+
var changes = false,
|
|
468
|
+
working = true;
|
|
484
469
|
|
|
485
|
-
while(
|
|
470
|
+
while(working){
|
|
486
471
|
let column = this.columns[this.leftCol];
|
|
487
472
|
|
|
488
473
|
if(column){
|
|
@@ -496,7 +481,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
496
481
|
try {
|
|
497
482
|
row.getElement().removeChild(cell.getElement());
|
|
498
483
|
} catch (ex) {
|
|
499
|
-
console.warn("Could not removeColLeft", ex.message)
|
|
484
|
+
console.warn("Could not removeColLeft", ex.message);
|
|
500
485
|
}
|
|
501
486
|
}
|
|
502
487
|
});
|
|
@@ -504,17 +489,16 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
504
489
|
this.vDomPadLeft += column.getWidth();
|
|
505
490
|
this.leftCol ++;
|
|
506
491
|
}else{
|
|
507
|
-
|
|
492
|
+
working = false;
|
|
508
493
|
}
|
|
509
494
|
}else{
|
|
510
|
-
|
|
495
|
+
working = false;
|
|
511
496
|
}
|
|
512
497
|
}
|
|
513
498
|
|
|
514
499
|
if(changes){
|
|
515
500
|
this.tableElement.style.paddingLeft = this.vDomPadLeft + "px";
|
|
516
501
|
}
|
|
517
|
-
|
|
518
502
|
}
|
|
519
503
|
|
|
520
504
|
fitDataColActualWidthCheck(column){
|