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.
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 +1388 -683
  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 +4135 -3470
  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 +259 -231
  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 +79 -88
  68. package/src/js/core/Tabulator.js +86 -72
  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 +55 -66
  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 +31 -32
  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 +54 -50
  102. package/src/js/modules/ColumnCalcs/defaults/calculations.js +1 -1
  103. package/src/js/modules/DataTree/DataTree.js +19 -14
  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 +85 -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 +3 -3
  154. package/src/js/modules/GroupRows/GroupComponent.js +2 -2
  155. package/src/js/modules/GroupRows/GroupRows.js +12 -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 +39 -40
  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 +9 -10
  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 +0 -3
  188. package/src/js/modules/SelectRow/SelectRow.js +26 -28
  189. package/src/js/modules/Sort/Sort.js +110 -79
  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){
@@ -400,15 +399,9 @@ class Filter extends Module{
400
399
  }
401
400
 
402
401
  //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
- }
402
+ self.langBind("headerFilters|columns|" + column.definition.field, function(value){
403
+ editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.langText("headerFilters|default"));
404
+ });
412
405
 
413
406
  //focus on element on click
414
407
  editorElement.addEventListener("click", function(e){
@@ -453,28 +446,28 @@ class Filter extends Module{
453
446
  ((column.definition.editor === 'autocomplete' ||
454
447
  column.definition.editor === 'tickCross') &&
455
448
  column.definition.headerFilter === true)
456
- )
457
- ) {
449
+ )
450
+ ) {
458
451
  editorElement.addEventListener("keyup", searchTrigger);
459
- editorElement.addEventListener("search", searchTrigger);
452
+ editorElement.addEventListener("search", searchTrigger);
460
453
 
461
454
 
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
- }
455
+ //update number filtered columns on change
456
+ if(column.modules.filter.attrType == "number"){
457
+ editorElement.addEventListener("change", function(e){
458
+ success(editorElement.value);
459
+ });
460
+ }
468
461
 
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");
462
+ //change text inputs to search inputs to allow for clearing of field
463
+ if(column.modules.filter.attrType == "text" && this.table.browser !== "ie"){
464
+ editorElement.setAttribute("type", "search");
472
465
  // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
473
- }
466
+ }
474
467
 
475
- }
468
+ }
476
469
 
477
- //prevent input and select elements from propegating click to column sorters etc
470
+ //prevent input and select elements from propagating click to column sorters etc
478
471
  if(column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea"){
479
472
  editorElement.addEventListener("mousedown",function(e){
480
473
  e.stopPropagation();
@@ -513,7 +506,7 @@ class Filter extends Module{
513
506
  });
514
507
  }
515
508
 
516
- //programatically set focus of header filter
509
+ //programmatically set focus of header filter
517
510
  setHeaderFilterFocus(column){
518
511
  if(column.modules.filter && column.modules.filter.headerElement){
519
512
  column.modules.filter.headerElement.focus();
@@ -531,7 +524,7 @@ class Filter extends Module{
531
524
  }
532
525
  }
533
526
 
534
- //programatically set value of header filter
527
+ //programmatically set value of header filter
535
528
  setHeaderFilterValue(column, value){
536
529
  if (column){
537
530
  if(column.modules.filter && column.modules.filter.headerElement){
@@ -624,7 +617,7 @@ class Filter extends Module{
624
617
 
625
618
  if(typeof filter.field == "function"){
626
619
  filterFunc = function(data){
627
- return filter.field(data, filter.type || {})// pass params to custom filter function
620
+ return filter.field(data, filter.type || {});// pass params to custom filter function
628
621
  };
629
622
  }else{
630
623
 
@@ -698,7 +691,7 @@ class Filter extends Module{
698
691
  if(Array.isArray(filter)){
699
692
  output.push(this.filtersToArray(filter, ajax));
700
693
  }else{
701
- item = {field:filter.field, type:filter.type, value:filter.value}
694
+ item = {field:filter.field, type:filter.type, value:filter.value};
702
695
 
703
696
  if(ajax){
704
697
  if(typeof item.type == "function"){
@@ -726,8 +719,6 @@ class Filter extends Module{
726
719
 
727
720
  //remove filter from array
728
721
  removeFilter(field, type, value){
729
- var changed = false;
730
-
731
722
  if(!Array.isArray(field)){
732
723
  field = [{field:field, type:type, value:value}];
733
724
  }
@@ -747,7 +738,6 @@ class Filter extends Module{
747
738
 
748
739
  if(index > -1){
749
740
  this.filterList.splice(index, 1);
750
- changed = true;
751
741
  }else{
752
742
  console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
753
743
  }
@@ -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
+ }