tabulator-tables 5.2.6 → 5.3.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.
- package/.eslintignore +3 -0
- package/.eslintrc.js +28 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +1 -0
- package/.github/workflows/bad-files-check.yml +39 -0
- package/.github/workflows/lint-and-test.yml +31 -0
- package/README.md +18 -6
- 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 +51 -46
- 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 +1506 -706
- 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 +4226 -3460
- 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 +81 -88
- package/src/js/core/Tabulator.js +89 -72
- 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 +34 -33
- 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 +215 -189
- 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 -991
- 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 +41 -42
- 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 +110 -79
- 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 +25 -25
- package/src/scss/themes/bootstrap/variables5.scss +4 -4
- 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
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import CellComponent from '../../../../core/cell/CellComponent.js';
|
|
2
2
|
|
|
3
|
-
export default function(cell, formatterParams, onRendered){ //progress bar
|
|
3
|
+
export default function(cell, formatterParams = {}, onRendered){ //progress bar
|
|
4
4
|
var value = this.sanitizeHTML(cell.getValue()) || 0,
|
|
5
5
|
element = cell.getElement(),
|
|
6
|
-
max = formatterParams
|
|
7
|
-
min = formatterParams
|
|
8
|
-
legendAlign = formatterParams
|
|
9
|
-
percent, percentValue, color, legend, legendColor
|
|
6
|
+
max = formatterParams.max ? formatterParams.max : 100,
|
|
7
|
+
min = formatterParams.min ? formatterParams.min : 0,
|
|
8
|
+
legendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : "center",
|
|
9
|
+
percent, percentValue, color, legend, legendColor;
|
|
10
10
|
|
|
11
11
|
//make sure value is in range
|
|
12
12
|
percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
|
|
@@ -19,60 +19,60 @@ export default function(cell, formatterParams, onRendered){ //progress bar
|
|
|
19
19
|
//set bar color
|
|
20
20
|
switch(typeof formatterParams.color){
|
|
21
21
|
case "string":
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
color = formatterParams.color;
|
|
23
|
+
break;
|
|
24
24
|
case "function":
|
|
25
|
-
|
|
26
|
-
break;
|
|
27
|
-
case "object":
|
|
28
|
-
if(Array.isArray(formatterParams.color)){
|
|
29
|
-
var unit = 100 / formatterParams.color.length;
|
|
30
|
-
var index = Math.floor(percentValue / unit);
|
|
31
|
-
|
|
32
|
-
index = Math.min(index, formatterParams.color.length - 1);
|
|
33
|
-
index = Math.max(index, 0);
|
|
34
|
-
color = formatterParams.color[index];
|
|
25
|
+
color = formatterParams.color(value);
|
|
35
26
|
break;
|
|
36
|
-
|
|
27
|
+
case "object":
|
|
28
|
+
if(Array.isArray(formatterParams.color)){
|
|
29
|
+
let unit = 100 / formatterParams.color.length;
|
|
30
|
+
let index = Math.floor(percentValue / unit);
|
|
31
|
+
|
|
32
|
+
index = Math.min(index, formatterParams.color.length - 1);
|
|
33
|
+
index = Math.max(index, 0);
|
|
34
|
+
color = formatterParams.color[index];
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
37
|
default:
|
|
38
|
-
|
|
38
|
+
color = "#2DC214";
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
//generate legend
|
|
42
42
|
switch(typeof formatterParams.legend){
|
|
43
43
|
case "string":
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
legend = formatterParams.legend;
|
|
45
|
+
break;
|
|
46
46
|
case "function":
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
legend = formatterParams.legend(value);
|
|
48
|
+
break;
|
|
49
49
|
case "boolean":
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
legend = value;
|
|
51
|
+
break;
|
|
52
52
|
default:
|
|
53
|
-
|
|
53
|
+
legend = false;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
//set legend color
|
|
57
57
|
switch(typeof formatterParams.legendColor){
|
|
58
58
|
case "string":
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
legendColor = formatterParams.legendColor;
|
|
60
|
+
break;
|
|
61
61
|
case "function":
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
legendColor = formatterParams.legendColor(value);
|
|
63
|
+
break;
|
|
64
64
|
case "object":
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
65
|
+
if(Array.isArray(formatterParams.legendColor)){
|
|
66
|
+
let unit = 100 / formatterParams.legendColor.length;
|
|
67
|
+
let index = Math.floor(percentValue / unit);
|
|
68
|
+
|
|
69
|
+
index = Math.min(index, formatterParams.legendColor.length - 1);
|
|
70
|
+
index = Math.max(index, 0);
|
|
71
|
+
legendColor = formatterParams.legendColor[index];
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
74
|
default:
|
|
75
|
-
|
|
75
|
+
legendColor = "#000";
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
element.style.minWidth = "30px";
|
|
@@ -82,7 +82,6 @@ export default function(cell, formatterParams, onRendered){ //progress bar
|
|
|
82
82
|
|
|
83
83
|
var barEl = document.createElement("div");
|
|
84
84
|
barEl.style.display = "inline-block";
|
|
85
|
-
barEl.style.position = "absolute";
|
|
86
85
|
barEl.style.width = percentValue + "%";
|
|
87
86
|
barEl.style.backgroundColor = color;
|
|
88
87
|
barEl.style.height = "100%";
|
|
@@ -131,4 +130,4 @@ export default function(cell, formatterParams, onRendered){ //progress bar
|
|
|
131
130
|
});
|
|
132
131
|
|
|
133
132
|
return "";
|
|
134
|
-
}
|
|
133
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export default function(cell, formatterParams, onRendered){
|
|
2
|
-
var
|
|
3
|
-
el = document.createElement("div"),
|
|
2
|
+
var el = document.createElement("div"),
|
|
4
3
|
config = cell.getRow()._row.modules.responsiveLayout;
|
|
5
4
|
|
|
6
5
|
el.classList.add("tabulator-responsive-collapse-toggle");
|
|
@@ -28,9 +27,10 @@ export default function(cell, formatterParams, onRendered){
|
|
|
28
27
|
el.addEventListener("click", function(e){
|
|
29
28
|
e.stopImmediatePropagation();
|
|
30
29
|
toggleList(!config.open);
|
|
30
|
+
cell.getTable().rowManager.adjustTableSize();
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
toggleList(config.open);
|
|
34
34
|
|
|
35
35
|
return el;
|
|
36
|
-
}
|
|
36
|
+
}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
export default function(cell, formatterParams, onRendered){
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
var content = document.createElement("span");
|
|
3
|
+
var row = cell.getRow();
|
|
4
|
+
|
|
5
|
+
row.watchPosition((position) => {
|
|
6
|
+
content.innerText = position;
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
return content;
|
|
10
|
+
}
|
|
@@ -24,24 +24,24 @@ export default function(cell, formatterParams, onRendered){
|
|
|
24
24
|
//set color
|
|
25
25
|
switch(typeof colors){
|
|
26
26
|
case "string":
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
color = colors;
|
|
28
|
+
break;
|
|
29
29
|
case "function":
|
|
30
|
-
|
|
31
|
-
break;
|
|
32
|
-
case "object":
|
|
33
|
-
if(Array.isArray(colors)){
|
|
34
|
-
var unit = 100 / colors.length;
|
|
35
|
-
var index = Math.floor(percentValue / unit);
|
|
36
|
-
|
|
37
|
-
index = Math.min(index, colors.length - 1);
|
|
38
|
-
index = Math.max(index, 0);
|
|
39
|
-
color = colors[index];
|
|
30
|
+
color = colors(value);
|
|
40
31
|
break;
|
|
41
|
-
|
|
32
|
+
case "object":
|
|
33
|
+
if(Array.isArray(colors)){
|
|
34
|
+
var unit = 100 / colors.length;
|
|
35
|
+
var index = Math.floor(percentValue / unit);
|
|
36
|
+
|
|
37
|
+
index = Math.min(index, colors.length - 1);
|
|
38
|
+
index = Math.max(index, 0);
|
|
39
|
+
color = colors[index];
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
el.style.backgroundColor = color;
|
|
45
45
|
|
|
46
46
|
return el;
|
|
47
|
-
}
|
|
47
|
+
}
|
|
@@ -58,7 +58,7 @@ class FrozenColumns extends Module{
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
layoutCell(cell){
|
|
61
|
-
this.layoutElement(cell.element, cell.column)
|
|
61
|
+
this.layoutElement(cell.element, cell.column);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
reinitializeColumns(){
|
|
@@ -107,9 +107,7 @@ class FrozenColumns extends Module{
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
//quick layout to smooth horizontal scrolling
|
|
110
|
-
scrollHorizontal(){
|
|
111
|
-
var rows;
|
|
112
|
-
|
|
110
|
+
scrollHorizontal(){
|
|
113
111
|
if(this.active){
|
|
114
112
|
this.calcMargins(true);
|
|
115
113
|
|
|
@@ -146,7 +144,7 @@ class FrozenColumns extends Module{
|
|
|
146
144
|
}
|
|
147
145
|
|
|
148
146
|
if(this.table.modExists("groupRows")){
|
|
149
|
-
this.layoutGroupCalcs(this.table.modules.groupRows.getGroups())
|
|
147
|
+
this.layoutGroupCalcs(this.table.modules.groupRows.getGroups());
|
|
150
148
|
}
|
|
151
149
|
}
|
|
152
150
|
}
|
|
@@ -162,7 +160,7 @@ class FrozenColumns extends Module{
|
|
|
162
160
|
}
|
|
163
161
|
|
|
164
162
|
if(group.groupList && group.groupList.length){
|
|
165
|
-
this.layoutGroupCalcs(group.groupList
|
|
163
|
+
this.layoutGroupCalcs(group.groupList);
|
|
166
164
|
}
|
|
167
165
|
});
|
|
168
166
|
}
|
|
@@ -262,9 +260,9 @@ class FrozenColumns extends Module{
|
|
|
262
260
|
}
|
|
263
261
|
|
|
264
262
|
reinitializeRows(){
|
|
265
|
-
var visibleRows = this.table.rowManager.getVisibleRows();
|
|
263
|
+
var visibleRows = this.table.rowManager.getVisibleRows(true);
|
|
266
264
|
var otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));
|
|
267
|
-
|
|
265
|
+
|
|
268
266
|
otherRows.forEach((row) =>{
|
|
269
267
|
row.deinitialize();
|
|
270
268
|
});
|
|
@@ -12,6 +12,10 @@ class FrozenRows extends Module{
|
|
|
12
12
|
this.registerComponentFunction("row", "freeze", this.freezeRow.bind(this));
|
|
13
13
|
this.registerComponentFunction("row", "unfreeze", this.unfreezeRow.bind(this));
|
|
14
14
|
this.registerComponentFunction("row", "isFrozen", this.isRowFrozen.bind(this));
|
|
15
|
+
|
|
16
|
+
//register table options
|
|
17
|
+
this.registerTableOption("frozenRowsField", "id"); //field to choose frozen rows by
|
|
18
|
+
this.registerTableOption("frozenRows", false); //holder for frozen row identifiers
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
initialize(){
|
|
@@ -26,6 +30,36 @@ class FrozenRows extends Module{
|
|
|
26
30
|
this.subscribe("rows-visible", this.visibleRows.bind(this));
|
|
27
31
|
|
|
28
32
|
this.registerDisplayHandler(this.getRows.bind(this), 10);
|
|
33
|
+
|
|
34
|
+
if(this.table.options.frozenRows){
|
|
35
|
+
this.subscribe("data-processed", this.initializeRows.bind(this));
|
|
36
|
+
this.subscribe("row-added", this.initializeRow.bind(this));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
initializeRows(){
|
|
41
|
+
this.table.rowManager.getRows().forEach((row) => {
|
|
42
|
+
this.initializeRow(row);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
initializeRow(row){
|
|
47
|
+
var frozenRows = this.table.options.frozenRows,
|
|
48
|
+
rowType = typeof frozenRows;
|
|
49
|
+
|
|
50
|
+
if(rowType === "number"){
|
|
51
|
+
if(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){
|
|
52
|
+
this.freezeRow(row);
|
|
53
|
+
}
|
|
54
|
+
}else if(rowType === "function"){
|
|
55
|
+
if(frozenRows.call(this.table, row.getComponent())){
|
|
56
|
+
this.freezeRow(row);
|
|
57
|
+
}
|
|
58
|
+
}else if(Array.isArray(frozenRows)){
|
|
59
|
+
if(frozenRows.includes(row.data[this.options("frozenRowsField")])){
|
|
60
|
+
this.freezeRow(row);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
29
63
|
}
|
|
30
64
|
|
|
31
65
|
isRowFrozen(row){
|
|
@@ -47,9 +81,7 @@ class FrozenRows extends Module{
|
|
|
47
81
|
|
|
48
82
|
//filter frozen rows out of display data
|
|
49
83
|
getRows(rows){
|
|
50
|
-
var
|
|
51
|
-
frozen = [],
|
|
52
|
-
output = rows.slice(0);
|
|
84
|
+
var output = rows.slice(0);
|
|
53
85
|
|
|
54
86
|
this.rows.forEach(function(row){
|
|
55
87
|
var index = output.indexOf(row);
|
|
@@ -72,7 +104,7 @@ class FrozenRows extends Module{
|
|
|
72
104
|
|
|
73
105
|
this.rows.push(row);
|
|
74
106
|
|
|
75
|
-
this.refreshData(false, "display")
|
|
107
|
+
this.refreshData(false, "display");
|
|
76
108
|
|
|
77
109
|
this.styleRows();
|
|
78
110
|
|
|
@@ -82,8 +114,6 @@ class FrozenRows extends Module{
|
|
|
82
114
|
}
|
|
83
115
|
|
|
84
116
|
unfreezeRow(row){
|
|
85
|
-
var index = this.rows.indexOf(row);
|
|
86
|
-
|
|
87
117
|
if(row.modules.frozen){
|
|
88
118
|
|
|
89
119
|
row.modules.frozen = false;
|
|
@@ -92,7 +122,7 @@ class FrozenRows extends Module{
|
|
|
92
122
|
|
|
93
123
|
this.table.rowManager.adjustTableSize();
|
|
94
124
|
|
|
95
|
-
this.refreshData(false, "display")
|
|
125
|
+
this.refreshData(false, "display");
|
|
96
126
|
|
|
97
127
|
if(this.rows.length){
|
|
98
128
|
this.styleRows();
|
|
@@ -178,7 +178,7 @@ class Group{
|
|
|
178
178
|
|
|
179
179
|
getRowIndex(row){}
|
|
180
180
|
|
|
181
|
-
//update row data to match grouping
|
|
181
|
+
//update row data to match grouping constraints
|
|
182
182
|
conformRowData(data){
|
|
183
183
|
if(this.field){
|
|
184
184
|
data[this.field] = this.key;
|
|
@@ -358,7 +358,7 @@ class Group{
|
|
|
358
358
|
hide(){
|
|
359
359
|
this.visible = false;
|
|
360
360
|
|
|
361
|
-
if(this.groupManager.table.rowManager.getRenderMode() == "
|
|
361
|
+
if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){
|
|
362
362
|
|
|
363
363
|
this.element.classList.remove("tabulator-group-visible");
|
|
364
364
|
|
|
@@ -381,7 +381,7 @@ class Group{
|
|
|
381
381
|
|
|
382
382
|
this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
|
|
383
383
|
|
|
384
|
-
this.groupManager.
|
|
384
|
+
this.groupManager.checkBasicModeGroupHeaderWidth();
|
|
385
385
|
|
|
386
386
|
}else{
|
|
387
387
|
this.groupManager.updateGroupRows(true);
|
|
@@ -393,7 +393,7 @@ class Group{
|
|
|
393
393
|
show(){
|
|
394
394
|
this.visible = true;
|
|
395
395
|
|
|
396
|
-
if(this.groupManager.table.rowManager.getRenderMode() == "
|
|
396
|
+
if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){
|
|
397
397
|
|
|
398
398
|
this.element.classList.add("tabulator-group-visible");
|
|
399
399
|
|
|
@@ -422,7 +422,7 @@ class Group{
|
|
|
422
422
|
|
|
423
423
|
this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
|
|
424
424
|
|
|
425
|
-
this.groupManager.
|
|
425
|
+
this.groupManager.checkBasicModeGroupHeaderWidth();
|
|
426
426
|
}else{
|
|
427
427
|
this.groupManager.updateGroupRows(true);
|
|
428
428
|
}
|
|
@@ -474,11 +474,11 @@ class Group{
|
|
|
474
474
|
return output;
|
|
475
475
|
}
|
|
476
476
|
|
|
477
|
-
getRows(
|
|
477
|
+
getRows(component){
|
|
478
478
|
var output = [];
|
|
479
479
|
|
|
480
480
|
this.rows.forEach(function(row){
|
|
481
|
-
output.push(
|
|
481
|
+
output.push(component ? row.getComponent() : row);
|
|
482
482
|
});
|
|
483
483
|
|
|
484
484
|
return output;
|
|
@@ -9,10 +9,10 @@ class GroupComponent {
|
|
|
9
9
|
if (typeof target[name] !== "undefined") {
|
|
10
10
|
return target[name];
|
|
11
11
|
}else{
|
|
12
|
-
return target._group.groupManager.table.componentFunctionBinder.handle("row", target._group, name)
|
|
12
|
+
return target._group.groupManager.table.componentFunctionBinder.handle("row", target._group, name);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
})
|
|
15
|
+
});
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
getKey(){
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import Module from '../../core/Module.js';
|
|
2
2
|
|
|
3
|
-
import GroupComponent from './GroupComponent.js';
|
|
4
3
|
import Group from './Group.js';
|
|
5
4
|
|
|
6
5
|
class GroupRows extends Module{
|
|
@@ -46,7 +45,6 @@ class GroupRows extends Module{
|
|
|
46
45
|
//initialize group configuration
|
|
47
46
|
initialize(){
|
|
48
47
|
if(this.table.options.groupBy){
|
|
49
|
-
|
|
50
48
|
if(this.table.options.groupUpdateOnCellEdit){
|
|
51
49
|
this.subscribe("cell-value-updated", this.cellUpdated.bind(this));
|
|
52
50
|
this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0);
|
|
@@ -95,7 +93,7 @@ class GroupRows extends Module{
|
|
|
95
93
|
|
|
96
94
|
this.groupIDLookups = [];
|
|
97
95
|
|
|
98
|
-
if(Array.isArray(groupBy)
|
|
96
|
+
if(Array.isArray(groupBy)){
|
|
99
97
|
if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both"){
|
|
100
98
|
this.table.modules.columnCalcs.removeCalcs();
|
|
101
99
|
}
|
|
@@ -161,6 +159,9 @@ class GroupRows extends Module{
|
|
|
161
159
|
if(groupHeader){
|
|
162
160
|
this.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
|
|
163
161
|
}
|
|
162
|
+
}else{
|
|
163
|
+
this.groupList = [];
|
|
164
|
+
this.groups = {};
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
|
|
@@ -225,12 +226,13 @@ class GroupRows extends Module{
|
|
|
225
226
|
|
|
226
227
|
setGroupBy(groups){
|
|
227
228
|
this.table.options.groupBy = groups;
|
|
229
|
+
|
|
228
230
|
if(!this.initialized){
|
|
229
231
|
this.initialize();
|
|
230
|
-
}else{
|
|
231
|
-
this.configureGroupSetup();
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
+
this.configureGroupSetup();
|
|
235
|
+
|
|
234
236
|
this.refreshData();
|
|
235
237
|
|
|
236
238
|
this.trackChanges();
|
|
@@ -277,7 +279,7 @@ class GroupRows extends Module{
|
|
|
277
279
|
// get grouped table data in the same format as getData()
|
|
278
280
|
userGetGroupedData(){
|
|
279
281
|
return this.table.options.groupBy ?
|
|
280
|
-
|
|
282
|
+
this.getGroupedData() : this.getData();
|
|
281
283
|
}
|
|
282
284
|
|
|
283
285
|
|
|
@@ -425,7 +427,7 @@ class GroupRows extends Module{
|
|
|
425
427
|
}
|
|
426
428
|
});
|
|
427
429
|
|
|
428
|
-
return groupListData
|
|
430
|
+
return groupListData;
|
|
429
431
|
}
|
|
430
432
|
|
|
431
433
|
getGroupedData(){
|
|
@@ -515,10 +517,10 @@ class GroupRows extends Module{
|
|
|
515
517
|
var oldRowGroup = row.modules.group,
|
|
516
518
|
oldGroupPath = oldRowGroup.getPath(),
|
|
517
519
|
newGroupPath = this.getExpectedPath(row),
|
|
518
|
-
samePath
|
|
520
|
+
samePath;
|
|
519
521
|
|
|
520
522
|
// figure out if new group path is the same as old group path
|
|
521
|
-
|
|
523
|
+
samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {
|
|
522
524
|
return element === newGroupPath[index];
|
|
523
525
|
});
|
|
524
526
|
|
|
@@ -542,8 +544,7 @@ class GroupRows extends Module{
|
|
|
542
544
|
}
|
|
543
545
|
|
|
544
546
|
updateGroupRows(force){
|
|
545
|
-
var output = []
|
|
546
|
-
oldRowCount;
|
|
547
|
+
var output = [];
|
|
547
548
|
|
|
548
549
|
this.groupList.forEach((group) => {
|
|
549
550
|
output = output.concat(group.getHeadersAndRows());
|
|
@@ -582,6 +583,28 @@ class GroupRows extends Module{
|
|
|
582
583
|
}
|
|
583
584
|
}
|
|
584
585
|
}
|
|
586
|
+
|
|
587
|
+
checkBasicModeGroupHeaderWidth(){
|
|
588
|
+
var element = this.table.rowManager.tableElement,
|
|
589
|
+
onlyGroupHeaders = true;
|
|
590
|
+
|
|
591
|
+
this.table.rowManager.getDisplayRows().forEach((row, index) =>{
|
|
592
|
+
this.table.rowManager.styleRow(row, index);
|
|
593
|
+
element.appendChild(row.getElement());
|
|
594
|
+
row.initialize(true);
|
|
595
|
+
|
|
596
|
+
if(row.type !== "group"){
|
|
597
|
+
onlyGroupHeaders = false;
|
|
598
|
+
}
|
|
599
|
+
});
|
|
600
|
+
|
|
601
|
+
if(onlyGroupHeaders){
|
|
602
|
+
element.style.minWidth = this.table.columnManager.getWidth() + "px";
|
|
603
|
+
}else{
|
|
604
|
+
element.style.minWidth = "";
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
|
|
585
608
|
}
|
|
586
609
|
|
|
587
610
|
GroupRows.moduleName = "groupRows";
|
|
@@ -34,7 +34,7 @@ class History extends Module{
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
rowMoved(from, to, after){
|
|
37
|
-
this.action("rowMove", from, {posFrom:
|
|
37
|
+
this.action("rowMove", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after});
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
rowAdded(row, data, pos, index){
|
|
@@ -46,7 +46,7 @@ class History extends Module{
|
|
|
46
46
|
|
|
47
47
|
if(this.table.options.groupBy){
|
|
48
48
|
|
|
49
|
-
rows = row.getComponent().getGroup().rows
|
|
49
|
+
rows = row.getComponent().getGroup()._getSelf().rows;
|
|
50
50
|
index = rows.indexOf(row);
|
|
51
51
|
|
|
52
52
|
if(index){
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import Module from '../../core/Module.js';
|
|
2
|
-
import Column from '../../core/column/Column.js';
|
|
3
2
|
|
|
4
3
|
class HtmlTableImport extends Module{
|
|
5
4
|
|
|
@@ -27,11 +26,9 @@ class HtmlTableImport extends Module{
|
|
|
27
26
|
parseTable(){
|
|
28
27
|
var element = this.table.originalElement,
|
|
29
28
|
options = this.table.options,
|
|
30
|
-
columns = options.columns,
|
|
31
29
|
headers = element.getElementsByTagName("th"),
|
|
32
30
|
rows = element.getElementsByTagName("tbody")[0],
|
|
33
|
-
data = []
|
|
34
|
-
newTable;
|
|
31
|
+
data = [];
|
|
35
32
|
|
|
36
33
|
this.hasIndex = false;
|
|
37
34
|
|
|
@@ -54,7 +51,7 @@ class HtmlTableImport extends Module{
|
|
|
54
51
|
cells = row.getElementsByTagName("td"),
|
|
55
52
|
item = {};
|
|
56
53
|
|
|
57
|
-
//create index if the
|
|
54
|
+
//create index if the don't exist in table
|
|
58
55
|
if(!this.hasIndex){
|
|
59
56
|
item[options.index] = index;
|
|
60
57
|
}
|
|
@@ -127,7 +124,7 @@ class HtmlTableImport extends Module{
|
|
|
127
124
|
var header = headers[index],
|
|
128
125
|
exists = false,
|
|
129
126
|
col = this._findCol(header.textContent),
|
|
130
|
-
width
|
|
127
|
+
width;
|
|
131
128
|
|
|
132
129
|
if(col){
|
|
133
130
|
exists = true;
|