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.
Files changed (214) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.js +28 -0
  3. package/.github/workflows/bad-files-check.yml +39 -0
  4. package/.github/workflows/lint-and-test.yml +31 -0
  5. package/README.md +3 -3
  6. package/bower.json +1 -1
  7. package/build/Bundler.js +77 -77
  8. package/dist/css/tabulator.css +12 -7
  9. package/dist/css/tabulator.css.map +1 -1
  10. package/dist/css/tabulator.min.css +1 -1
  11. package/dist/css/tabulator.min.css.map +1 -1
  12. package/dist/css/tabulator_bootstrap3.css +12 -7
  13. package/dist/css/tabulator_bootstrap3.css.map +1 -1
  14. package/dist/css/tabulator_bootstrap3.min.css +1 -1
  15. package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
  16. package/dist/css/tabulator_bootstrap4.css +12 -7
  17. package/dist/css/tabulator_bootstrap4.css.map +1 -1
  18. package/dist/css/tabulator_bootstrap4.min.css +1 -1
  19. package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
  20. package/dist/css/tabulator_bootstrap5.css +12 -7
  21. package/dist/css/tabulator_bootstrap5.css.map +1 -1
  22. package/dist/css/tabulator_bootstrap5.min.css +1 -1
  23. package/dist/css/tabulator_bootstrap5.min.css.map +1 -1
  24. package/dist/css/tabulator_bulma.css +12 -7
  25. package/dist/css/tabulator_bulma.css.map +1 -1
  26. package/dist/css/tabulator_bulma.min.css +1 -1
  27. package/dist/css/tabulator_bulma.min.css.map +1 -1
  28. package/dist/css/tabulator_materialize.css +12 -7
  29. package/dist/css/tabulator_materialize.css.map +1 -1
  30. package/dist/css/tabulator_materialize.min.css +1 -1
  31. package/dist/css/tabulator_materialize.min.css.map +1 -1
  32. package/dist/css/tabulator_midnight.css +12 -7
  33. package/dist/css/tabulator_midnight.css.map +1 -1
  34. package/dist/css/tabulator_midnight.min.css +1 -1
  35. package/dist/css/tabulator_midnight.min.css.map +1 -1
  36. package/dist/css/tabulator_modern.css +12 -7
  37. package/dist/css/tabulator_modern.css.map +1 -1
  38. package/dist/css/tabulator_modern.min.css +1 -1
  39. package/dist/css/tabulator_modern.min.css.map +1 -1
  40. package/dist/css/tabulator_semanticui.css +12 -7
  41. package/dist/css/tabulator_semanticui.css.map +1 -1
  42. package/dist/css/tabulator_semanticui.min.css +1 -1
  43. package/dist/css/tabulator_semanticui.min.css.map +1 -1
  44. package/dist/css/tabulator_simple.css +12 -7
  45. package/dist/css/tabulator_simple.css.map +1 -1
  46. package/dist/css/tabulator_simple.min.css +1 -1
  47. package/dist/css/tabulator_simple.min.css.map +1 -1
  48. package/dist/css/tabulator_site.css +12 -7
  49. package/dist/css/tabulator_site.css.map +1 -1
  50. package/dist/css/tabulator_site.min.css +1 -1
  51. package/dist/css/tabulator_site.min.css.map +1 -1
  52. package/dist/js/jquery_wrapper.js +37 -37
  53. package/dist/js/tabulator.js +1551 -793
  54. package/dist/js/tabulator.js.map +1 -1
  55. package/dist/js/tabulator.min.js +2 -2
  56. package/dist/js/tabulator.min.js.map +1 -1
  57. package/dist/js/tabulator_esm.js +4300 -3581
  58. package/dist/js/tabulator_esm.js.map +1 -1
  59. package/dist/js/tabulator_esm.min.js +2 -2
  60. package/dist/js/tabulator_esm.min.js.map +1 -1
  61. package/package.json +4 -1
  62. package/src/js/builds/jquery_wrapper.js +37 -37
  63. package/src/js/core/ColumnManager.js +270 -232
  64. package/src/js/core/CoreFeature.js +16 -2
  65. package/src/js/core/FooterManager.js +10 -10
  66. package/src/js/core/Module.js +8 -8
  67. package/src/js/core/RowManager.js +139 -156
  68. package/src/js/core/Tabulator.js +88 -74
  69. package/src/js/core/TabulatorFull.js +1 -1
  70. package/src/js/core/cell/Cell.js +15 -16
  71. package/src/js/core/cell/CellComponent.js +2 -2
  72. package/src/js/core/column/Column.js +81 -68
  73. package/src/js/core/column/ColumnComponent.js +4 -4
  74. package/src/js/core/column/defaults/options.js +1 -1
  75. package/src/js/core/defaults/options.js +4 -2
  76. package/src/js/core/rendering/Renderer.js +19 -19
  77. package/src/js/core/rendering/renderers/BasicHorizontal.js +1 -2
  78. package/src/js/core/rendering/renderers/BasicVertical.js +1 -1
  79. package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +42 -58
  80. package/src/js/core/rendering/renderers/VirtualDomVertical.js +31 -22
  81. package/src/js/core/row/Row.js +32 -8
  82. package/src/js/core/row/RowComponent.js +8 -4
  83. package/src/js/core/tools/Alert.js +44 -45
  84. package/src/js/core/tools/ComponentFunctionBinder.js +4 -2
  85. package/src/js/core/tools/DataLoader.js +3 -3
  86. package/src/js/core/tools/DeprecationAdvisor.js +47 -0
  87. package/src/js/core/tools/ExternalEventBus.js +5 -5
  88. package/src/js/core/tools/InteractionMonitor.js +41 -39
  89. package/src/js/core/tools/InternalEventBus.js +5 -5
  90. package/src/js/core/tools/ModuleBinder.js +6 -6
  91. package/src/js/core/tools/OptionsList.js +4 -4
  92. package/src/js/core/tools/Popup.js +211 -202
  93. package/src/js/modules/Accessor/Accessor.js +16 -16
  94. package/src/js/modules/Accessor/defaults/accessors.js +1 -1
  95. package/src/js/modules/Ajax/Ajax.js +7 -7
  96. package/src/js/modules/Ajax/defaults/loaderPromise.js +19 -19
  97. package/src/js/modules/Ajax/defaults/urlGenerator.js +1 -1
  98. package/src/js/modules/Clipboard/Clipboard.js +23 -23
  99. package/src/js/modules/Clipboard/defaults/pasteParsers.js +0 -2
  100. package/src/js/modules/ColumnCalcs/CalcComponent.js +2 -2
  101. package/src/js/modules/ColumnCalcs/ColumnCalcs.js +55 -51
  102. package/src/js/modules/ColumnCalcs/defaults/calculations.js +1 -1
  103. package/src/js/modules/DataTree/DataTree.js +24 -15
  104. package/src/js/modules/Download/Download.js +15 -8
  105. package/src/js/modules/Download/defaults/downloaders/csv.js +28 -28
  106. package/src/js/modules/Download/defaults/downloaders/html.js +2 -2
  107. package/src/js/modules/Download/defaults/downloaders/json.js +14 -14
  108. package/src/js/modules/Download/defaults/downloaders/jsonLines.js +1 -1
  109. package/src/js/modules/Download/defaults/downloaders/pdf.js +17 -19
  110. package/src/js/modules/Download/defaults/downloaders/xlsx.js +2 -2
  111. package/src/js/modules/Edit/Edit.js +219 -201
  112. package/src/js/modules/Edit/List.js +1026 -1006
  113. package/src/js/modules/Edit/defaults/editors/autocomplete.js +3 -3
  114. package/src/js/modules/Edit/defaults/editors/date.js +110 -0
  115. package/src/js/modules/Edit/defaults/editors/datetime.js +97 -0
  116. package/src/js/modules/Edit/defaults/editors/input.js +7 -7
  117. package/src/js/modules/Edit/defaults/editors/list.js +2 -2
  118. package/src/js/modules/Edit/defaults/editors/number.js +12 -12
  119. package/src/js/modules/Edit/defaults/editors/progress.js +11 -11
  120. package/src/js/modules/Edit/defaults/editors/range.js +5 -5
  121. package/src/js/modules/Edit/defaults/editors/select.js +3 -3
  122. package/src/js/modules/Edit/defaults/editors/star.js +9 -9
  123. package/src/js/modules/Edit/defaults/editors/textarea.js +97 -92
  124. package/src/js/modules/Edit/defaults/editors/tickCross.js +1 -3
  125. package/src/js/modules/Edit/defaults/editors/time.js +98 -0
  126. package/src/js/modules/Edit/defaults/editors.js +8 -2
  127. package/src/js/modules/Edit/inputMask.js +19 -26
  128. package/src/js/modules/Export/Export.js +69 -65
  129. package/src/js/modules/Filter/Filter.js +88 -95
  130. package/src/js/modules/Format/Format.js +24 -26
  131. package/src/js/modules/Format/defaults/formatters/buttonCross.js +1 -1
  132. package/src/js/modules/Format/defaults/formatters/buttonTick.js +1 -1
  133. package/src/js/modules/Format/defaults/formatters/color.js +1 -1
  134. package/src/js/modules/Format/defaults/formatters/datetime.js +7 -7
  135. package/src/js/modules/Format/defaults/formatters/datetimediff.js +7 -7
  136. package/src/js/modules/Format/defaults/formatters/handle.js +1 -1
  137. package/src/js/modules/Format/defaults/formatters/html.js +1 -1
  138. package/src/js/modules/Format/defaults/formatters/image.js +9 -9
  139. package/src/js/modules/Format/defaults/formatters/link.js +10 -10
  140. package/src/js/modules/Format/defaults/formatters/lookup.js +1 -1
  141. package/src/js/modules/Format/defaults/formatters/money.js +1 -1
  142. package/src/js/modules/Format/defaults/formatters/plaintext.js +1 -1
  143. package/src/js/modules/Format/defaults/formatters/progress.js +41 -42
  144. package/src/js/modules/Format/defaults/formatters/responsiveCollapse.js +3 -3
  145. package/src/js/modules/Format/defaults/formatters/rowSelection.js +1 -1
  146. package/src/js/modules/Format/defaults/formatters/rownum.js +9 -2
  147. package/src/js/modules/Format/defaults/formatters/star.js +1 -1
  148. package/src/js/modules/Format/defaults/formatters/textarea.js +1 -1
  149. package/src/js/modules/Format/defaults/formatters/tickCross.js +1 -1
  150. package/src/js/modules/Format/defaults/formatters/traffic.js +14 -14
  151. package/src/js/modules/FrozenColumns/FrozenColumns.js +6 -8
  152. package/src/js/modules/FrozenRows/FrozenRows.js +37 -7
  153. package/src/js/modules/GroupRows/Group.js +7 -7
  154. package/src/js/modules/GroupRows/GroupComponent.js +2 -2
  155. package/src/js/modules/GroupRows/GroupRows.js +34 -11
  156. package/src/js/modules/History/History.js +2 -2
  157. package/src/js/modules/HtmlTableImport/HtmlTableImport.js +3 -6
  158. package/src/js/modules/Import/Import.js +158 -159
  159. package/src/js/modules/Import/defaults/importers/array.js +5 -0
  160. package/src/js/modules/Import/defaults/importers/csv.js +49 -49
  161. package/src/js/modules/Import/defaults/importers/json.js +6 -6
  162. package/src/js/modules/Import/defaults/importers.js +2 -0
  163. package/src/js/modules/Interaction/Interaction.js +42 -43
  164. package/src/js/modules/Keybindings/Keybindings.js +14 -14
  165. package/src/js/modules/Keybindings/defaults/actions.js +1 -2
  166. package/src/js/modules/Layout/Layout.js +4 -5
  167. package/src/js/modules/Layout/defaults/modes/fitColumns.js +13 -16
  168. package/src/js/modules/Layout/defaults/modes/fitData.js +6 -4
  169. package/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +2 -2
  170. package/src/js/modules/Layout/defaults/modes/fitDataStretch.js +2 -2
  171. package/src/js/modules/Localize/Localize.js +7 -7
  172. package/src/js/modules/Menu/Menu.js +8 -11
  173. package/src/js/modules/MoveColumns/MoveColumns.js +3 -6
  174. package/src/js/modules/MoveRows/MoveRows.js +30 -36
  175. package/src/js/modules/Mutator/Mutator.js +9 -9
  176. package/src/js/modules/Page/Page.js +73 -80
  177. package/src/js/modules/Page/defaults/pageCounters/pages.js +2 -2
  178. package/src/js/modules/Page/defaults/pageCounters/rows.js +1 -1
  179. package/src/js/modules/Persistence/Persistence.js +40 -44
  180. package/src/js/modules/Persistence/defaults/readers.js +1 -1
  181. package/src/js/modules/Popup/Popup.js +4 -5
  182. package/src/js/modules/Print/Print.js +2 -2
  183. package/src/js/modules/ReactiveData/ReactiveData.js +178 -115
  184. package/src/js/modules/ResizeColumns/ResizeColumns.js +3 -3
  185. package/src/js/modules/ResizeRows/ResizeRows.js +1 -1
  186. package/src/js/modules/ResizeTable/ResizeTable.js +77 -46
  187. package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +3 -5
  188. package/src/js/modules/SelectRow/SelectRow.js +26 -28
  189. package/src/js/modules/Sort/Sort.js +113 -85
  190. package/src/js/modules/Sort/defaults/sorters/alphanum.js +1 -1
  191. package/src/js/modules/Sort/defaults/sorters/array.js +24 -28
  192. package/src/js/modules/Sort/defaults/sorters/boolean.js +1 -1
  193. package/src/js/modules/Sort/defaults/sorters/date.js +1 -1
  194. package/src/js/modules/Sort/defaults/sorters/datetime.js +13 -13
  195. package/src/js/modules/Sort/defaults/sorters/exists.js +1 -1
  196. package/src/js/modules/Sort/defaults/sorters/number.js +1 -1
  197. package/src/js/modules/Sort/defaults/sorters/string.js +7 -7
  198. package/src/js/modules/Sort/defaults/sorters/time.js +1 -1
  199. package/src/js/modules/Tooltip/Tooltip.js +5 -7
  200. package/src/js/modules/Validate/Validate.js +10 -13
  201. package/src/js/modules/Validate/defaults/validators.js +8 -3
  202. package/src/scss/tabulator.scss +28 -17
  203. package/src/scss/themes/bootstrap/functions4.scss +1 -1
  204. package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +8 -8
  205. package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +8 -8
  206. package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +8 -8
  207. package/src/scss/themes/bulma/tabulator_bulma.scss +7 -7
  208. package/src/scss/themes/materialize/tabulator_materialize.scss +6 -6
  209. package/src/scss/themes/materialize/variables.scss +1 -1
  210. package/src/scss/themes/semanticui/tabulator_semanticui.scss +7 -7
  211. package/src/scss/themes/tabulator_midnight.scss +7 -7
  212. package/src/scss/themes/tabulator_modern.scss +14 -14
  213. package/src/scss/themes/tabulator_simple.scss +8 -8
  214. 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 successfull value change
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
- if(Filter.filters[column.definition.headerFilterFunc]){
217
- type = column.definition.headerFilterFunc;
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 Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
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
- case "function":
232
- filterFunc = function(data){
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
- filterFunc = function(data){
249
- var colVal = column.getFieldValue(data);
250
-
251
- if(typeof colVal !== 'undefined' && colVal !== null){
252
- return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
253
- }else{
254
- return false;
255
- }
256
- };
257
- type = "like";
258
- break;
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
- filterFunc = function(data){
262
- return column.getFieldValue(data) == value;
263
- };
264
- type = "=";
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, params:params || {}};
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 !== "0" && value !== 0;
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
- if(self.table.modules.edit.editors[column.definition.headerFilter]){
327
- editor = self.table.modules.edit.editors[column.definition.headerFilter];
325
+ if(self.table.modules.edit.editors[column.definition.headerFilter]){
326
+ editor = self.table.modules.edit.editors[column.definition.headerFilter];
328
327
 
329
- if((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck){
330
- column.modules.filter.emptyFunc = function(value){
331
- return value !== true && value !== false;
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
- }else{
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
- editor = column.definition.headerFilter;
341
- break;
339
+ editor = column.definition.headerFilter;
340
+ break;
342
341
 
343
342
  case "boolean":
344
- if(column.modules.edit && column.modules.edit.editor){
345
- editor = column.modules.edit.editor;
346
- }else{
347
- if(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){
348
- editor = self.table.modules.edit.editors[column.definition.formatter];
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
- if((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck){
351
- column.modules.filter.emptyFunc = function(value){
352
- return value !== true && value !== false;
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
- if(field){
404
- self.langBind("headerFilters|columns|" + column.definition.field, function(value){
405
- editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.langText("headerFilters|default"));
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
- editorElement.addEventListener("search", searchTrigger);
455
+ editorElement.addEventListener("search", searchTrigger);
460
456
 
461
457
 
462
- //update number filtered columns on change
463
- if(column.modules.filter.attrType == "number"){
464
- editorElement.addEventListener("change", function(e){
465
- success(editorElement.value);
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
- //change text inputs to search inputs to allow for clearing of field
470
- if(column.modules.filter.attrType == "text" && this.table.browser !== "ie"){
471
- editorElement.setAttribute("type", "search");
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 propegating click to column sorters etc
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
- //programatically set focus of header filter
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
- //programatically set value of header filter
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 || {})// pass params to custom filter function
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
- 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;
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
- config.formatter = formatter;
64
- break;
63
+ config.formatter = formatter;
64
+ break;
65
65
 
66
66
  default:
67
- config.formatter = Format.formatters.plaintext;
68
- break;
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(component) : 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(/[&<>"'`=\/]/g, function (s) {
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
- if(Format.formatters[formatter]){
184
- formatter = Format.formatters[formatter]
185
- }else{
186
- console.warn("Formatter Error - No such formatter found: ", formatter);
187
- formatter = Format.formatters.plaintext;
188
- }
189
- break;
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
- formatter = formatter;
193
- break;
190
+ //Custom formatter Function, do nothing
191
+ break;
194
192
 
195
193
  default:
196
- formatter = Format.formatters.plaintext;
197
- break;
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
+ }
@@ -1,4 +1,4 @@
1
1
  export default function(cell, formatterParams, onRendered){
2
2
  cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
3
3
  return "";
4
- };
4
+ }
@@ -9,12 +9,12 @@ export default function(cell, formatterParams, onRendered){
9
9
  var newDatetime;
10
10
 
11
11
  if(DT.isDateTime(value)){
12
- newDatetime = value;
13
- }else if(inputFormat === "iso"){
14
- newDatetime = DT.fromISO(String(value));
15
- }else{
16
- newDatetime = DT.fromFormat(String(value), inputFormat);
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
- newDatetime = value;
16
- }else if(inputFormat === "iso"){
17
- newDatetime = DT.fromISO(String(value));
18
- }else{
19
- newDatetime = DT.fromFormat(String(value), inputFormat);
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
+ }
@@ -1,3 +1,3 @@
1
1
  export default function(cell, formatterParams, onRendered){
2
2
  return cell.getValue();
3
- };
3
+ }
@@ -14,22 +14,22 @@ export default function(cell, formatterParams, onRendered){
14
14
 
15
15
  switch(typeof formatterParams.height){
16
16
  case "number":
17
- el.style.height = formatterParams.height + "px";
18
- break;
17
+ el.style.height = formatterParams.height + "px";
18
+ break;
19
19
 
20
20
  case "string":
21
- el.style.height = formatterParams.height;
22
- break;
21
+ el.style.height = formatterParams.height;
22
+ break;
23
23
  }
24
24
 
25
25
  switch(typeof formatterParams.width){
26
26
  case "number":
27
- el.style.width = formatterParams.width + "px";
28
- break;
27
+ el.style.width = formatterParams.width + "px";
28
+ break;
29
29
 
30
30
  case "string":
31
- el.style.width = formatterParams.width;
32
- break;
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
- label = formatterParams.label;
29
- break;
28
+ label = formatterParams.label;
29
+ break;
30
30
 
31
31
  case "function":
32
- label = formatterParams.label(cell);
33
- break;
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
- value = formatterParams.url;
47
- break;
46
+ value = formatterParams.url;
47
+ break;
48
48
 
49
49
  case "function":
50
- value = formatterParams.url(cell);
51
- break;
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 "&nbsp;";
77
77
  }
78
- };
78
+ }
@@ -7,4 +7,4 @@ export default function (cell, formatterParams, onRendered) {
7
7
  }
8
8
 
9
9
  return formatterParams[value];
10
- };
10
+ }
@@ -34,4 +34,4 @@ export default function(cell, formatterParams, onRendered){
34
34
  }
35
35
 
36
36
  return after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;
37
- };
37
+ }
@@ -1,3 +1,3 @@
1
1
  export default function(cell, formatterParams, onRendered){
2
2
  return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
3
- };
3
+ }