tabulator-tables 5.2.7 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1388 -683
- 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 +4135 -3470
- 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 +259 -231
- 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 +79 -88
- package/src/js/core/Tabulator.js +86 -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 +55 -66
- 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 +31 -32
- 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 +54 -50
- package/src/js/modules/ColumnCalcs/defaults/calculations.js +1 -1
- package/src/js/modules/DataTree/DataTree.js +19 -14
- 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 +85 -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 +3 -3
- package/src/js/modules/GroupRows/GroupComponent.js +2 -2
- package/src/js/modules/GroupRows/GroupRows.js +12 -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 +39 -40
- 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 +9 -10
- 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 +0 -3
- 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 +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
|
@@ -4,26 +4,26 @@ import Helpers from '../../core/tools/Helpers.js';
|
|
|
4
4
|
import defaultEditors from './defaults/editors.js';
|
|
5
5
|
|
|
6
6
|
class Edit extends Module{
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
constructor(table){
|
|
9
9
|
super(table);
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
this.currentCell = false; //hold currently editing cell
|
|
12
|
-
this.mouseClick = false; //hold mousedown state to prevent click binding being
|
|
12
|
+
this.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening
|
|
13
13
|
this.recursionBlock = false; //prevent focus recursion
|
|
14
14
|
this.invalidEdit = false;
|
|
15
15
|
this.editedCells = [];
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
this.editors = Edit.editors;
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
this.registerColumnOption("editable");
|
|
20
20
|
this.registerColumnOption("editor");
|
|
21
21
|
this.registerColumnOption("editorParams");
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
this.registerColumnOption("cellEditing");
|
|
24
24
|
this.registerColumnOption("cellEdited");
|
|
25
25
|
this.registerColumnOption("cellEditCancelled");
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
this.registerTableFunction("getEditedCells", this.getEditedCells.bind(this));
|
|
28
28
|
this.registerTableFunction("clearCellEdited", this.clearCellEdited.bind(this));
|
|
29
29
|
this.registerTableFunction("navigatePrev", this.navigatePrev.bind(this));
|
|
@@ -32,12 +32,12 @@ class Edit extends Module{
|
|
|
32
32
|
this.registerTableFunction("navigateRight", this.navigateRight.bind(this));
|
|
33
33
|
this.registerTableFunction("navigateUp", this.navigateUp.bind(this));
|
|
34
34
|
this.registerTableFunction("navigateDown", this.navigateDown.bind(this));
|
|
35
|
-
|
|
36
|
-
this.registerComponentFunction("cell", "isEdited", this.
|
|
35
|
+
|
|
36
|
+
this.registerComponentFunction("cell", "isEdited", this.cellIsEdited.bind(this));
|
|
37
37
|
this.registerComponentFunction("cell", "clearEdited", this.clearEdited.bind(this));
|
|
38
38
|
this.registerComponentFunction("cell", "edit", this.editCell.bind(this));
|
|
39
39
|
this.registerComponentFunction("cell", "cancelEdit", this.cellCancelEdit.bind(this));
|
|
40
|
-
|
|
40
|
+
|
|
41
41
|
this.registerComponentFunction("cell", "navigatePrev", this.navigatePrev.bind(this));
|
|
42
42
|
this.registerComponentFunction("cell", "navigateNext", this.navigateNext.bind(this));
|
|
43
43
|
this.registerComponentFunction("cell", "navigateLeft", this.navigateLeft.bind(this));
|
|
@@ -45,15 +45,16 @@ class Edit extends Module{
|
|
|
45
45
|
this.registerComponentFunction("cell", "navigateUp", this.navigateUp.bind(this));
|
|
46
46
|
this.registerComponentFunction("cell", "navigateDown", this.navigateDown.bind(this));
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
initialize(){
|
|
50
50
|
this.subscribe("cell-init", this.bindEditor.bind(this));
|
|
51
51
|
this.subscribe("cell-delete", this.clearEdited.bind(this));
|
|
52
|
+
this.subscribe("cell-value-changed", this.updateCellClass.bind(this));
|
|
52
53
|
this.subscribe("column-layout", this.initializeColumnCheck.bind(this));
|
|
53
54
|
this.subscribe("column-delete", this.columnDeleteCheck.bind(this));
|
|
54
55
|
this.subscribe("row-deleting", this.rowDeleteCheck.bind(this));
|
|
55
56
|
this.subscribe("data-refreshing", this.cancelEdit.bind(this));
|
|
56
|
-
|
|
57
|
+
|
|
57
58
|
this.subscribe("keybinding-nav-prev", this.navigatePrev.bind(this, undefined));
|
|
58
59
|
this.subscribe("keybinding-nav-next", this.keybindingNavigateNext.bind(this));
|
|
59
60
|
this.subscribe("keybinding-nav-left", this.navigateLeft.bind(this, undefined));
|
|
@@ -61,49 +62,49 @@ class Edit extends Module{
|
|
|
61
62
|
this.subscribe("keybinding-nav-up", this.navigateUp.bind(this, undefined));
|
|
62
63
|
this.subscribe("keybinding-nav-down", this.navigateDown.bind(this, undefined));
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
|
|
66
|
+
|
|
66
67
|
///////////////////////////////////
|
|
67
68
|
////// Keybinding Functions ///////
|
|
68
69
|
///////////////////////////////////
|
|
69
|
-
|
|
70
|
+
|
|
70
71
|
keybindingNavigateNext(e){
|
|
71
72
|
var cell = this.currentCell,
|
|
72
73
|
newRow = this.options("tabEndNewRow");
|
|
73
|
-
|
|
74
|
+
|
|
74
75
|
if(cell){
|
|
75
76
|
if(!this.navigateNext(cell, e)){
|
|
76
77
|
if(newRow){
|
|
77
78
|
cell.getElement().firstChild.blur();
|
|
78
|
-
|
|
79
|
+
|
|
79
80
|
if(newRow === true){
|
|
80
|
-
newRow = this.table.addRow({})
|
|
81
|
+
newRow = this.table.addRow({});
|
|
81
82
|
}else{
|
|
82
83
|
if(typeof newRow == "function"){
|
|
83
|
-
newRow = this.table.addRow(newRow(cell.row.getComponent()))
|
|
84
|
+
newRow = this.table.addRow(newRow(cell.row.getComponent()));
|
|
84
85
|
}else{
|
|
85
86
|
newRow = this.table.addRow(Object.assign({}, newRow));
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
|
-
|
|
89
|
+
|
|
89
90
|
newRow.then(() => {
|
|
90
91
|
setTimeout(() => {
|
|
91
92
|
cell.getComponent().navigateNext();
|
|
92
|
-
})
|
|
93
|
+
});
|
|
93
94
|
});
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
|
-
|
|
99
|
+
|
|
99
100
|
///////////////////////////////////
|
|
100
101
|
///////// Cell Functions //////////
|
|
101
102
|
///////////////////////////////////
|
|
102
|
-
|
|
103
|
-
|
|
103
|
+
|
|
104
|
+
cellIsEdited(cell){
|
|
104
105
|
return !! cell.modules.edit && cell.modules.edit.edited;
|
|
105
106
|
}
|
|
106
|
-
|
|
107
|
+
|
|
107
108
|
cellCancelEdit(cell){
|
|
108
109
|
if(cell === this.currentCell){
|
|
109
110
|
this.table.modules.edit.cancelEdit();
|
|
@@ -111,44 +112,53 @@ class Edit extends Module{
|
|
|
111
112
|
console.warn("Cancel Editor Error - This cell is not currently being edited ");
|
|
112
113
|
}
|
|
113
114
|
}
|
|
114
|
-
|
|
115
|
-
|
|
115
|
+
|
|
116
|
+
|
|
116
117
|
///////////////////////////////////
|
|
117
118
|
///////// Table Functions /////////
|
|
118
119
|
///////////////////////////////////
|
|
120
|
+
updateCellClass(cell){
|
|
121
|
+
if(this.allowEdit(cell)) {
|
|
122
|
+
cell.getElement().classList.add("tabulator-editable");
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
cell.getElement().classList.remove("tabulator-editable");
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
119
129
|
clearCellEdited(cells){
|
|
120
130
|
if(!cells){
|
|
121
131
|
cells = this.table.modules.edit.getEditedCells();
|
|
122
132
|
}
|
|
123
|
-
|
|
133
|
+
|
|
124
134
|
if(!Array.isArray(cells)){
|
|
125
135
|
cells = [cells];
|
|
126
136
|
}
|
|
127
|
-
|
|
137
|
+
|
|
128
138
|
cells.forEach((cell) => {
|
|
129
139
|
this.table.modules.edit.clearEdited(cell._getSelf());
|
|
130
140
|
});
|
|
131
141
|
}
|
|
132
|
-
|
|
142
|
+
|
|
133
143
|
navigatePrev(cell = this.currentCell, e){
|
|
134
144
|
var nextCell, prevRow;
|
|
135
|
-
|
|
145
|
+
|
|
136
146
|
if(cell){
|
|
137
|
-
|
|
147
|
+
|
|
138
148
|
if(e){
|
|
139
149
|
e.preventDefault();
|
|
140
150
|
}
|
|
141
|
-
|
|
151
|
+
|
|
142
152
|
nextCell = this.navigateLeft();
|
|
143
|
-
|
|
153
|
+
|
|
144
154
|
if(nextCell){
|
|
145
155
|
return true;
|
|
146
156
|
}else{
|
|
147
157
|
prevRow = this.table.rowManager.prevDisplayRow(cell.row, true);
|
|
148
|
-
|
|
158
|
+
|
|
149
159
|
if(prevRow){
|
|
150
160
|
nextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);
|
|
151
|
-
|
|
161
|
+
|
|
152
162
|
if(nextCell){
|
|
153
163
|
nextCell.getComponent().edit();
|
|
154
164
|
return true;
|
|
@@ -156,29 +166,29 @@ class Edit extends Module{
|
|
|
156
166
|
}
|
|
157
167
|
}
|
|
158
168
|
}
|
|
159
|
-
|
|
169
|
+
|
|
160
170
|
return false;
|
|
161
171
|
}
|
|
162
|
-
|
|
172
|
+
|
|
163
173
|
navigateNext(cell = this.currentCell, e){
|
|
164
174
|
var nextCell, nextRow;
|
|
165
|
-
|
|
175
|
+
|
|
166
176
|
if(cell){
|
|
167
|
-
|
|
177
|
+
|
|
168
178
|
if(e){
|
|
169
179
|
e.preventDefault();
|
|
170
180
|
}
|
|
171
|
-
|
|
181
|
+
|
|
172
182
|
nextCell = this.navigateRight();
|
|
173
|
-
|
|
183
|
+
|
|
174
184
|
if(nextCell){
|
|
175
185
|
return true;
|
|
176
186
|
}else{
|
|
177
187
|
nextRow = this.table.rowManager.nextDisplayRow(cell.row, true);
|
|
178
|
-
|
|
188
|
+
|
|
179
189
|
if(nextRow){
|
|
180
190
|
nextCell = this.findNextEditableCell(nextRow, -1);
|
|
181
|
-
|
|
191
|
+
|
|
182
192
|
if(nextCell){
|
|
183
193
|
nextCell.getComponent().edit();
|
|
184
194
|
return true;
|
|
@@ -186,108 +196,104 @@ class Edit extends Module{
|
|
|
186
196
|
}
|
|
187
197
|
}
|
|
188
198
|
}
|
|
189
|
-
|
|
199
|
+
|
|
190
200
|
return false;
|
|
191
201
|
}
|
|
192
|
-
|
|
202
|
+
|
|
193
203
|
navigateLeft(cell = this.currentCell, e){
|
|
194
204
|
var index, nextCell;
|
|
195
|
-
|
|
205
|
+
|
|
196
206
|
if(cell){
|
|
197
|
-
|
|
207
|
+
|
|
198
208
|
if(e){
|
|
199
209
|
e.preventDefault();
|
|
200
210
|
}
|
|
201
|
-
|
|
211
|
+
|
|
202
212
|
index = cell.getIndex();
|
|
203
213
|
nextCell = this.findPrevEditableCell(cell.row, index);
|
|
204
|
-
|
|
214
|
+
|
|
205
215
|
if(nextCell){
|
|
206
216
|
nextCell.getComponent().edit();
|
|
207
217
|
return true;
|
|
208
218
|
}
|
|
209
219
|
}
|
|
210
|
-
|
|
220
|
+
|
|
211
221
|
return false;
|
|
212
222
|
}
|
|
213
|
-
|
|
223
|
+
|
|
214
224
|
navigateRight(cell = this.currentCell, e){
|
|
215
225
|
var index, nextCell;
|
|
216
|
-
|
|
226
|
+
|
|
217
227
|
if(cell){
|
|
218
|
-
|
|
228
|
+
|
|
219
229
|
if(e){
|
|
220
230
|
e.preventDefault();
|
|
221
231
|
}
|
|
222
|
-
|
|
232
|
+
|
|
223
233
|
index = cell.getIndex();
|
|
224
234
|
nextCell = this.findNextEditableCell(cell.row, index);
|
|
225
|
-
|
|
235
|
+
|
|
226
236
|
if(nextCell){
|
|
227
237
|
nextCell.getComponent().edit();
|
|
228
238
|
return true;
|
|
229
239
|
}
|
|
230
240
|
}
|
|
231
|
-
|
|
241
|
+
|
|
232
242
|
return false;
|
|
233
243
|
}
|
|
234
|
-
|
|
244
|
+
|
|
235
245
|
navigateUp(cell = this.currentCell, e){
|
|
236
246
|
var index, nextRow;
|
|
237
|
-
|
|
247
|
+
|
|
238
248
|
if(cell){
|
|
239
|
-
|
|
249
|
+
|
|
240
250
|
if(e){
|
|
241
251
|
e.preventDefault();
|
|
242
252
|
}
|
|
243
|
-
|
|
253
|
+
|
|
244
254
|
index = cell.getIndex();
|
|
245
255
|
nextRow = this.table.rowManager.prevDisplayRow(cell.row, true);
|
|
246
|
-
|
|
256
|
+
|
|
247
257
|
if(nextRow){
|
|
248
258
|
nextRow.cells[index].getComponent().edit();
|
|
249
259
|
return true;
|
|
250
260
|
}
|
|
251
261
|
}
|
|
252
|
-
|
|
262
|
+
|
|
253
263
|
return false;
|
|
254
264
|
}
|
|
255
|
-
|
|
265
|
+
|
|
256
266
|
navigateDown(cell = this.currentCell, e){
|
|
257
267
|
var index, nextRow;
|
|
258
|
-
|
|
268
|
+
|
|
259
269
|
if(cell){
|
|
260
|
-
|
|
270
|
+
|
|
261
271
|
if(e){
|
|
262
272
|
e.preventDefault();
|
|
263
273
|
}
|
|
264
|
-
|
|
274
|
+
|
|
265
275
|
index = cell.getIndex();
|
|
266
276
|
nextRow = this.table.rowManager.nextDisplayRow(cell.row, true);
|
|
267
|
-
|
|
277
|
+
|
|
268
278
|
if(nextRow){
|
|
269
279
|
nextRow.cells[index].getComponent().edit();
|
|
270
280
|
return true;
|
|
271
281
|
}
|
|
272
282
|
}
|
|
273
|
-
|
|
283
|
+
|
|
274
284
|
return false;
|
|
275
285
|
}
|
|
276
|
-
|
|
286
|
+
|
|
277
287
|
findNextEditableCell(row, index){
|
|
278
288
|
var nextCell = false;
|
|
279
|
-
|
|
289
|
+
|
|
280
290
|
if(index < row.cells.length-1){
|
|
281
291
|
for(var i = index+1; i < row.cells.length; i++){
|
|
282
292
|
let cell = row.cells[i];
|
|
283
|
-
|
|
293
|
+
|
|
284
294
|
if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){
|
|
285
|
-
let allowEdit =
|
|
286
|
-
|
|
287
|
-
if(typeof cell.column.modules.edit.check == "function"){
|
|
288
|
-
allowEdit = cell.column.modules.edit.check(cell.getComponent());
|
|
289
|
-
}
|
|
290
|
-
|
|
295
|
+
let allowEdit = this.allowEdit(cell);
|
|
296
|
+
|
|
291
297
|
if(allowEdit){
|
|
292
298
|
nextCell = cell;
|
|
293
299
|
break;
|
|
@@ -295,23 +301,20 @@ class Edit extends Module{
|
|
|
295
301
|
}
|
|
296
302
|
}
|
|
297
303
|
}
|
|
298
|
-
|
|
304
|
+
|
|
299
305
|
return nextCell;
|
|
300
306
|
}
|
|
301
|
-
|
|
307
|
+
|
|
302
308
|
findPrevEditableCell(row, index){
|
|
303
309
|
var prevCell = false;
|
|
304
|
-
|
|
310
|
+
|
|
305
311
|
if(index > 0){
|
|
306
312
|
for(var i = index-1; i >= 0; i--){
|
|
307
|
-
let cell = row.cells[i]
|
|
308
|
-
|
|
309
|
-
|
|
313
|
+
let cell = row.cells[i];
|
|
314
|
+
|
|
310
315
|
if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
}
|
|
314
|
-
|
|
316
|
+
let allowEdit = this.allowEdit(cell);
|
|
317
|
+
|
|
315
318
|
if(allowEdit){
|
|
316
319
|
prevCell = cell;
|
|
317
320
|
break;
|
|
@@ -319,137 +322,139 @@ class Edit extends Module{
|
|
|
319
322
|
}
|
|
320
323
|
}
|
|
321
324
|
}
|
|
322
|
-
|
|
325
|
+
|
|
323
326
|
return prevCell;
|
|
324
327
|
}
|
|
325
|
-
|
|
328
|
+
|
|
326
329
|
///////////////////////////////////
|
|
327
330
|
///////// Internal Logic //////////
|
|
328
331
|
///////////////////////////////////
|
|
329
|
-
|
|
332
|
+
|
|
330
333
|
initializeColumnCheck(column){
|
|
331
334
|
if(typeof column.definition.editor !== "undefined"){
|
|
332
335
|
this.initializeColumn(column);
|
|
333
336
|
}
|
|
334
337
|
}
|
|
335
|
-
|
|
338
|
+
|
|
336
339
|
columnDeleteCheck(column){
|
|
337
340
|
if(this.currentCell && this.currentCell.column === column){
|
|
338
341
|
this.cancelEdit();
|
|
339
342
|
}
|
|
340
343
|
}
|
|
341
|
-
|
|
344
|
+
|
|
342
345
|
rowDeleteCheck(row){
|
|
343
346
|
if(this.currentCell && this.currentCell.row === row){
|
|
344
347
|
this.cancelEdit();
|
|
345
348
|
}
|
|
346
349
|
}
|
|
347
|
-
|
|
350
|
+
|
|
348
351
|
//initialize column editor
|
|
349
352
|
initializeColumn(column){
|
|
350
|
-
var
|
|
351
|
-
config = {
|
|
353
|
+
var config = {
|
|
352
354
|
editor:false,
|
|
353
355
|
blocked:false,
|
|
354
356
|
check:column.definition.editable,
|
|
355
357
|
params:column.definition.editorParams || {}
|
|
356
358
|
};
|
|
357
|
-
|
|
359
|
+
|
|
358
360
|
//set column editor
|
|
359
361
|
switch(typeof column.definition.editor){
|
|
360
362
|
case "string":
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
363
|
+
if(this.editors[column.definition.editor]){
|
|
364
|
+
config.editor = this.editors[column.definition.editor];
|
|
365
|
+
}else{
|
|
366
|
+
console.warn("Editor Error - No such editor found: ", column.definition.editor);
|
|
367
|
+
}
|
|
368
|
+
break;
|
|
369
|
+
|
|
368
370
|
case "function":
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
371
|
+
config.editor = column.definition.editor;
|
|
372
|
+
break;
|
|
373
|
+
|
|
372
374
|
case "boolean":
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
375
|
+
if(column.definition.editor === true){
|
|
376
|
+
if(typeof column.definition.formatter !== "function"){
|
|
377
|
+
if(this.editors[column.definition.formatter]){
|
|
378
|
+
config.editor = this.editors[column.definition.formatter];
|
|
379
|
+
}else{
|
|
380
|
+
config.editor = this.editors["input"];
|
|
381
|
+
}
|
|
377
382
|
}else{
|
|
378
|
-
|
|
383
|
+
console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
|
|
379
384
|
}
|
|
380
|
-
}else{
|
|
381
|
-
console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
|
|
382
385
|
}
|
|
383
|
-
|
|
384
|
-
break;
|
|
386
|
+
break;
|
|
385
387
|
}
|
|
386
|
-
|
|
388
|
+
|
|
387
389
|
if(config.editor){
|
|
388
390
|
column.modules.edit = config;
|
|
389
391
|
}
|
|
390
392
|
}
|
|
391
|
-
|
|
393
|
+
|
|
392
394
|
getCurrentCell(){
|
|
393
395
|
return this.currentCell ? this.currentCell.getComponent() : false;
|
|
394
396
|
}
|
|
395
|
-
|
|
397
|
+
|
|
396
398
|
clearEditor(cancel){
|
|
397
399
|
var cell = this.currentCell,
|
|
398
400
|
cellEl;
|
|
399
|
-
|
|
401
|
+
|
|
400
402
|
this.invalidEdit = false;
|
|
401
|
-
|
|
403
|
+
|
|
402
404
|
if(cell){
|
|
403
405
|
this.currentCell = false;
|
|
404
|
-
|
|
406
|
+
|
|
405
407
|
cellEl = cell.getElement();
|
|
406
|
-
|
|
408
|
+
|
|
407
409
|
this.dispatch("edit-editor-clear", cell, cancel);
|
|
408
|
-
|
|
410
|
+
|
|
409
411
|
cellEl.classList.remove("tabulator-editing");
|
|
410
|
-
|
|
412
|
+
|
|
411
413
|
while(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);
|
|
412
|
-
|
|
413
|
-
cell.row.getElement().classList.remove("tabulator-
|
|
414
|
+
|
|
415
|
+
cell.row.getElement().classList.remove("tabulator-editing");
|
|
416
|
+
|
|
417
|
+
cell.table.element.classList.remove("tabulator-editing");
|
|
414
418
|
}
|
|
415
419
|
}
|
|
416
|
-
|
|
420
|
+
|
|
417
421
|
cancelEdit(){
|
|
418
422
|
if(this.currentCell){
|
|
419
423
|
var cell = this.currentCell;
|
|
420
424
|
var component = this.currentCell.getComponent();
|
|
421
|
-
|
|
425
|
+
|
|
422
426
|
this.clearEditor(true);
|
|
423
427
|
cell.setValueActual(cell.getValue());
|
|
424
428
|
cell.cellRendered();
|
|
425
|
-
|
|
429
|
+
|
|
426
430
|
if(cell.column.definition.editor == "textarea" || cell.column.definition.variableHeight){
|
|
427
431
|
cell.row.normalizeHeight(true);
|
|
428
432
|
}
|
|
429
|
-
|
|
433
|
+
|
|
430
434
|
if(cell.column.definition.cellEditCancelled){
|
|
431
435
|
cell.column.definition.cellEditCancelled.call(this.table, component);
|
|
432
436
|
}
|
|
433
|
-
|
|
437
|
+
|
|
434
438
|
this.dispatch("edit-cancelled", cell);
|
|
435
439
|
this.dispatchExternal("cellEditCancelled", component);
|
|
436
440
|
}
|
|
437
441
|
}
|
|
438
|
-
|
|
442
|
+
|
|
439
443
|
//return a formatted value for a cell
|
|
440
444
|
bindEditor(cell){
|
|
441
445
|
if(cell.column.modules.edit){
|
|
442
446
|
var self = this,
|
|
443
447
|
element = cell.getElement(true);
|
|
444
|
-
|
|
448
|
+
|
|
449
|
+
this.updateCellClass(cell);
|
|
445
450
|
element.setAttribute("tabindex", 0);
|
|
446
|
-
|
|
451
|
+
|
|
447
452
|
element.addEventListener("click", function(e){
|
|
448
453
|
if(!element.classList.contains("tabulator-editing")){
|
|
449
454
|
element.focus({preventScroll: true});
|
|
450
455
|
}
|
|
451
456
|
});
|
|
452
|
-
|
|
457
|
+
|
|
453
458
|
element.addEventListener("mousedown", function(e){
|
|
454
459
|
if (e.button === 2) {
|
|
455
460
|
e.preventDefault();
|
|
@@ -457,7 +462,7 @@ class Edit extends Module{
|
|
|
457
462
|
self.mouseClick = true;
|
|
458
463
|
}
|
|
459
464
|
});
|
|
460
|
-
|
|
465
|
+
|
|
461
466
|
element.addEventListener("focus", function(e){
|
|
462
467
|
if(!self.recursionBlock){
|
|
463
468
|
self.edit(cell, e, false);
|
|
@@ -465,29 +470,28 @@ class Edit extends Module{
|
|
|
465
470
|
});
|
|
466
471
|
}
|
|
467
472
|
}
|
|
468
|
-
|
|
473
|
+
|
|
469
474
|
focusCellNoEvent(cell, block){
|
|
470
475
|
this.recursionBlock = true;
|
|
471
|
-
|
|
476
|
+
|
|
472
477
|
if(!(block && this.table.browser === "ie")){
|
|
473
478
|
cell.getElement().focus({preventScroll: true});
|
|
474
479
|
}
|
|
475
|
-
|
|
480
|
+
|
|
476
481
|
this.recursionBlock = false;
|
|
477
482
|
}
|
|
478
|
-
|
|
483
|
+
|
|
479
484
|
editCell(cell, forceEdit){
|
|
480
485
|
this.focusCellNoEvent(cell);
|
|
481
486
|
this.edit(cell, false, forceEdit);
|
|
482
487
|
}
|
|
483
|
-
|
|
488
|
+
|
|
484
489
|
focusScrollAdjust(cell){
|
|
485
490
|
if(this.table.rowManager.getRenderMode() == "virtual"){
|
|
486
491
|
var topEdge = this.table.rowManager.element.scrollTop,
|
|
487
492
|
bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,
|
|
488
|
-
rowEl = cell.row.getElement()
|
|
489
|
-
|
|
490
|
-
|
|
493
|
+
rowEl = cell.row.getElement();
|
|
494
|
+
|
|
491
495
|
if(rowEl.offsetTop < topEdge){
|
|
492
496
|
this.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);
|
|
493
497
|
}else{
|
|
@@ -495,24 +499,23 @@ class Edit extends Module{
|
|
|
495
499
|
this.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);
|
|
496
500
|
}
|
|
497
501
|
}
|
|
498
|
-
|
|
502
|
+
|
|
499
503
|
var leftEdge = this.table.rowManager.element.scrollLeft,
|
|
500
504
|
rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,
|
|
501
|
-
cellEl = cell.getElement()
|
|
502
|
-
|
|
503
|
-
|
|
505
|
+
cellEl = cell.getElement();
|
|
506
|
+
|
|
504
507
|
if(this.table.modExists("frozenColumns")){
|
|
505
508
|
leftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);
|
|
506
509
|
rightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);
|
|
507
510
|
}
|
|
508
|
-
|
|
511
|
+
|
|
509
512
|
if(this.table.options.renderHorizontal === "virtual"){
|
|
510
513
|
leftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);
|
|
511
514
|
rightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);
|
|
512
515
|
}
|
|
513
|
-
|
|
516
|
+
|
|
514
517
|
if(cellEl.offsetLeft < leftEdge){
|
|
515
|
-
|
|
518
|
+
|
|
516
519
|
this.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);
|
|
517
520
|
}else{
|
|
518
521
|
if(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){
|
|
@@ -521,14 +524,36 @@ class Edit extends Module{
|
|
|
521
524
|
}
|
|
522
525
|
}
|
|
523
526
|
}
|
|
527
|
+
|
|
528
|
+
allowEdit(cell) {
|
|
529
|
+
var check = cell.column.modules.edit ? true : false;
|
|
530
|
+
|
|
531
|
+
if(cell.column.modules.edit){
|
|
532
|
+
switch(typeof cell.column.modules.edit.check){
|
|
533
|
+
case "function":
|
|
534
|
+
check = cell.column.modules.edit.check(cell.getComponent());
|
|
535
|
+
break;
|
|
536
|
+
|
|
537
|
+
case "string":
|
|
538
|
+
check = !!cell.row.data[cell.column.modules.edit.check];
|
|
539
|
+
break;
|
|
540
|
+
|
|
541
|
+
case "boolean":
|
|
542
|
+
check = cell.column.modules.edit.check;
|
|
543
|
+
break;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
524
546
|
|
|
547
|
+
return check;
|
|
548
|
+
}
|
|
549
|
+
|
|
525
550
|
edit(cell, e, forceEdit){
|
|
526
551
|
var self = this,
|
|
527
552
|
allowEdit = true,
|
|
528
553
|
rendered = function(){},
|
|
529
554
|
element = cell.getElement(),
|
|
530
555
|
cellEditor, component, params;
|
|
531
|
-
|
|
556
|
+
|
|
532
557
|
//prevent editing if another cell is refusing to leave focus (eg. validation fail)
|
|
533
558
|
if(this.currentCell){
|
|
534
559
|
if(!this.invalidEdit){
|
|
@@ -536,28 +561,28 @@ class Edit extends Module{
|
|
|
536
561
|
}
|
|
537
562
|
return;
|
|
538
563
|
}
|
|
539
|
-
|
|
564
|
+
|
|
540
565
|
//handle successful value change
|
|
541
566
|
function success(value){
|
|
542
567
|
if(self.currentCell === cell){
|
|
543
568
|
var valid = self.chain("edit-success", [cell, value], true, true);
|
|
544
|
-
|
|
569
|
+
|
|
545
570
|
if(valid === true || self.table.options.validationMode === "highlight"){
|
|
546
571
|
self.clearEditor();
|
|
547
|
-
|
|
548
|
-
|
|
572
|
+
|
|
573
|
+
|
|
549
574
|
if(!cell.modules.edit){
|
|
550
575
|
cell.modules.edit = {};
|
|
551
576
|
}
|
|
552
|
-
|
|
577
|
+
|
|
553
578
|
cell.modules.edit.edited = true;
|
|
554
|
-
|
|
579
|
+
|
|
555
580
|
if(self.editedCells.indexOf(cell) == -1){
|
|
556
581
|
self.editedCells.push(cell);
|
|
557
582
|
}
|
|
558
|
-
|
|
583
|
+
|
|
559
584
|
cell.setValue(value, true);
|
|
560
|
-
|
|
585
|
+
|
|
561
586
|
return valid === true;
|
|
562
587
|
}else{
|
|
563
588
|
self.invalidEdit = true;
|
|
@@ -569,7 +594,7 @@ class Edit extends Module{
|
|
|
569
594
|
// console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
|
|
570
595
|
}
|
|
571
596
|
}
|
|
572
|
-
|
|
597
|
+
|
|
573
598
|
//handle aborted edit
|
|
574
599
|
function cancel(){
|
|
575
600
|
if(self.currentCell === cell){
|
|
@@ -578,70 +603,63 @@ class Edit extends Module{
|
|
|
578
603
|
// console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
|
|
579
604
|
}
|
|
580
605
|
}
|
|
581
|
-
|
|
606
|
+
|
|
582
607
|
function onRendered(callback){
|
|
583
608
|
rendered = callback;
|
|
584
609
|
}
|
|
585
|
-
|
|
610
|
+
|
|
586
611
|
if(!cell.column.modules.edit.blocked){
|
|
587
612
|
if(e){
|
|
588
613
|
e.stopPropagation();
|
|
589
614
|
}
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
allowEdit = cell.column.modules.edit.check(cell.getComponent());
|
|
594
|
-
break;
|
|
595
|
-
|
|
596
|
-
case "boolean":
|
|
597
|
-
allowEdit = cell.column.modules.edit.check;
|
|
598
|
-
break;
|
|
599
|
-
}
|
|
600
|
-
|
|
615
|
+
|
|
616
|
+
allowEdit = this.allowEdit(cell);
|
|
617
|
+
|
|
601
618
|
if(allowEdit || forceEdit){
|
|
602
|
-
|
|
619
|
+
|
|
603
620
|
self.cancelEdit();
|
|
604
|
-
|
|
621
|
+
|
|
605
622
|
self.currentCell = cell;
|
|
606
|
-
|
|
623
|
+
|
|
607
624
|
this.focusScrollAdjust(cell);
|
|
608
|
-
|
|
625
|
+
|
|
609
626
|
component = cell.getComponent();
|
|
610
|
-
|
|
627
|
+
|
|
611
628
|
if(this.mouseClick){
|
|
612
629
|
this.mouseClick = false;
|
|
613
|
-
|
|
630
|
+
|
|
614
631
|
if(cell.column.definition.cellClick){
|
|
615
632
|
cell.column.definition.cellClick.call(this.table, e, component);
|
|
616
633
|
}
|
|
617
634
|
}
|
|
618
|
-
|
|
635
|
+
|
|
619
636
|
if(cell.column.definition.cellEditing){
|
|
620
637
|
cell.column.definition.cellEditing.call(this.table, component);
|
|
621
638
|
}
|
|
622
|
-
|
|
639
|
+
|
|
623
640
|
this.dispatch("cell-editing", cell);
|
|
624
641
|
this.dispatchExternal("cellEditing", component);
|
|
625
|
-
|
|
642
|
+
|
|
626
643
|
params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
|
|
627
|
-
|
|
644
|
+
|
|
628
645
|
cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
|
|
629
|
-
|
|
646
|
+
|
|
630
647
|
//if editor returned, add to DOM, if false, abort edit
|
|
631
648
|
if(cellEditor !== false){
|
|
632
|
-
|
|
649
|
+
|
|
633
650
|
if(cellEditor instanceof Node){
|
|
634
651
|
element.classList.add("tabulator-editing");
|
|
635
|
-
cell.row.getElement().classList.add("tabulator-
|
|
652
|
+
cell.row.getElement().classList.add("tabulator-editing");
|
|
653
|
+
cell.table.element.classList.add("tabulator-editing");
|
|
636
654
|
while(element.firstChild) element.removeChild(element.firstChild);
|
|
637
655
|
element.appendChild(cellEditor);
|
|
638
|
-
|
|
656
|
+
|
|
639
657
|
//trigger onRendered Callback
|
|
640
658
|
rendered();
|
|
641
|
-
|
|
659
|
+
|
|
642
660
|
//prevent editing from triggering rowClick event
|
|
643
661
|
var children = element.children;
|
|
644
|
-
|
|
662
|
+
|
|
645
663
|
for (var i = 0; i < children.length; i++) {
|
|
646
664
|
children[i].addEventListener("click", function(e){
|
|
647
665
|
e.stopPropagation();
|
|
@@ -652,12 +670,12 @@ class Edit extends Module{
|
|
|
652
670
|
element.blur();
|
|
653
671
|
return false;
|
|
654
672
|
}
|
|
655
|
-
|
|
673
|
+
|
|
656
674
|
}else{
|
|
657
675
|
element.blur();
|
|
658
676
|
return false;
|
|
659
677
|
}
|
|
660
|
-
|
|
678
|
+
|
|
661
679
|
return true;
|
|
662
680
|
}else{
|
|
663
681
|
this.mouseClick = false;
|
|
@@ -670,28 +688,28 @@ class Edit extends Module{
|
|
|
670
688
|
return false;
|
|
671
689
|
}
|
|
672
690
|
}
|
|
673
|
-
|
|
691
|
+
|
|
674
692
|
getEditedCells(){
|
|
675
693
|
var output = [];
|
|
676
|
-
|
|
694
|
+
|
|
677
695
|
this.editedCells.forEach((cell) => {
|
|
678
696
|
output.push(cell.getComponent());
|
|
679
697
|
});
|
|
680
|
-
|
|
698
|
+
|
|
681
699
|
return output;
|
|
682
700
|
}
|
|
683
|
-
|
|
701
|
+
|
|
684
702
|
clearEdited(cell){
|
|
685
703
|
var editIndex;
|
|
686
|
-
|
|
704
|
+
|
|
687
705
|
if(cell.modules.edit && cell.modules.edit.edited){
|
|
688
706
|
cell.modules.edit.edited = false;
|
|
689
|
-
|
|
707
|
+
|
|
690
708
|
this.dispatch("edit-edited-clear", cell);
|
|
691
709
|
}
|
|
692
|
-
|
|
710
|
+
|
|
693
711
|
editIndex = this.editedCells.indexOf(cell);
|
|
694
|
-
|
|
712
|
+
|
|
695
713
|
if(editIndex > -1){
|
|
696
714
|
this.editedCells.splice(editIndex, 1);
|
|
697
715
|
}
|