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
@@ -13,6 +13,8 @@ import DataLoader from './tools/DataLoader.js';
13
13
  import ExternalEventBus from './tools/ExternalEventBus.js';
14
14
  import InternalEventBus from './tools/InternalEventBus.js';
15
15
 
16
+ import DeprecationAdvisor from './tools/DeprecationAdvisor.js';
17
+
16
18
  import TableRegistry from './tools/TableRegistry.js';
17
19
  import ModuleBinder from './tools/ModuleBinder.js';
18
20
 
@@ -47,6 +49,7 @@ class Tabulator {
47
49
  this.modulesCore = []; //hold core modules bound to this table (for initialization purposes)
48
50
  this.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)
49
51
 
52
+ this.deprecationAdvisor = new DeprecationAdvisor(this);
50
53
  this.optionsList = new OptionsList(this, "table constructor");
51
54
 
52
55
  this.initialized = false;
@@ -59,7 +62,7 @@ class Tabulator {
59
62
  //delay table creation to allow event bindings immediately after the constructor
60
63
  setTimeout(() => {
61
64
  this._create();
62
- })
65
+ });
63
66
  }
64
67
 
65
68
  TableRegistry.register(this); //register table for inter-device communication
@@ -93,7 +96,7 @@ class Tabulator {
93
96
 
94
97
  this.bindModules();
95
98
 
96
- this.options = this.optionsList.generate(Tabulator.defaultOptions, options)
99
+ this.options = this.optionsList.generate(Tabulator.defaultOptions, options);
97
100
 
98
101
  this._clearObjectPointers();
99
102
 
@@ -155,20 +158,20 @@ class Tabulator {
155
158
 
156
159
  switch(this.options.textDirection){
157
160
  case"auto":
158
- if(style.direction !== "rtl"){
159
- break;
160
- };
161
+ if(style.direction !== "rtl"){
162
+ break;
163
+ }
161
164
 
162
165
  case "rtl":
163
- this.element.classList.add("tabulator-rtl");
164
- this.rtl = true;
165
- break;
166
+ this.element.classList.add("tabulator-rtl");
167
+ this.rtl = true;
168
+ break;
166
169
 
167
170
  case "ltr":
168
- this.element.classList.add("tabulator-ltr");
171
+ this.element.classList.add("tabulator-ltr");
169
172
 
170
173
  default:
171
- this.rtl = false;
174
+ this.rtl = false;
172
175
  }
173
176
  }
174
177
 
@@ -247,7 +250,7 @@ class Tabulator {
247
250
  //initialize core modules
248
251
  this.modulesCore.forEach((mod) => {
249
252
  mod.initialize();
250
- })
253
+ });
251
254
 
252
255
  //build table elements
253
256
  element.appendChild(this.columnManager.getElement());
@@ -298,6 +301,8 @@ class Tabulator {
298
301
  //clear DOM
299
302
  while(element.firstChild) element.removeChild(element.firstChild);
300
303
  element.classList.remove("tabulator");
304
+
305
+ this.externalEvents.dispatch("tableDestroyed");
301
306
  }
302
307
 
303
308
  _detectBrowser(){
@@ -317,7 +322,7 @@ class Tabulator {
317
322
  this.browserSlow = false;
318
323
  }
319
324
 
320
- this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.slice(0,4));
325
+ this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(ua.slice(0,4));
321
326
  }
322
327
 
323
328
  initGuard(func, msg){
@@ -346,15 +351,25 @@ class Tabulator {
346
351
  //block table redrawing
347
352
  blockRedraw(){
348
353
  this.initGuard();
354
+
355
+ this.eventBus.dispatch("redraw-blocking");
349
356
 
350
- return this.rowManager.blockRedraw();
357
+ this.rowManager.blockRedraw();
358
+ this.columnManager.blockRedraw();
359
+
360
+ this.eventBus.dispatch("redraw-blocked");
351
361
  }
352
362
 
353
363
  //restore table redrawing
354
364
  restoreRedraw(){
355
365
  this.initGuard();
356
-
357
- return this.rowManager.restoreRedraw();
366
+
367
+ this.eventBus.dispatch("redraw-restoring");
368
+
369
+ this.rowManager.restoreRedraw();
370
+ this.columnManager.restoreRedraw();
371
+
372
+ this.eventBus.dispatch("redraw-restored");
358
373
  }
359
374
 
360
375
  //load data
@@ -402,7 +417,7 @@ class Tabulator {
402
417
  data = JSON.parse(data);
403
418
  }
404
419
 
405
- if(data){
420
+ if(data && data.length > 0){
406
421
  data.forEach((item) => {
407
422
  var row = this.rowManager.findRow(item[this.options.index]);
408
423
 
@@ -410,13 +425,13 @@ class Tabulator {
410
425
  responses++;
411
426
 
412
427
  row.updateData(item)
413
- .then(()=>{
414
- responses--;
428
+ .then(()=>{
429
+ responses--;
415
430
 
416
- if(!responses){
417
- resolve();
418
- }
419
- });
431
+ if(!responses){
432
+ resolve();
433
+ }
434
+ });
420
435
  }
421
436
  });
422
437
  }else{
@@ -438,15 +453,15 @@ class Tabulator {
438
453
 
439
454
  if(data){
440
455
  this.rowManager.addRows(data, pos, index)
441
- .then((rows) => {
442
- var output = [];
456
+ .then((rows) => {
457
+ var output = [];
443
458
 
444
- rows.forEach(function(row){
445
- output.push(row.getComponent());
446
- });
459
+ rows.forEach(function(row){
460
+ output.push(row.getComponent());
461
+ });
447
462
 
448
- resolve(output);
449
- });
463
+ resolve(output);
464
+ });
450
465
  }else{
451
466
  console.warn("Update Error - No data provided");
452
467
  reject("Update Error - No data provided");
@@ -468,7 +483,7 @@ class Tabulator {
468
483
  data = JSON.parse(data);
469
484
  }
470
485
 
471
- if(data){
486
+ if(data && data.length > 0){
472
487
  data.forEach((item) => {
473
488
  var row = this.rowManager.findRow(item[this.options.index]);
474
489
 
@@ -476,24 +491,24 @@ class Tabulator {
476
491
 
477
492
  if(row){
478
493
  row.updateData(item)
479
- .then(()=>{
480
- responses--;
481
- rows.push(row.getComponent());
494
+ .then(()=>{
495
+ responses--;
496
+ rows.push(row.getComponent());
482
497
 
483
- if(!responses){
484
- resolve(rows);
485
- }
486
- });
498
+ if(!responses){
499
+ resolve(rows);
500
+ }
501
+ });
487
502
  }else{
488
503
  this.rowManager.addRows(item)
489
- .then((newRows)=>{
490
- responses--;
491
- rows.push(newRows[0].getComponent());
504
+ .then((newRows)=>{
505
+ responses--;
506
+ rows.push(newRows[0].getComponent());
492
507
 
493
- if(!responses){
494
- resolve(rows);
495
- }
496
- });
508
+ if(!responses){
509
+ resolve(rows);
510
+ }
511
+ });
497
512
  }
498
513
  });
499
514
  }else{
@@ -516,8 +531,8 @@ class Tabulator {
516
531
  }
517
532
 
518
533
  //get row object
519
- getRowFromPosition(position, active){
520
- var row = this.rowManager.getRowFromPosition(position, active);
534
+ getRowFromPosition(position){
535
+ var row = this.rowManager.getRowFromPosition(position);
521
536
 
522
537
  if(row){
523
538
  return row.getComponent();
@@ -545,8 +560,7 @@ class Tabulator {
545
560
  foundRows.push(row);
546
561
  }else{
547
562
  console.error("Delete Error - No matching row found:", item);
548
- return Promise.reject("Delete Error - No matching row found")
549
- break;
563
+ return Promise.reject("Delete Error - No matching row found");
550
564
  }
551
565
  }
552
566
 
@@ -557,7 +571,7 @@ class Tabulator {
557
571
 
558
572
  //delete rows
559
573
  foundRows.forEach((row) =>{
560
- row.delete()
574
+ row.delete();
561
575
  });
562
576
 
563
577
  this.rowManager.reRenderInPosition();
@@ -574,12 +588,12 @@ class Tabulator {
574
588
  }
575
589
 
576
590
  return this.rowManager.addRows(data, pos, index)
577
- .then((rows)=>{
578
- return rows[0].getComponent();
579
- });
591
+ .then((rows)=>{
592
+ return rows[0].getComponent();
593
+ });
580
594
  }
581
595
 
582
- //update a row if it exitsts otherwise create it
596
+ //update a row if it exists otherwise create it
583
597
  updateOrAddRow(index, data){
584
598
  var row = this.rowManager.findRow(index);
585
599
 
@@ -591,14 +605,14 @@ class Tabulator {
591
605
 
592
606
  if(row){
593
607
  return row.updateData(data)
594
- .then(()=>{
595
- return row.getComponent();
596
- })
608
+ .then(()=>{
609
+ return row.getComponent();
610
+ });
597
611
  }else{
598
612
  return this.rowManager.addRows(data)
599
- .then((rows)=>{
600
- return rows[0].getComponent();
601
- })
613
+ .then((rows)=>{
614
+ return rows[0].getComponent();
615
+ });
602
616
  }
603
617
  }
604
618
 
@@ -614,9 +628,9 @@ class Tabulator {
614
628
 
615
629
  if(row){
616
630
  return row.updateData(data)
617
- .then(()=>{
618
- return Promise.resolve(row.getComponent());
619
- })
631
+ .then(()=>{
632
+ return Promise.resolve(row.getComponent());
633
+ });
620
634
  }else{
621
635
  console.warn("Update Error - No matching row found:", index);
622
636
  return Promise.reject("Update Error - No matching row found");
@@ -628,7 +642,7 @@ class Tabulator {
628
642
  var row = this.rowManager.findRow(index);
629
643
 
630
644
  if(row){
631
- return this.rowManager.scrollToRow(row, position, ifVisible)
645
+ return this.rowManager.scrollToRow(row, position, ifVisible);
632
646
  }else{
633
647
  console.warn("Scroll Error - No matching row found:", index);
634
648
  return Promise.reject("Scroll Error - No matching row found");
@@ -652,11 +666,11 @@ class Tabulator {
652
666
  }
653
667
 
654
668
  //get position of row in table
655
- getRowPosition(index, active){
669
+ getRowPosition(index){
656
670
  var row = this.rowManager.findRow(index);
657
671
 
658
672
  if(row){
659
- return this.rowManager.getRowPosition(row, active);
673
+ return row.getPosition();
660
674
  }else{
661
675
  console.warn("Position Error - No matching row found:", index);
662
676
  return false;
@@ -738,9 +752,9 @@ class Tabulator {
738
752
  this.initGuard();
739
753
 
740
754
  return this.columnManager.addColumn(definition, before, column)
741
- .then((column) => {
742
- return column.getComponent();
743
- });
755
+ .then((column) => {
756
+ return column.getComponent();
757
+ });
744
758
  }
745
759
 
746
760
  deleteColumn(field){
@@ -762,7 +776,7 @@ class Tabulator {
762
776
  this.initGuard();
763
777
 
764
778
  if(column){
765
- return column.updateDefinition(definition)
779
+ return column.updateDefinition(definition);
766
780
  }else{
767
781
  console.warn("Column Update Error - No matching column found:", field);
768
782
  return Promise.reject();
@@ -777,7 +791,7 @@ class Tabulator {
777
791
 
778
792
  if(fromColumn){
779
793
  if(toColumn){
780
- this.columnManager.moveColumn(fromColumn, toColumn, after)
794
+ this.columnManager.moveColumn(fromColumn, toColumn, after);
781
795
  }else{
782
796
  console.warn("Move Error - No matching column found:", toColumn);
783
797
  }
@@ -792,7 +806,7 @@ class Tabulator {
792
806
  var column = this.columnManager.findColumn(field);
793
807
 
794
808
  if(column){
795
- return this.columnManager.scrollToColumn(column, position, ifVisible)
809
+ return this.columnManager.scrollToColumn(column, position, ifVisible);
796
810
  }else{
797
811
  console.warn("Scroll Error - No matching column found:", field);
798
812
  return Promise.reject("Scroll Error - No matching column found");
@@ -827,10 +841,10 @@ class Tabulator {
827
841
  }
828
842
 
829
843
  dispatchEvent(){
830
- var args = Array.from(arguments),
831
- key = args.shift();
844
+ var args = Array.from(arguments);
845
+ args.shift();
832
846
 
833
- this.externalEvents.dispatch(...arguments)
847
+ this.externalEvents.dispatch(...arguments);
834
848
  }
835
849
 
836
850
  //////////////////// Alerts ///////////////////
@@ -3,7 +3,7 @@ import {default as Tabulator} from './Tabulator.js';
3
3
  import * as modules from '../core/modules/optional.js';
4
4
  import ModuleBinder from './tools/ModuleBinder.js';
5
5
 
6
- class TabulatorFull extends Tabulator {};
6
+ class TabulatorFull extends Tabulator {}
7
7
 
8
8
  //bind modules and static functionality
9
9
  new ModuleBinder(TabulatorFull, modules);
@@ -43,7 +43,6 @@ export default class Cell extends CoreFeature{
43
43
  this.element = document.createElement('div');
44
44
  this.element.className = "tabulator-cell";
45
45
  this.element.setAttribute("role", "gridcell");
46
- this.element = this.element;
47
46
  }
48
47
 
49
48
  _configureCell(){
@@ -79,9 +78,9 @@ export default class Cell extends CoreFeature{
79
78
 
80
79
  //add class to cell if needed
81
80
  if(this.column.definition.cssClass){
82
- var classNames = this.column.definition.cssClass.split(" ")
81
+ var classNames = this.column.definition.cssClass.split(" ");
83
82
  classNames.forEach((className) => {
84
- element.classList.add(className)
83
+ element.classList.add(className);
85
84
  });
86
85
  }
87
86
 
@@ -103,25 +102,25 @@ export default class Cell extends CoreFeature{
103
102
 
104
103
  switch(typeof val){
105
104
  case "object":
106
- if(val instanceof Node){
105
+ if(val instanceof Node){
107
106
 
108
- //clear previous cell contents
109
- while(this.element.firstChild) this.element.removeChild(this.element.firstChild);
107
+ //clear previous cell contents
108
+ while(this.element.firstChild) this.element.removeChild(this.element.firstChild);
110
109
 
111
- this.element.appendChild(val);
112
- }else{
113
- this.element.innerHTML = "";
110
+ this.element.appendChild(val);
111
+ }else{
112
+ this.element.innerHTML = "";
114
113
 
115
- if(val != null){
116
- console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val);
114
+ if(val != null){
115
+ console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val);
116
+ }
117
117
  }
118
- }
119
- break;
118
+ break;
120
119
  case "undefined":
121
- this.element.innerHTML = "";
122
- break;
120
+ this.element.innerHTML = "";
121
+ break;
123
122
  default:
124
- this.element.innerHTML = val;
123
+ this.element.innerHTML = val;
125
124
  }
126
125
  }
127
126
 
@@ -9,10 +9,10 @@ export default class CellComponent {
9
9
  if (typeof target[name] !== "undefined") {
10
10
  return target[name];
11
11
  }else{
12
- return target._cell.table.componentFunctionBinder.handle("cell", target._cell, name)
12
+ return target._cell.table.componentFunctionBinder.handle("cell", target._cell, name);
13
13
  }
14
14
  }
15
- })
15
+ });
16
16
  }
17
17
 
18
18
  getValue(){