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,171 @@
1
+ //resize columns to fit
2
+ export default function(columns, forced){
3
+ var totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width
4
+ var fixedWidth = 0; //total width of columns with a defined width
5
+ var flexWidth = 0; //total width available to flexible columns
6
+ var flexGrowUnits = 0; //total number of widthGrow blocks across all columns
7
+ var flexColWidth = 0; //desired width of flexible columns
8
+ var flexColumns = []; //array of flexible width columns
9
+ var fixedShrinkColumns = []; //array of fixed width columns that can shrink
10
+ var flexShrinkUnits = 0; //total number of widthShrink blocks across all columns
11
+ var overflowWidth = 0; //horizontal overflow width
12
+ var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
13
+
14
+ function calcWidth(width){
15
+ var colWidth;
16
+
17
+ if(typeof(width) == "string"){
18
+ if(width.indexOf("%") > -1){
19
+ colWidth = (totalWidth / 100) * parseInt(width);
20
+ }else{
21
+ colWidth = parseInt(width);
22
+ }
23
+ }else{
24
+ colWidth = width;
25
+ }
26
+
27
+ return colWidth;
28
+ }
29
+
30
+ //ensure columns resize to take up the correct amount of space
31
+ function scaleColumns(columns, freeSpace, colWidth, shrinkCols){
32
+ var oversizeCols = [],
33
+ oversizeSpace = 0,
34
+ remainingSpace = 0,
35
+ nextColWidth = 0,
36
+ remainingFlexGrowUnits = flexGrowUnits,
37
+ gap = 0,
38
+ changeUnits = 0,
39
+ undersizeCols = [];
40
+
41
+ function calcGrow(col){
42
+ return (colWidth * (col.column.definition.widthGrow || 1));
43
+ }
44
+
45
+ function calcShrink(col){
46
+ return (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));
47
+ }
48
+
49
+ columns.forEach(function(col, i){
50
+ var width = shrinkCols ? calcShrink(col) : calcGrow(col);
51
+ if(col.column.minWidth >= width){
52
+ oversizeCols.push(col);
53
+ }else{
54
+ if(col.column.maxWidth && col.column.maxWidth < width){
55
+ col.width = col.column.maxWidth;
56
+ freeSpace -= col.column.maxWidth;
57
+
58
+ remainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);
59
+
60
+ if(remainingFlexGrowUnits){
61
+ colWidth = Math.floor(freeSpace/remainingFlexGrowUnits);
62
+ }
63
+ }else{
64
+ undersizeCols.push(col);
65
+ changeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);
66
+ }
67
+ }
68
+ });
69
+
70
+ if(oversizeCols.length){
71
+ oversizeCols.forEach(function(col){
72
+ oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
73
+ col.width = col.column.minWidth;
74
+ });
75
+
76
+ remainingSpace = freeSpace - oversizeSpace;
77
+
78
+ nextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;
79
+
80
+ gap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
81
+ }else{
82
+ gap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;
83
+
84
+ undersizeCols.forEach(function(column){
85
+ column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
86
+ });
87
+ }
88
+
89
+ return gap;
90
+ }
91
+
92
+ if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
93
+ this.table.modules.responsiveLayout.update();
94
+ }
95
+
96
+ //adjust for vertical scrollbar if present
97
+ if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){
98
+ totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
99
+ }
100
+
101
+ columns.forEach(function(column){
102
+ var width, minWidth, colWidth;
103
+
104
+ if(column.visible){
105
+
106
+ width = column.definition.width;
107
+ minWidth = parseInt(column.minWidth);
108
+
109
+ if(width){
110
+
111
+ colWidth = calcWidth(width);
112
+
113
+ fixedWidth += colWidth > minWidth ? colWidth : minWidth;
114
+
115
+ if(column.definition.widthShrink){
116
+ fixedShrinkColumns.push({
117
+ column:column,
118
+ width:colWidth > minWidth ? colWidth : minWidth
119
+ });
120
+ flexShrinkUnits += column.definition.widthShrink;
121
+ }
122
+
123
+ }else{
124
+ flexColumns.push({
125
+ column:column,
126
+ width:0,
127
+ });
128
+ flexGrowUnits += column.definition.widthGrow || 1;
129
+ }
130
+ }
131
+ });
132
+
133
+ //calculate available space
134
+ flexWidth = totalWidth - fixedWidth;
135
+
136
+ //calculate correct column size
137
+ flexColWidth = Math.floor(flexWidth / flexGrowUnits);
138
+
139
+ //generate column widths
140
+ gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
141
+
142
+ //increase width of last column to account for rounding errors
143
+ if(flexColumns.length && gapFill > 0){
144
+ flexColumns[flexColumns.length-1].width += gapFill;
145
+ }
146
+
147
+ //calculate space for columns to be shrunk into
148
+ flexColumns.forEach(function(col){
149
+ flexWidth -= col.width;
150
+ });
151
+
152
+ overflowWidth = Math.abs(gapFill) + flexWidth;
153
+
154
+ //shrink oversize columns if there is no available space
155
+ if(overflowWidth > 0 && flexShrinkUnits){
156
+ gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
157
+ }
158
+
159
+ //decrease width of last column to account for rounding errors
160
+ if(gapFill && fixedShrinkColumns.length){
161
+ fixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;
162
+ }
163
+
164
+ flexColumns.forEach(function(col){
165
+ col.column.setWidth(col.width);
166
+ });
167
+
168
+ fixedShrinkColumns.forEach(function(col){
169
+ col.column.setWidth(col.width);
170
+ });
171
+ }
@@ -0,0 +1,10 @@
1
+ //resize columns to fit data they contain
2
+ export default function(columns, forced){
3
+ if(forced){
4
+ this.table.columnManager.renderer.reinitializeColumnWidths(columns);
5
+ }
6
+
7
+ if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
8
+ this.table.modules.responsiveLayout.update();
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ //resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable
2
+ export default function(columns, forced){
3
+ columns.forEach(function(column){
4
+ column.reinitializeWidth();
5
+ });
6
+
7
+ if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
8
+ this.table.modules.responsiveLayout.update();
9
+ }
10
+ }
@@ -0,0 +1,40 @@
1
+ //resize columns to fit data the contain and stretch last column to fill table
2
+ export default function(columns, forced){
3
+ var colsWidth = 0,
4
+ tableWidth = this.table.rowManager.element.clientWidth,
5
+ gap = 0,
6
+ lastCol = false;
7
+
8
+ columns.forEach((column, i) => {
9
+ if(!column.widthFixed){
10
+ column.reinitializeWidth();
11
+ }
12
+
13
+ if(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){
14
+ lastCol = column;
15
+ }
16
+
17
+ if(column.visible){
18
+ colsWidth += column.getWidth();
19
+ }
20
+ });
21
+
22
+ if(lastCol){
23
+ gap = tableWidth - colsWidth + lastCol.getWidth();
24
+
25
+ if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
26
+ lastCol.setWidth(0);
27
+ this.table.modules.responsiveLayout.update();
28
+ }
29
+
30
+ if(gap > 0){
31
+ lastCol.setWidth(gap);
32
+ }else{
33
+ lastCol.reinitializeWidth();
34
+ }
35
+ }else{
36
+ if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
37
+ this.table.modules.responsiveLayout.update();
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,12 @@
1
+ import fitData from './modes/fitData.js';
2
+ import fitDataGeneral from './modes/fitDataGeneral.js';
3
+ import fitDataStretch from './modes/fitDataStretch.js';
4
+ import fitColumns from './modes/fitColumns.js';
5
+
6
+ export default {
7
+ fitData:fitData,
8
+ fitDataFill:fitDataGeneral,
9
+ fitDataTable:fitDataGeneral,
10
+ fitDataStretch:fitDataStretch,
11
+ fitColumns:fitColumns ,
12
+ };
@@ -0,0 +1,184 @@
1
+ import Module from '../../core/Module.js';
2
+
3
+ import Helpers from '../../core/tools/Helpers.js';
4
+
5
+ import defaultLangs from './defaults/langs.js';
6
+
7
+ export default class Localize extends Module{
8
+
9
+ static moduleName = "localize";
10
+
11
+ //load defaults
12
+ static langs = defaultLangs;
13
+
14
+ constructor(table){
15
+ super(table);
16
+
17
+ this.locale = "default"; //current locale
18
+ this.lang = false; //current language
19
+ this.bindings = {}; //update events to call when locale is changed
20
+ this.langList = {};
21
+
22
+ this.registerTableOption("locale", false); //current system language
23
+ this.registerTableOption("langs", {});
24
+ }
25
+
26
+ initialize(){
27
+ this.langList = Helpers.deepClone(Localize.langs);
28
+
29
+ if(this.table.options.columnDefaults.headerFilterPlaceholder !== false){
30
+ this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);
31
+ }
32
+
33
+ for(let locale in this.table.options.langs){
34
+ this.installLang(locale, this.table.options.langs[locale]);
35
+ }
36
+
37
+ this.setLocale(this.table.options.locale);
38
+
39
+ this.registerTableFunction("setLocale", this.setLocale.bind(this));
40
+ this.registerTableFunction("getLocale", this.getLocale.bind(this));
41
+ this.registerTableFunction("getLang", this.getLang.bind(this));
42
+ }
43
+
44
+ //set header placeholder
45
+ setHeaderFilterPlaceholder(placeholder){
46
+ this.langList.default.headerFilters.default = placeholder;
47
+ }
48
+
49
+ //setup a lang description object
50
+ installLang(locale, lang){
51
+ if(this.langList[locale]){
52
+ this._setLangProp(this.langList[locale], lang);
53
+ }else{
54
+ this.langList[locale] = lang;
55
+ }
56
+ }
57
+
58
+ _setLangProp(lang, values){
59
+ for(let key in values){
60
+ if(lang[key] && typeof lang[key] == "object"){
61
+ this._setLangProp(lang[key], values[key]);
62
+ }else{
63
+ lang[key] = values[key];
64
+ }
65
+ }
66
+ }
67
+
68
+ //set current locale
69
+ setLocale(desiredLocale){
70
+ desiredLocale = desiredLocale || "default";
71
+
72
+ //fill in any matching language values
73
+ function traverseLang(trans, path){
74
+ for(var prop in trans){
75
+ if(typeof trans[prop] == "object"){
76
+ if(!path[prop]){
77
+ path[prop] = {};
78
+ }
79
+ traverseLang(trans[prop], path[prop]);
80
+ }else{
81
+ path[prop] = trans[prop];
82
+ }
83
+ }
84
+ }
85
+
86
+ //determining correct locale to load
87
+ if(desiredLocale === true && navigator.language){
88
+ //get local from system
89
+ desiredLocale = navigator.language.toLowerCase();
90
+ }
91
+
92
+ if(desiredLocale){
93
+ //if locale is not set, check for matching top level locale else use default
94
+ if(!this.langList[desiredLocale]){
95
+ let prefix = desiredLocale.split("-")[0];
96
+
97
+ if(this.langList[prefix]){
98
+ console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
99
+ desiredLocale = prefix;
100
+ }else{
101
+ console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
102
+ desiredLocale = "default";
103
+ }
104
+ }
105
+ }
106
+
107
+ this.locale = desiredLocale;
108
+
109
+ //load default lang template
110
+ this.lang = Helpers.deepClone(this.langList.default || {});
111
+
112
+ if(desiredLocale != "default"){
113
+ traverseLang(this.langList[desiredLocale], this.lang);
114
+ }
115
+
116
+ this.dispatchExternal("localized", this.locale, this.lang);
117
+
118
+ this._executeBindings();
119
+ }
120
+
121
+ //get current locale
122
+ getLocale(locale){
123
+ return this.locale;
124
+ }
125
+
126
+ //get lang object for given local or current if none provided
127
+ getLang(locale){
128
+ return locale ? this.langList[locale] : this.lang;
129
+ }
130
+
131
+ //get text for current locale
132
+ getText(path, value){
133
+ var fillPath = value ? path + "|" + value : path,
134
+ pathArray = fillPath.split("|"),
135
+ text = this._getLangElement(pathArray, this.locale);
136
+
137
+ // if(text === false){
138
+ // console.warn("Localization Error - Matching localized text not found for given path: ", path);
139
+ // }
140
+
141
+ return text || "";
142
+ }
143
+
144
+ //traverse langs object and find localized copy
145
+ _getLangElement(path, locale){
146
+ var root = this.lang;
147
+
148
+ path.forEach(function(level){
149
+ var rootPath;
150
+
151
+ if(root){
152
+ rootPath = root[level];
153
+
154
+ if(typeof rootPath != "undefined"){
155
+ root = rootPath;
156
+ }else{
157
+ root = false;
158
+ }
159
+ }
160
+ });
161
+
162
+ return root;
163
+ }
164
+
165
+ //set update binding
166
+ bind(path, callback){
167
+ if(!this.bindings[path]){
168
+ this.bindings[path] = [];
169
+ }
170
+
171
+ this.bindings[path].push(callback);
172
+
173
+ callback(this.getText(path), this.lang);
174
+ }
175
+
176
+ //iterate through bindings and trigger updates
177
+ _executeBindings(){
178
+ for(let path in this.bindings){
179
+ this.bindings[path].forEach((binding) => {
180
+ binding(this.getText(path), this.lang);
181
+ });
182
+ }
183
+ }
184
+ }
@@ -0,0 +1,37 @@
1
+ export default {
2
+ "default":{ //hold default locale text
3
+ "groups":{
4
+ "item":"item",
5
+ "items":"items",
6
+ },
7
+ "columns":{
8
+ },
9
+ "data":{
10
+ "loading":"Loading",
11
+ "error":"Error",
12
+ },
13
+ "pagination":{
14
+ "page_size":"Page Size",
15
+ "page_title":"Show Page",
16
+ "first":"First",
17
+ "first_title":"First Page",
18
+ "last":"Last",
19
+ "last_title":"Last Page",
20
+ "prev":"Prev",
21
+ "prev_title":"Prev Page",
22
+ "next":"Next",
23
+ "next_title":"Next Page",
24
+ "all":"All",
25
+ "counter":{
26
+ "showing": "Showing",
27
+ "of": "of",
28
+ "rows": "rows",
29
+ "pages": "pages",
30
+ }
31
+ },
32
+ "headerFilters":{
33
+ "default":"filter column...",
34
+ "columns":{}
35
+ }
36
+ },
37
+ };