tabulator-tables 6.5.0 → 6.5.1

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 (222) hide show
  1. package/dist/js/tabulator.js +1 -1
  2. package/dist/js/tabulator.min.js +1 -1
  3. package/dist/js/tabulator_esm.js +1 -1
  4. package/dist/js/tabulator_esm.min.js +1 -1
  5. package/dist/js/tabulator_esm.min.mjs +1 -1
  6. package/dist/js/tabulator_esm.mjs +1 -1
  7. package/package.json +2 -1
  8. package/src/js/builds/esm.js +16 -0
  9. package/src/js/builds/jquery_wrapper.js +63 -0
  10. package/src/js/builds/usd.js +1 -0
  11. package/src/js/core/ColumnManager.js +789 -0
  12. package/src/js/core/CoreFeature.js +140 -0
  13. package/src/js/core/FooterManager.js +102 -0
  14. package/src/js/core/Module.js +140 -0
  15. package/src/js/core/RowManager.js +1140 -0
  16. package/src/js/core/Tabulator.js +928 -0
  17. package/src/js/core/TabulatorFull.js +21 -0
  18. package/src/js/core/cell/Cell.js +299 -0
  19. package/src/js/core/cell/CellComponent.js +79 -0
  20. package/src/js/core/column/Column.js +978 -0
  21. package/src/js/core/column/ColumnComponent.js +151 -0
  22. package/src/js/core/column/defaults/options.js +18 -0
  23. package/src/js/core/defaults/options.js +66 -0
  24. package/src/js/core/modules/core.js +3 -0
  25. package/src/js/core/modules/optional.js +37 -0
  26. package/src/js/core/rendering/Renderer.js +204 -0
  27. package/src/js/core/rendering/renderers/BasicHorizontal.js +27 -0
  28. package/src/js/core/rendering/renderers/BasicVertical.js +103 -0
  29. package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +587 -0
  30. package/src/js/core/rendering/renderers/VirtualDomVertical.js +642 -0
  31. package/src/js/core/row/PseudoRow.js +47 -0
  32. package/src/js/core/row/Row.js +487 -0
  33. package/src/js/core/row/RowComponent.js +94 -0
  34. package/src/js/core/tools/Alert.js +66 -0
  35. package/src/js/core/tools/ComponentFunctionBinder.js +32 -0
  36. package/src/js/core/tools/DataLoader.js +128 -0
  37. package/src/js/core/tools/DependencyRegistry.js +82 -0
  38. package/src/js/core/tools/DeprecationAdvisor.js +51 -0
  39. package/src/js/core/tools/ExternalEventBus.js +105 -0
  40. package/src/js/core/tools/Helpers.js +66 -0
  41. package/src/js/core/tools/InteractionMonitor.js +329 -0
  42. package/src/js/core/tools/InternalEventBus.js +162 -0
  43. package/src/js/core/tools/ModuleBinder.js +153 -0
  44. package/src/js/core/tools/OptionsList.js +45 -0
  45. package/src/js/core/tools/Popup.js +317 -0
  46. package/src/js/core/tools/TableRegistry.js +65 -0
  47. package/src/js/modules/Accessor/Accessor.js +115 -0
  48. package/src/js/modules/Accessor/defaults/accessors.js +5 -0
  49. package/src/js/modules/Ajax/Ajax.js +142 -0
  50. package/src/js/modules/Ajax/defaults/config.js +3 -0
  51. package/src/js/modules/Ajax/defaults/contentTypeFormatters.js +45 -0
  52. package/src/js/modules/Ajax/defaults/loaderPromise.js +87 -0
  53. package/src/js/modules/Ajax/defaults/urlGenerator.js +44 -0
  54. package/src/js/modules/Clipboard/Clipboard.js +282 -0
  55. package/src/js/modules/Clipboard/defaults/pasteActions.js +11 -0
  56. package/src/js/modules/Clipboard/defaults/pasteParsers.js +75 -0
  57. package/src/js/modules/Clipboard/extensions/extensions.js +9 -0
  58. package/src/js/modules/Clipboard/extensions/keybindings/actions.js +9 -0
  59. package/src/js/modules/Clipboard/extensions/keybindings/bindings.js +3 -0
  60. package/src/js/modules/ColumnCalcs/CalcComponent.js +46 -0
  61. package/src/js/modules/ColumnCalcs/ColumnCalcs.js +586 -0
  62. package/src/js/modules/ColumnCalcs/defaults/calculations.js +93 -0
  63. package/src/js/modules/Comms/Comms.js +49 -0
  64. package/src/js/modules/DataTree/DataTree.js +620 -0
  65. package/src/js/modules/Download/Download.js +146 -0
  66. package/src/js/modules/Download/defaults/downloaders/csv.js +61 -0
  67. package/src/js/modules/Download/defaults/downloaders/html.js +5 -0
  68. package/src/js/modules/Download/defaults/downloaders/json.js +34 -0
  69. package/src/js/modules/Download/defaults/downloaders/jsonLines.js +32 -0
  70. package/src/js/modules/Download/defaults/downloaders/pdf.js +113 -0
  71. package/src/js/modules/Download/defaults/downloaders/xlsx.js +103 -0
  72. package/src/js/modules/Download/defaults/downloaders.js +15 -0
  73. package/src/js/modules/Edit/Edit.js +845 -0
  74. package/src/js/modules/Edit/List.js +1060 -0
  75. package/src/js/modules/Edit/defaults/editors/adaptable.js +37 -0
  76. package/src/js/modules/Edit/defaults/editors/date.js +144 -0
  77. package/src/js/modules/Edit/defaults/editors/datetime.js +131 -0
  78. package/src/js/modules/Edit/defaults/editors/input.js +77 -0
  79. package/src/js/modules/Edit/defaults/editors/list.js +7 -0
  80. package/src/js/modules/Edit/defaults/editors/number.js +110 -0
  81. package/src/js/modules/Edit/defaults/editors/progress.js +127 -0
  82. package/src/js/modules/Edit/defaults/editors/range.js +81 -0
  83. package/src/js/modules/Edit/defaults/editors/star.js +146 -0
  84. package/src/js/modules/Edit/defaults/editors/textarea.js +123 -0
  85. package/src/js/modules/Edit/defaults/editors/tickCross.js +95 -0
  86. package/src/js/modules/Edit/defaults/editors/time.js +132 -0
  87. package/src/js/modules/Edit/defaults/editors.js +27 -0
  88. package/src/js/modules/Edit/inputMask.js +74 -0
  89. package/src/js/modules/Export/Export.js +654 -0
  90. package/src/js/modules/Export/ExportColumn.js +9 -0
  91. package/src/js/modules/Export/ExportRow.js +8 -0
  92. package/src/js/modules/Export/defaults/columnLookups.js +3 -0
  93. package/src/js/modules/Export/defaults/rowLookups.js +18 -0
  94. package/src/js/modules/Filter/Filter.js +902 -0
  95. package/src/js/modules/Filter/defaults/filters.js +215 -0
  96. package/src/js/modules/Format/Format.js +200 -0
  97. package/src/js/modules/Format/defaults/formatters/adaptable.js +32 -0
  98. package/src/js/modules/Format/defaults/formatters/array.js +30 -0
  99. package/src/js/modules/Format/defaults/formatters/buttonCross.js +3 -0
  100. package/src/js/modules/Format/defaults/formatters/buttonTick.js +3 -0
  101. package/src/js/modules/Format/defaults/formatters/color.js +4 -0
  102. package/src/js/modules/Format/defaults/formatters/datetime.js +39 -0
  103. package/src/js/modules/Format/defaults/formatters/datetimediff.js +43 -0
  104. package/src/js/modules/Format/defaults/formatters/handle.js +4 -0
  105. package/src/js/modules/Format/defaults/formatters/html.js +3 -0
  106. package/src/js/modules/Format/defaults/formatters/image.js +40 -0
  107. package/src/js/modules/Format/defaults/formatters/json.js +12 -0
  108. package/src/js/modules/Format/defaults/formatters/link.js +82 -0
  109. package/src/js/modules/Format/defaults/formatters/lookup.js +10 -0
  110. package/src/js/modules/Format/defaults/formatters/money.js +44 -0
  111. package/src/js/modules/Format/defaults/formatters/plaintext.js +3 -0
  112. package/src/js/modules/Format/defaults/formatters/progress.js +133 -0
  113. package/src/js/modules/Format/defaults/formatters/rownum.js +14 -0
  114. package/src/js/modules/Format/defaults/formatters/star.js +38 -0
  115. package/src/js/modules/Format/defaults/formatters/textarea.js +4 -0
  116. package/src/js/modules/Format/defaults/formatters/tickCross.js +22 -0
  117. package/src/js/modules/Format/defaults/formatters/toggle.js +48 -0
  118. package/src/js/modules/Format/defaults/formatters/traffic.js +47 -0
  119. package/src/js/modules/Format/defaults/formatters.js +47 -0
  120. package/src/js/modules/FrozenColumns/FrozenColumns.js +302 -0
  121. package/src/js/modules/FrozenRows/FrozenRows.js +175 -0
  122. package/src/js/modules/GroupRows/Group.js +615 -0
  123. package/src/js/modules/GroupRows/GroupComponent.js +69 -0
  124. package/src/js/modules/GroupRows/GroupRows.js +636 -0
  125. package/src/js/modules/History/History.js +172 -0
  126. package/src/js/modules/History/defaults/redoers.js +31 -0
  127. package/src/js/modules/History/defaults/undoers.js +33 -0
  128. package/src/js/modules/History/extensions/extensions.js +9 -0
  129. package/src/js/modules/History/extensions/keybindings/actions.js +27 -0
  130. package/src/js/modules/History/extensions/keybindings/bindings.js +4 -0
  131. package/src/js/modules/HtmlTableImport/HtmlTableImport.js +180 -0
  132. package/src/js/modules/Import/Import.js +303 -0
  133. package/src/js/modules/Import/defaults/importers/array.js +3 -0
  134. package/src/js/modules/Import/defaults/importers/csv.js +61 -0
  135. package/src/js/modules/Import/defaults/importers/json.js +8 -0
  136. package/src/js/modules/Import/defaults/importers/xlsx.js +7 -0
  137. package/src/js/modules/Import/defaults/importers.js +11 -0
  138. package/src/js/modules/Interaction/Interaction.js +339 -0
  139. package/src/js/modules/Keybindings/Keybindings.js +198 -0
  140. package/src/js/modules/Keybindings/defaults/actions.js +90 -0
  141. package/src/js/modules/Keybindings/defaults/bindings.js +12 -0
  142. package/src/js/modules/Layout/Layout.js +66 -0
  143. package/src/js/modules/Layout/defaults/modes/fitColumns.js +171 -0
  144. package/src/js/modules/Layout/defaults/modes/fitData.js +10 -0
  145. package/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +10 -0
  146. package/src/js/modules/Layout/defaults/modes/fitDataStretch.js +40 -0
  147. package/src/js/modules/Layout/defaults/modes.js +12 -0
  148. package/src/js/modules/Localize/Localize.js +184 -0
  149. package/src/js/modules/Localize/defaults/langs.js +37 -0
  150. package/src/js/modules/Menu/Menu.js +302 -0
  151. package/src/js/modules/MoveColumns/MoveColumns.js +311 -0
  152. package/src/js/modules/MoveRows/MoveRows.js +604 -0
  153. package/src/js/modules/MoveRows/defaults/receivers.js +30 -0
  154. package/src/js/modules/MoveRows/defaults/senders.js +5 -0
  155. package/src/js/modules/Mutator/Mutator.js +164 -0
  156. package/src/js/modules/Mutator/defaults/mutators.js +1 -0
  157. package/src/js/modules/Page/Page.js +891 -0
  158. package/src/js/modules/Page/defaults/pageCounters/pages.js +33 -0
  159. package/src/js/modules/Page/defaults/pageCounters/rows.js +40 -0
  160. package/src/js/modules/Page/defaults/pageCounters.js +8 -0
  161. package/src/js/modules/Persistence/Persistence.js +473 -0
  162. package/src/js/modules/Persistence/defaults/readers.js +29 -0
  163. package/src/js/modules/Persistence/defaults/writers.js +13 -0
  164. package/src/js/modules/Popup/Popup.js +227 -0
  165. package/src/js/modules/Print/Print.js +136 -0
  166. package/src/js/modules/ReactiveData/ReactiveData.js +416 -0
  167. package/src/js/modules/ResizeColumns/ResizeColumns.js +365 -0
  168. package/src/js/modules/ResizeRows/ResizeRows.js +145 -0
  169. package/src/js/modules/ResizeTable/ResizeTable.js +158 -0
  170. package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +354 -0
  171. package/src/js/modules/ResponsiveLayout/extensions/extensions.js +9 -0
  172. package/src/js/modules/ResponsiveLayout/extensions/formatters/responsiveCollapse.js +44 -0
  173. package/src/js/modules/SelectRange/Range.js +366 -0
  174. package/src/js/modules/SelectRange/RangeComponent.js +91 -0
  175. package/src/js/modules/SelectRange/SelectRange.js +993 -0
  176. package/src/js/modules/SelectRange/extensions/clipboard/pasteActions.js +45 -0
  177. package/src/js/modules/SelectRange/extensions/clipboard/pasteParsers.js +57 -0
  178. package/src/js/modules/SelectRange/extensions/export/columnLookups.js +11 -0
  179. package/src/js/modules/SelectRange/extensions/export/rowLookups.js +5 -0
  180. package/src/js/modules/SelectRange/extensions/extensions.js +21 -0
  181. package/src/js/modules/SelectRange/extensions/keybindings/actions.js +38 -0
  182. package/src/js/modules/SelectRange/extensions/keybindings/bindings.js +14 -0
  183. package/src/js/modules/SelectRow/SelectRow.js +499 -0
  184. package/src/js/modules/SelectRow/extensions/extensions.js +9 -0
  185. package/src/js/modules/SelectRow/extensions/formatters/rowSelection.js +60 -0
  186. package/src/js/modules/Sort/Sort.js +480 -0
  187. package/src/js/modules/Sort/defaults/sorters/alphanum.js +44 -0
  188. package/src/js/modules/Sort/defaults/sorters/array.js +82 -0
  189. package/src/js/modules/Sort/defaults/sorters/boolean.js +7 -0
  190. package/src/js/modules/Sort/defaults/sorters/date.js +10 -0
  191. package/src/js/modules/Sort/defaults/sorters/datetime.js +48 -0
  192. package/src/js/modules/Sort/defaults/sorters/exists.js +7 -0
  193. package/src/js/modules/Sort/defaults/sorters/number.js +40 -0
  194. package/src/js/modules/Sort/defaults/sorters/string.js +34 -0
  195. package/src/js/modules/Sort/defaults/sorters/time.js +10 -0
  196. package/src/js/modules/Sort/defaults/sorters.js +21 -0
  197. package/src/js/modules/Spreadsheet/GridCalculator.js +64 -0
  198. package/src/js/modules/Spreadsheet/Sheet.js +243 -0
  199. package/src/js/modules/Spreadsheet/SheetComponent.js +59 -0
  200. package/src/js/modules/Spreadsheet/Spreadsheet.js +309 -0
  201. package/src/js/modules/Tooltip/Tooltip.js +128 -0
  202. package/src/js/modules/Validate/Validate.js +303 -0
  203. package/src/js/modules/Validate/defaults/validators.js +150 -0
  204. package/src/scss/tabulator.scss +1693 -0
  205. package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +302 -0
  206. package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +589 -0
  207. package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +979 -0
  208. package/src/scss/themes/bootstrap/variables3.scss +872 -0
  209. package/src/scss/themes/bootstrap/variables4.scss +1059 -0
  210. package/src/scss/themes/bootstrap/variables5.scss +1967 -0
  211. package/src/scss/themes/bulma/tabulator_bulma.scss +316 -0
  212. package/src/scss/themes/bulma/variables.scss +198 -0
  213. package/src/scss/themes/materialize/tabulator_materialize.scss +318 -0
  214. package/src/scss/themes/materialize/variables.scss +71 -0
  215. package/src/scss/themes/semanticui/tabulator_semanticui.scss +623 -0
  216. package/src/scss/themes/semanticui/variables.scss +843 -0
  217. package/src/scss/themes/semanticui/variables_table.scss +248 -0
  218. package/src/scss/themes/tabulator_midnight.scss +235 -0
  219. package/src/scss/themes/tabulator_modern.scss +308 -0
  220. package/src/scss/themes/tabulator_simple.scss +143 -0
  221. package/src/scss/themes/tabulator_site.scss +267 -0
  222. package/src/scss/themes/tabulator_site_dark.scss +496 -0
@@ -0,0 +1,151 @@
1
+ //public column object
2
+ export default class ColumnComponent {
3
+ constructor (column){
4
+ this._column = column;
5
+ this.type = "ColumnComponent";
6
+
7
+ return new Proxy(this, {
8
+ get: function(target, name, receiver) {
9
+ if (typeof target[name] !== "undefined") {
10
+ return target[name];
11
+ }else{
12
+ return target._column.table.componentFunctionBinder.handle("column", target._column, name);
13
+ }
14
+ }
15
+ });
16
+ }
17
+
18
+ getElement(){
19
+ return this._column.getElement();
20
+ }
21
+
22
+ getDefinition(){
23
+ return this._column.getDefinition();
24
+ }
25
+
26
+ getField(){
27
+ return this._column.getField();
28
+ }
29
+
30
+ getTitleDownload() {
31
+ return this._column.getTitleDownload();
32
+ }
33
+
34
+ getCells(){
35
+ var cells = [];
36
+
37
+ this._column.cells.forEach(function(cell){
38
+ cells.push(cell.getComponent());
39
+ });
40
+
41
+ return cells;
42
+ }
43
+
44
+ isVisible(){
45
+ return this._column.visible;
46
+ }
47
+
48
+ show(){
49
+ if(this._column.isGroup){
50
+ this._column.columns.forEach(function(column){
51
+ column.show();
52
+ });
53
+ }else{
54
+ this._column.show();
55
+ }
56
+ }
57
+
58
+ hide(){
59
+ if(this._column.isGroup){
60
+ this._column.columns.forEach(function(column){
61
+ column.hide();
62
+ });
63
+ }else{
64
+ this._column.hide();
65
+ }
66
+ }
67
+
68
+ toggle(){
69
+ if(this._column.visible){
70
+ this.hide();
71
+ }else{
72
+ this.show();
73
+ }
74
+ }
75
+
76
+ delete(){
77
+ return this._column.delete();
78
+ }
79
+
80
+ getSubColumns(){
81
+ var output = [];
82
+
83
+ if(this._column.columns.length){
84
+ this._column.columns.forEach(function(column){
85
+ output.push(column.getComponent());
86
+ });
87
+ }
88
+
89
+ return output;
90
+ }
91
+
92
+ getParentColumn(){
93
+ return this._column.getParentComponent();
94
+ }
95
+
96
+ _getSelf(){
97
+ return this._column;
98
+ }
99
+
100
+ scrollTo(position, ifVisible){
101
+ return this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);
102
+ }
103
+
104
+ getTable(){
105
+ return this._column.table;
106
+ }
107
+
108
+ move(to, after){
109
+ var toColumn = this._column.table.columnManager.findColumn(to);
110
+
111
+ if(toColumn){
112
+ this._column.table.columnManager.moveColumn(this._column, toColumn, after);
113
+ }else{
114
+ console.warn("Move Error - No matching column found:", toColumn);
115
+ }
116
+ }
117
+
118
+ getNextColumn(){
119
+ var nextCol = this._column.nextColumn();
120
+
121
+ return nextCol ? nextCol.getComponent() : false;
122
+ }
123
+
124
+ getPrevColumn(){
125
+ var prevCol = this._column.prevColumn();
126
+
127
+ return prevCol ? prevCol.getComponent() : false;
128
+ }
129
+
130
+ updateDefinition(updates){
131
+ return this._column.updateDefinition(updates);
132
+ }
133
+
134
+ getWidth(){
135
+ return this._column.getWidth();
136
+ }
137
+
138
+ setWidth(width){
139
+ var result;
140
+
141
+ if(width === true){
142
+ result = this._column.reinitializeWidth(true);
143
+ }else{
144
+ result = this._column.setWidth(width);
145
+ }
146
+
147
+ this._column.table.columnManager.rerenderColumns(true);
148
+
149
+ return result;
150
+ }
151
+ }
@@ -0,0 +1,18 @@
1
+ export default {
2
+ "title": undefined,
3
+ "field": undefined,
4
+ "columns": undefined,
5
+ "visible": undefined,
6
+ "hozAlign": undefined,
7
+ "vertAlign": undefined,
8
+ "width": undefined,
9
+ "minWidth": 40,
10
+ "maxWidth": undefined,
11
+ "maxInitialWidth": undefined,
12
+ "cssClass": undefined,
13
+ "variableHeight": undefined,
14
+ "headerVertical": undefined,
15
+ "headerHozAlign": undefined,
16
+ "headerWordWrap": false,
17
+ "editableTitle": undefined,
18
+ };
@@ -0,0 +1,66 @@
1
+ export default {
2
+
3
+ debugEventsExternal:false, //flag to console log events
4
+ debugEventsInternal:false, //flag to console log events
5
+ debugInvalidOptions:true, //allow toggling of invalid option warnings
6
+ debugInvalidComponentFuncs:true, //allow toggling of invalid component warnings
7
+ debugInitialization:true, //allow toggling of pre initialization function call warnings
8
+ debugDeprecation:true, //allow toggling of deprecation warnings
9
+
10
+ height:false, //height of tabulator
11
+ minHeight:false, //minimum height of tabulator
12
+ maxHeight:false, //maximum height of tabulator
13
+
14
+ columnHeaderVertAlign:"top", //vertical alignment of column headers
15
+
16
+ popupContainer:false,
17
+
18
+ columns:[],//store for colum header info
19
+ columnDefaults:{}, //store column default props
20
+ rowHeader:false,
21
+
22
+ data:false, //default starting data
23
+
24
+ autoColumns:false, //build columns from data row structure
25
+ autoColumnsDefinitions:false,
26
+
27
+ nestedFieldSeparator:".", //separator for nested data
28
+
29
+ footerElement:false, //hold footer element
30
+
31
+ index:"id", //filed for row index
32
+
33
+ textDirection:"auto",
34
+
35
+ addRowPos:"bottom", //position to insert blank rows, top|bottom
36
+
37
+ headerVisible:true, //hide header
38
+
39
+ renderVertical:"virtual",
40
+ renderHorizontal:"basic",
41
+ renderVerticalBuffer:0, // set virtual DOM buffer size
42
+
43
+ scrollToRowPosition:"top",
44
+ scrollToRowIfVisible:true,
45
+
46
+ scrollToColumnPosition:"left",
47
+ scrollToColumnIfVisible:true,
48
+
49
+ rowFormatter:false,
50
+ rowFormatterPrint:null,
51
+ rowFormatterClipboard:null,
52
+ rowFormatterHtmlOutput:null,
53
+
54
+ rowHeight:null,
55
+
56
+ placeholder:false,
57
+
58
+ dataLoader:true,
59
+ dataLoaderLoading:false,
60
+ dataLoaderError:false,
61
+ dataLoaderErrorTimeout:3000,
62
+ dataSendParams:{},
63
+ dataReceiveParams:{},
64
+
65
+ dependencies:{},
66
+ };
@@ -0,0 +1,3 @@
1
+ export {default as LayoutModule} from '../../modules/Layout/Layout.js';
2
+ export {default as LocalizeModule} from '../../modules/Localize/Localize.js';
3
+ export {default as CommsModule} from '../../modules/Comms/Comms.js';
@@ -0,0 +1,37 @@
1
+ export {default as AccessorModule} from '../../modules/Accessor/Accessor.js';
2
+ export {default as AjaxModule} from '../../modules/Ajax/Ajax.js';
3
+ export {default as ClipboardModule} from '../../modules/Clipboard/Clipboard.js';
4
+ export {default as ColumnCalcsModule} from '../../modules/ColumnCalcs/ColumnCalcs.js';
5
+ export {default as DataTreeModule} from '../../modules/DataTree/DataTree.js';
6
+ export {default as DownloadModule} from '../../modules/Download/Download.js';
7
+ export {default as EditModule} from '../../modules/Edit/Edit.js';
8
+ export {default as ExportModule} from '../../modules/Export/Export.js';
9
+ export {default as FilterModule} from '../../modules/Filter/Filter.js';
10
+ export {default as FormatModule} from '../../modules/Format/Format.js';
11
+ export {default as FrozenColumnsModule} from '../../modules/FrozenColumns/FrozenColumns.js';
12
+ export {default as FrozenRowsModule} from '../../modules/FrozenRows/FrozenRows.js';
13
+ export {default as GroupRowsModule} from '../../modules/GroupRows/GroupRows.js';
14
+ export {default as HistoryModule} from '../../modules/History/History.js';
15
+ export {default as HtmlTableImportModule} from '../../modules/HtmlTableImport/HtmlTableImport.js';
16
+ export {default as ImportModule} from '../../modules/Import/Import.js';
17
+ export {default as InteractionModule} from '../../modules/Interaction/Interaction.js';
18
+ export {default as KeybindingsModule} from '../../modules/Keybindings/Keybindings.js';
19
+ export {default as MenuModule} from '../../modules/Menu/Menu.js';
20
+ export {default as MoveColumnsModule} from '../../modules/MoveColumns/MoveColumns.js';
21
+ export {default as MoveRowsModule} from '../../modules/MoveRows/MoveRows.js';
22
+ export {default as MutatorModule} from '../../modules/Mutator/Mutator.js';
23
+ export {default as PageModule} from '../../modules/Page/Page.js';
24
+ export {default as PersistenceModule} from '../../modules/Persistence/Persistence.js';
25
+ export {default as PopupModule} from '../../modules/Popup/Popup.js';
26
+ export {default as PrintModule} from '../../modules/Print/Print.js';
27
+ export {default as ReactiveDataModule} from '../../modules/ReactiveData/ReactiveData.js';
28
+ export {default as ResizeColumnsModule} from '../../modules/ResizeColumns/ResizeColumns.js';
29
+ export {default as ResizeRowsModule} from '../../modules/ResizeRows/ResizeRows.js';
30
+ export {default as ResizeTableModule} from '../../modules/ResizeTable/ResizeTable.js';
31
+ export {default as ResponsiveLayoutModule} from '../../modules/ResponsiveLayout/ResponsiveLayout.js';
32
+ export {default as SelectRowModule} from '../../modules/SelectRow/SelectRow.js';
33
+ export {default as SelectRangeModule} from '../../modules/SelectRange/SelectRange.js';
34
+ export {default as SortModule} from '../../modules/Sort/Sort.js';
35
+ export {default as SpreadsheetModule} from '../../modules/Spreadsheet/Spreadsheet.js';
36
+ export {default as TooltipModule} from '../../modules/Tooltip/Tooltip.js';
37
+ export {default as ValidateModule} from '../../modules/Validate/Validate.js';
@@ -0,0 +1,204 @@
1
+ import CoreFeature from '../CoreFeature.js';
2
+ import Helpers from '../tools/Helpers.js';
3
+
4
+ export default class Renderer extends CoreFeature{
5
+ constructor(table){
6
+ super(table);
7
+
8
+ this.elementVertical = table.rowManager.element;
9
+ this.elementHorizontal = table.columnManager.element;
10
+ this.tableElement = table.rowManager.tableElement;
11
+
12
+ this.verticalFillMode = "fit"; // used by row manager to determine how to size the render area ("fit" - fits container to the contents, "fill" - fills the container without resizing it)
13
+ }
14
+
15
+
16
+ ///////////////////////////////////
17
+ /////// Internal Bindings /////////
18
+ ///////////////////////////////////
19
+
20
+ initialize(){
21
+ //initialize core functionality
22
+ }
23
+
24
+ clearRows(){
25
+ //clear down existing rows layout
26
+ }
27
+
28
+ clearColumns(){
29
+ //clear down existing columns layout
30
+ }
31
+
32
+
33
+ reinitializeColumnWidths(columns){
34
+ //resize columns to fit data
35
+ }
36
+
37
+
38
+ renderRows(){
39
+ //render rows from a clean slate
40
+ }
41
+
42
+ renderColumns(){
43
+ //render columns from a clean slate
44
+ }
45
+
46
+ rerenderRows(callback){
47
+ // rerender rows and keep position
48
+ if(callback){
49
+ callback();
50
+ }
51
+ }
52
+
53
+ rerenderColumns(update, blockRedraw){
54
+ //rerender columns
55
+ }
56
+
57
+ renderRowCells(row){
58
+ //render the cells in a row
59
+ }
60
+
61
+ rerenderRowCells(row, force){
62
+ //rerender the cells in a row
63
+ }
64
+
65
+ scrollColumns(left, dir){
66
+ //handle horizontal scrolling
67
+ }
68
+
69
+ scrollRows(top, dir){
70
+ //handle vertical scrolling
71
+ }
72
+
73
+ resize(){
74
+ //container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)
75
+ }
76
+
77
+ scrollToRow(row){
78
+ //scroll to a specific row
79
+ }
80
+
81
+ scrollToRowNearestTop(row){
82
+ //determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom
83
+ }
84
+
85
+ visibleRows(includingBuffer){
86
+ //return the visible rows
87
+ return [];
88
+ }
89
+
90
+ ///////////////////////////////////
91
+ //////// Helper Functions /////////
92
+ ///////////////////////////////////
93
+
94
+ rows(){
95
+ return this.table.rowManager.getDisplayRows();
96
+ }
97
+
98
+ styleRow(row, index){
99
+ var rowEl = row.getElement();
100
+
101
+ if(index % 2){
102
+ rowEl.classList.add("tabulator-row-even");
103
+ rowEl.classList.remove("tabulator-row-odd");
104
+ }else{
105
+ rowEl.classList.add("tabulator-row-odd");
106
+ rowEl.classList.remove("tabulator-row-even");
107
+ }
108
+ }
109
+
110
+ ///////////////////////////////////
111
+ /////// External Triggers /////////
112
+ /////// (DO NOT OVERRIDE) /////////
113
+ ///////////////////////////////////
114
+
115
+ clear(){
116
+ //clear down existing layout
117
+ this.clearRows();
118
+ this.clearColumns();
119
+ }
120
+
121
+ render(){
122
+ //render from a clean slate
123
+ this.renderRows();
124
+ this.renderColumns();
125
+ }
126
+
127
+ rerender(callback){
128
+ // rerender and keep position
129
+ this.rerenderRows();
130
+ this.rerenderColumns();
131
+ }
132
+
133
+ scrollToRowPosition(row, position, ifVisible){
134
+ var rowIndex = this.rows().indexOf(row),
135
+ rowEl = row.getElement(),
136
+ offset = 0;
137
+
138
+ return new Promise((resolve, reject) => {
139
+ if(rowIndex > -1){
140
+
141
+ if(typeof ifVisible === "undefined"){
142
+ ifVisible = this.table.options.scrollToRowIfVisible;
143
+ }
144
+
145
+ //check row visibility
146
+ if(!ifVisible){
147
+ if(Helpers.elVisible(rowEl)){
148
+ offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;
149
+
150
+ if(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){
151
+ resolve();
152
+ return false;
153
+ }
154
+ }
155
+ }
156
+
157
+ if(typeof position === "undefined"){
158
+ position = this.table.options.scrollToRowPosition;
159
+ }
160
+
161
+ if(position === "nearest"){
162
+ position = this.scrollToRowNearestTop(row) ? "top" : "bottom";
163
+ }
164
+
165
+ //scroll to row
166
+ this.scrollToRow(row);
167
+
168
+ //align to correct position
169
+ switch(position){
170
+ case "middle":
171
+ case "center":
172
+
173
+ if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){
174
+ this.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);
175
+ }else{
176
+ this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);
177
+ }
178
+
179
+ break;
180
+
181
+ case "bottom":
182
+
183
+ if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){
184
+ this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
185
+ }else{
186
+ this.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;
187
+ }
188
+
189
+ break;
190
+
191
+ case "top":
192
+ this.elementVertical.scrollTop = rowEl.offsetTop;
193
+ break;
194
+ }
195
+
196
+ resolve();
197
+
198
+ }else{
199
+ console.warn("Scroll Error - Row not visible");
200
+ reject("Scroll Error - Row not visible");
201
+ }
202
+ });
203
+ }
204
+ }
@@ -0,0 +1,27 @@
1
+ import Renderer from '../Renderer.js';
2
+
3
+ export default class BasicHorizontal extends Renderer{
4
+ constructor(table){
5
+ super(table);
6
+ }
7
+
8
+ renderRowCells(row, inFragment) {
9
+ const rowFrag = document.createDocumentFragment();
10
+ row.cells.forEach((cell) => {
11
+ rowFrag.appendChild(cell.getElement());
12
+ });
13
+ row.element.appendChild(rowFrag);
14
+
15
+ if(!inFragment){
16
+ row.cells.forEach((cell) => {
17
+ cell.cellRendered();
18
+ });
19
+ }
20
+ }
21
+
22
+ reinitializeColumnWidths(columns){
23
+ columns.forEach(function(column){
24
+ column.reinitializeWidth();
25
+ });
26
+ }
27
+ }
@@ -0,0 +1,103 @@
1
+ import Renderer from '../Renderer.js';
2
+ import Helpers from '../../tools/Helpers.js';
3
+
4
+ export default class BasicVertical extends Renderer{
5
+ constructor(table){
6
+ super(table);
7
+
8
+ this.verticalFillMode = "fill";
9
+
10
+ this.scrollTop = 0;
11
+ this.scrollLeft = 0;
12
+
13
+ this.scrollTop = 0;
14
+ this.scrollLeft = 0;
15
+ }
16
+
17
+ clearRows(){
18
+ var element = this.tableElement;
19
+
20
+ // element.children.detach();
21
+ while(element.firstChild) element.removeChild(element.firstChild);
22
+
23
+ element.scrollTop = 0;
24
+ element.scrollLeft = 0;
25
+
26
+ element.style.minWidth = "";
27
+ element.style.minHeight = "";
28
+ element.style.display = "";
29
+ element.style.visibility = "";
30
+ }
31
+
32
+ renderRows() {
33
+ var element = this.tableElement,
34
+ onlyGroupHeaders = true,
35
+ tableFrag = document.createDocumentFragment(),
36
+ rows = this.rows();
37
+
38
+ rows.forEach((row, index) => {
39
+ this.styleRow(row, index);
40
+ row.initialize(false, true);
41
+
42
+ if (row.type !== "group") {
43
+ onlyGroupHeaders = false;
44
+ }
45
+
46
+ tableFrag.appendChild(row.getElement());
47
+ });
48
+
49
+ element.appendChild(tableFrag);
50
+
51
+ rows.forEach((row) => {
52
+ row.rendered();
53
+
54
+ if(!row.heightInitialized) {
55
+ row.calcHeight(true);
56
+ }
57
+ });
58
+
59
+ rows.forEach((row) => {
60
+ if(!row.heightInitialized) {
61
+ row.setCellHeight();
62
+ }
63
+ });
64
+
65
+ if(onlyGroupHeaders){
66
+ element.style.minWidth = this.table.columnManager.getWidth() + "px";
67
+ }else{
68
+ element.style.minWidth = "";
69
+ }
70
+ }
71
+
72
+
73
+ rerenderRows(callback){
74
+ this.clearRows();
75
+
76
+ if(callback){
77
+ callback();
78
+ }
79
+
80
+ this.renderRows();
81
+
82
+ if(!this.rows().length){
83
+ this.table.rowManager.tableEmpty();
84
+ }
85
+ }
86
+
87
+ scrollToRowNearestTop(row){
88
+ var rowTop = Helpers.elOffset(row.getElement()).top;
89
+
90
+ return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));
91
+ }
92
+
93
+ scrollToRow(row){
94
+ var rowEl = row.getElement();
95
+
96
+ this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;
97
+ }
98
+
99
+ visibleRows(includingBuffer){
100
+ return this.rows();
101
+ }
102
+
103
+ }