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
|
@@ -194,10 +194,9 @@ class Filter extends Module{
|
|
|
194
194
|
//initialize column header filter
|
|
195
195
|
initializeColumn(column, value){
|
|
196
196
|
var self = this,
|
|
197
|
-
field = column.getField()
|
|
198
|
-
params;
|
|
197
|
+
field = column.getField();
|
|
199
198
|
|
|
200
|
-
//handle
|
|
199
|
+
//handle successfully value change
|
|
201
200
|
function success(value){
|
|
202
201
|
var filterType = (column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text") || column.modules.filter.tagType == "textarea" ? "partial" : "match",
|
|
203
202
|
type = "",
|
|
@@ -213,59 +212,59 @@ class Filter extends Module{
|
|
|
213
212
|
|
|
214
213
|
switch(typeof column.definition.headerFilterFunc){
|
|
215
214
|
case "string":
|
|
216
|
-
|
|
217
|
-
|
|
215
|
+
if(Filter.filters[column.definition.headerFilterFunc]){
|
|
216
|
+
type = column.definition.headerFilterFunc;
|
|
217
|
+
filterFunc = function(data){
|
|
218
|
+
var params = column.definition.headerFilterFuncParams || {};
|
|
219
|
+
var fieldVal = column.getFieldValue(data);
|
|
220
|
+
|
|
221
|
+
params = typeof params === "function" ? params(value, fieldVal, data) : params;
|
|
222
|
+
|
|
223
|
+
return Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
|
|
224
|
+
};
|
|
225
|
+
}else{
|
|
226
|
+
console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
|
|
227
|
+
}
|
|
228
|
+
break;
|
|
229
|
+
|
|
230
|
+
case "function":
|
|
218
231
|
filterFunc = function(data){
|
|
219
232
|
var params = column.definition.headerFilterFuncParams || {};
|
|
220
233
|
var fieldVal = column.getFieldValue(data);
|
|
221
234
|
|
|
222
235
|
params = typeof params === "function" ? params(value, fieldVal, data) : params;
|
|
223
236
|
|
|
224
|
-
return
|
|
237
|
+
return column.definition.headerFilterFunc(value, fieldVal, data, params);
|
|
225
238
|
};
|
|
226
|
-
}else{
|
|
227
|
-
console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
|
|
228
|
-
}
|
|
229
|
-
break;
|
|
230
239
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
var params = column.definition.headerFilterFuncParams || {};
|
|
234
|
-
var fieldVal = column.getFieldValue(data);
|
|
235
|
-
|
|
236
|
-
params = typeof params === "function" ? params(value, fieldVal, data) : params;
|
|
237
|
-
|
|
238
|
-
return column.definition.headerFilterFunc(value, fieldVal, data, params);
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
type = filterFunc;
|
|
242
|
-
break;
|
|
240
|
+
type = filterFunc;
|
|
241
|
+
break;
|
|
243
242
|
}
|
|
244
243
|
|
|
245
244
|
if(!filterFunc){
|
|
246
245
|
switch(filterType){
|
|
247
246
|
case "partial":
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
247
|
+
filterFunc = function(data){
|
|
248
|
+
var colVal = column.getFieldValue(data);
|
|
249
|
+
|
|
250
|
+
if(typeof colVal !== 'undefined' && colVal !== null){
|
|
251
|
+
return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
|
|
252
|
+
}else{
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
type = "like";
|
|
257
|
+
break;
|
|
259
258
|
|
|
260
259
|
default:
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
260
|
+
filterFunc = function(data){
|
|
261
|
+
return column.getFieldValue(data) == value;
|
|
262
|
+
};
|
|
263
|
+
type = "=";
|
|
265
264
|
}
|
|
266
265
|
}
|
|
267
266
|
|
|
268
|
-
self.headerFilters[field] = {value:value, func:filterFunc, type:type
|
|
267
|
+
self.headerFilters[field] = {value:value, func:filterFunc, type:type};
|
|
269
268
|
}else{
|
|
270
269
|
delete self.headerFilters[field];
|
|
271
270
|
}
|
|
@@ -314,7 +313,7 @@ class Filter extends Module{
|
|
|
314
313
|
|
|
315
314
|
//set empty value function
|
|
316
315
|
column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){
|
|
317
|
-
return !value && value !==
|
|
316
|
+
return !value && value !== 0;
|
|
318
317
|
};
|
|
319
318
|
|
|
320
319
|
filterElement = document.createElement("div");
|
|
@@ -323,40 +322,40 @@ class Filter extends Module{
|
|
|
323
322
|
//set column editor
|
|
324
323
|
switch(typeof column.definition.headerFilter){
|
|
325
324
|
case "string":
|
|
326
|
-
|
|
327
|
-
|
|
325
|
+
if(self.table.modules.edit.editors[column.definition.headerFilter]){
|
|
326
|
+
editor = self.table.modules.edit.editors[column.definition.headerFilter];
|
|
328
327
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
328
|
+
if((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck){
|
|
329
|
+
column.modules.filter.emptyFunc = function(value){
|
|
330
|
+
return value !== true && value !== false;
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
}else{
|
|
334
|
+
console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
|
|
333
335
|
}
|
|
334
|
-
|
|
335
|
-
console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
|
|
336
|
-
}
|
|
337
|
-
break;
|
|
336
|
+
break;
|
|
338
337
|
|
|
339
338
|
case "function":
|
|
340
|
-
|
|
341
|
-
|
|
339
|
+
editor = column.definition.headerFilter;
|
|
340
|
+
break;
|
|
342
341
|
|
|
343
342
|
case "boolean":
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
343
|
+
if(column.modules.edit && column.modules.edit.editor){
|
|
344
|
+
editor = column.modules.edit.editor;
|
|
345
|
+
}else{
|
|
346
|
+
if(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){
|
|
347
|
+
editor = self.table.modules.edit.editors[column.definition.formatter];
|
|
349
348
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
349
|
+
if((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck){
|
|
350
|
+
column.modules.filter.emptyFunc = function(value){
|
|
351
|
+
return value !== true && value !== false;
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
}else{
|
|
355
|
+
editor = self.table.modules.edit.editors["input"];
|
|
354
356
|
}
|
|
355
|
-
}else{
|
|
356
|
-
editor = self.table.modules.edit.editors["input"];
|
|
357
357
|
}
|
|
358
|
-
|
|
359
|
-
break;
|
|
358
|
+
break;
|
|
360
359
|
}
|
|
361
360
|
|
|
362
361
|
if(editor){
|
|
@@ -374,6 +373,9 @@ class Filter extends Module{
|
|
|
374
373
|
getColumn:function(){
|
|
375
374
|
return column.getComponent();
|
|
376
375
|
},
|
|
376
|
+
getTable:() => {
|
|
377
|
+
return this.table;
|
|
378
|
+
},
|
|
377
379
|
getRow:function(){
|
|
378
380
|
return {
|
|
379
381
|
normalizeHeight:function(){
|
|
@@ -400,15 +402,9 @@ class Filter extends Module{
|
|
|
400
402
|
}
|
|
401
403
|
|
|
402
404
|
//set Placeholder Text
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
});
|
|
407
|
-
}else{
|
|
408
|
-
self.langBind("headerFilters|default", function(value){
|
|
409
|
-
editorElement.setAttribute("placeholder", value);
|
|
410
|
-
});
|
|
411
|
-
}
|
|
405
|
+
self.langBind("headerFilters|columns|" + column.definition.field, function(value){
|
|
406
|
+
editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.langText("headerFilters|default"));
|
|
407
|
+
});
|
|
412
408
|
|
|
413
409
|
//focus on element on click
|
|
414
410
|
editorElement.addEventListener("click", function(e){
|
|
@@ -453,28 +449,28 @@ class Filter extends Module{
|
|
|
453
449
|
((column.definition.editor === 'autocomplete' ||
|
|
454
450
|
column.definition.editor === 'tickCross') &&
|
|
455
451
|
column.definition.headerFilter === true)
|
|
456
|
-
|
|
457
|
-
|
|
452
|
+
)
|
|
453
|
+
) {
|
|
458
454
|
editorElement.addEventListener("keyup", searchTrigger);
|
|
459
|
-
|
|
455
|
+
editorElement.addEventListener("search", searchTrigger);
|
|
460
456
|
|
|
461
457
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
458
|
+
//update number filtered columns on change
|
|
459
|
+
if(column.modules.filter.attrType == "number"){
|
|
460
|
+
editorElement.addEventListener("change", function(e){
|
|
461
|
+
success(editorElement.value);
|
|
462
|
+
});
|
|
463
|
+
}
|
|
468
464
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
465
|
+
//change text inputs to search inputs to allow for clearing of field
|
|
466
|
+
if(column.modules.filter.attrType == "text" && this.table.browser !== "ie"){
|
|
467
|
+
editorElement.setAttribute("type", "search");
|
|
472
468
|
// editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
|
|
473
|
-
|
|
469
|
+
}
|
|
474
470
|
|
|
475
|
-
|
|
471
|
+
}
|
|
476
472
|
|
|
477
|
-
//prevent input and select elements from
|
|
473
|
+
//prevent input and select elements from propagating click to column sorters etc
|
|
478
474
|
if(column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea"){
|
|
479
475
|
editorElement.addEventListener("mousedown",function(e){
|
|
480
476
|
e.stopPropagation();
|
|
@@ -513,7 +509,7 @@ class Filter extends Module{
|
|
|
513
509
|
});
|
|
514
510
|
}
|
|
515
511
|
|
|
516
|
-
//
|
|
512
|
+
//programmatically set focus of header filter
|
|
517
513
|
setHeaderFilterFocus(column){
|
|
518
514
|
if(column.modules.filter && column.modules.filter.headerElement){
|
|
519
515
|
column.modules.filter.headerElement.focus();
|
|
@@ -531,7 +527,7 @@ class Filter extends Module{
|
|
|
531
527
|
}
|
|
532
528
|
}
|
|
533
529
|
|
|
534
|
-
//
|
|
530
|
+
//programmatically set value of header filter
|
|
535
531
|
setHeaderFilterValue(column, value){
|
|
536
532
|
if (column){
|
|
537
533
|
if(column.modules.filter && column.modules.filter.headerElement){
|
|
@@ -624,7 +620,7 @@ class Filter extends Module{
|
|
|
624
620
|
|
|
625
621
|
if(typeof filter.field == "function"){
|
|
626
622
|
filterFunc = function(data){
|
|
627
|
-
return filter.field(data, filter.type || {})
|
|
623
|
+
return filter.field(data, filter.type || {});// pass params to custom filter function
|
|
628
624
|
};
|
|
629
625
|
}else{
|
|
630
626
|
|
|
@@ -698,7 +694,7 @@ class Filter extends Module{
|
|
|
698
694
|
if(Array.isArray(filter)){
|
|
699
695
|
output.push(this.filtersToArray(filter, ajax));
|
|
700
696
|
}else{
|
|
701
|
-
item = {field:filter.field, type:filter.type, value:filter.value}
|
|
697
|
+
item = {field:filter.field, type:filter.type, value:filter.value};
|
|
702
698
|
|
|
703
699
|
if(ajax){
|
|
704
700
|
if(typeof item.type == "function"){
|
|
@@ -726,8 +722,6 @@ class Filter extends Module{
|
|
|
726
722
|
|
|
727
723
|
//remove filter from array
|
|
728
724
|
removeFilter(field, type, value){
|
|
729
|
-
var changed = false;
|
|
730
|
-
|
|
731
725
|
if(!Array.isArray(field)){
|
|
732
726
|
field = [{field:field, type:type, value:value}];
|
|
733
727
|
}
|
|
@@ -747,7 +741,6 @@ class Filter extends Module{
|
|
|
747
741
|
|
|
748
742
|
if(index > -1){
|
|
749
743
|
this.filterList.splice(index, 1);
|
|
750
|
-
changed = true;
|
|
751
744
|
}else{
|
|
752
745
|
console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
|
|
753
746
|
}
|
|
@@ -51,21 +51,21 @@ class Format extends Module{
|
|
|
51
51
|
//set column formatter
|
|
52
52
|
switch(typeof formatter){
|
|
53
53
|
case "string":
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
if(Format.formatters[formatter]){
|
|
55
|
+
config.formatter = Format.formatters[formatter];
|
|
56
|
+
}else{
|
|
57
|
+
console.warn("Formatter Error - No such formatter found: ", formatter);
|
|
58
|
+
config.formatter = Format.formatters.plaintext;
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
61
|
|
|
62
62
|
case "function":
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
config.formatter = formatter;
|
|
64
|
+
break;
|
|
65
65
|
|
|
66
66
|
default:
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
config.formatter = Format.formatters.plaintext;
|
|
68
|
+
break;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
return config;
|
|
@@ -131,7 +131,7 @@ class Format extends Module{
|
|
|
131
131
|
params;
|
|
132
132
|
|
|
133
133
|
if(formatter){
|
|
134
|
-
params = typeof formatter.params === "function" ? formatter.params(
|
|
134
|
+
params = typeof formatter.params === "function" ? formatter.params(cell.getComponent()) : formatter.params;
|
|
135
135
|
|
|
136
136
|
function onRendered(callback){
|
|
137
137
|
if(!cell.modules.format){
|
|
@@ -162,7 +162,7 @@ class Format extends Module{
|
|
|
162
162
|
'=': '='
|
|
163
163
|
};
|
|
164
164
|
|
|
165
|
-
return String(value).replace(/[&<>"'
|
|
165
|
+
return String(value).replace(/[&<>"'`=/]/g, function (s) {
|
|
166
166
|
return entityMap[s];
|
|
167
167
|
});
|
|
168
168
|
}else{
|
|
@@ -176,25 +176,23 @@ class Format extends Module{
|
|
|
176
176
|
|
|
177
177
|
//get formatter for cell
|
|
178
178
|
getFormatter(formatter){
|
|
179
|
-
var formatter;
|
|
180
|
-
|
|
181
179
|
switch(typeof formatter){
|
|
182
180
|
case "string":
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
181
|
+
if(Format.formatters[formatter]){
|
|
182
|
+
formatter = Format.formatters[formatter];
|
|
183
|
+
}else{
|
|
184
|
+
console.warn("Formatter Error - No such formatter found: ", formatter);
|
|
185
|
+
formatter = Format.formatters.plaintext;
|
|
186
|
+
}
|
|
187
|
+
break;
|
|
190
188
|
|
|
191
189
|
case "function":
|
|
192
|
-
|
|
193
|
-
|
|
190
|
+
//Custom formatter Function, do nothing
|
|
191
|
+
break;
|
|
194
192
|
|
|
195
193
|
default:
|
|
196
|
-
|
|
197
|
-
|
|
194
|
+
formatter = Format.formatters.plaintext;
|
|
195
|
+
break;
|
|
198
196
|
}
|
|
199
197
|
|
|
200
198
|
return formatter;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export default function(cell, formatterParams, onRendered){
|
|
2
2
|
return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
|
|
3
|
-
}
|
|
3
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export default function(cell, formatterParams, onRendered){
|
|
2
2
|
return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
|
|
3
|
-
}
|
|
3
|
+
}
|
|
@@ -9,12 +9,12 @@ export default function(cell, formatterParams, onRendered){
|
|
|
9
9
|
var newDatetime;
|
|
10
10
|
|
|
11
11
|
if(DT.isDateTime(value)){
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
newDatetime = value;
|
|
13
|
+
}else if(inputFormat === "iso"){
|
|
14
|
+
newDatetime = DT.fromISO(String(value));
|
|
15
|
+
}else{
|
|
16
|
+
newDatetime = DT.fromFormat(String(value), inputFormat);
|
|
17
|
+
}
|
|
18
18
|
|
|
19
19
|
if(newDatetime.isValid){
|
|
20
20
|
if(formatterParams.timezone){
|
|
@@ -34,4 +34,4 @@ export default function(cell, formatterParams, onRendered){
|
|
|
34
34
|
}else{
|
|
35
35
|
console.error("Format Error - 'datetime' formatter is dependant on luxon.js");
|
|
36
36
|
}
|
|
37
|
-
}
|
|
37
|
+
}
|
|
@@ -12,12 +12,12 @@ export default function (cell, formatterParams, onRendered) {
|
|
|
12
12
|
var newDatetime;
|
|
13
13
|
|
|
14
14
|
if(DT.isDateTime(value)){
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
newDatetime = value;
|
|
16
|
+
}else if(inputFormat === "iso"){
|
|
17
|
+
newDatetime = DT.fromISO(String(value));
|
|
18
|
+
}else{
|
|
19
|
+
newDatetime = DT.fromFormat(String(value), inputFormat);
|
|
20
|
+
}
|
|
21
21
|
|
|
22
22
|
if (newDatetime.isValid){
|
|
23
23
|
if(humanize){
|
|
@@ -38,4 +38,4 @@ export default function (cell, formatterParams, onRendered) {
|
|
|
38
38
|
}else{
|
|
39
39
|
console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js");
|
|
40
40
|
}
|
|
41
|
-
}
|
|
41
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export default function(cell, formatterParams, onRendered){
|
|
2
2
|
cell.getElement().classList.add("tabulator-row-handle");
|
|
3
3
|
return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
|
|
4
|
-
}
|
|
4
|
+
}
|
|
@@ -14,22 +14,22 @@ export default function(cell, formatterParams, onRendered){
|
|
|
14
14
|
|
|
15
15
|
switch(typeof formatterParams.height){
|
|
16
16
|
case "number":
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
el.style.height = formatterParams.height + "px";
|
|
18
|
+
break;
|
|
19
19
|
|
|
20
20
|
case "string":
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
el.style.height = formatterParams.height;
|
|
22
|
+
break;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
switch(typeof formatterParams.width){
|
|
26
26
|
case "number":
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
el.style.width = formatterParams.width + "px";
|
|
28
|
+
break;
|
|
29
29
|
|
|
30
30
|
case "string":
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
el.style.width = formatterParams.width;
|
|
32
|
+
break;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
el.addEventListener("load", function(){
|
|
@@ -37,4 +37,4 @@ export default function(cell, formatterParams, onRendered){
|
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
return el;
|
|
40
|
-
}
|
|
40
|
+
}
|
|
@@ -15,7 +15,7 @@ export default function(cell, formatterParams, onRendered){
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
return value;
|
|
18
|
-
}
|
|
18
|
+
}
|
|
19
19
|
|
|
20
20
|
if(formatterParams.labelField){
|
|
21
21
|
data = cell.getData();
|
|
@@ -25,12 +25,12 @@ export default function(cell, formatterParams, onRendered){
|
|
|
25
25
|
if(formatterParams.label){
|
|
26
26
|
switch(typeof formatterParams.label){
|
|
27
27
|
case "string":
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
label = formatterParams.label;
|
|
29
|
+
break;
|
|
30
30
|
|
|
31
31
|
case "function":
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
label = formatterParams.label(cell);
|
|
33
|
+
break;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -43,12 +43,12 @@ export default function(cell, formatterParams, onRendered){
|
|
|
43
43
|
if(formatterParams.url){
|
|
44
44
|
switch(typeof formatterParams.url){
|
|
45
45
|
case "string":
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
value = formatterParams.url;
|
|
47
|
+
break;
|
|
48
48
|
|
|
49
49
|
case "function":
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
value = formatterParams.url(cell);
|
|
51
|
+
break;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -75,4 +75,4 @@ export default function(cell, formatterParams, onRendered){
|
|
|
75
75
|
}else{
|
|
76
76
|
return " ";
|
|
77
77
|
}
|
|
78
|
-
}
|
|
78
|
+
}
|