tabulator-tables 5.4.3 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/.babelrc.json +3 -3
  2. package/.editorconfig +6 -6
  3. package/.eslintignore +3 -3
  4. package/.eslintrc.js +28 -28
  5. package/.github/ISSUE_TEMPLATE/bug_report.md +58 -58
  6. package/.github/ISSUE_TEMPLATE/documentation.md +14 -14
  7. package/.github/ISSUE_TEMPLATE/feature_request.md +24 -24
  8. package/.github/ISSUE_TEMPLATE/question.md +12 -12
  9. package/.github/workflows/bad-files-check.yml +39 -39
  10. package/.github/workflows/lint-and-test.yml +30 -30
  11. package/CODE_OF_CONDUCT.md +46 -46
  12. package/CONTRIBUTING.md +22 -22
  13. package/LICENSE +20 -20
  14. package/README.md +76 -76
  15. package/bower.json +40 -40
  16. package/build/Bundler.js +185 -185
  17. package/build/rollup.js +6 -6
  18. package/dist/css/tabulator.css +80 -53
  19. package/dist/css/tabulator.css.map +1 -1
  20. package/dist/css/tabulator.min.css +1 -1
  21. package/dist/css/tabulator.min.css.map +1 -1
  22. package/dist/css/tabulator_bootstrap3.css +89 -58
  23. package/dist/css/tabulator_bootstrap3.css.map +1 -1
  24. package/dist/css/tabulator_bootstrap3.min.css +1 -1
  25. package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
  26. package/dist/css/tabulator_bootstrap4.css +106 -73
  27. package/dist/css/tabulator_bootstrap4.css.map +1 -1
  28. package/dist/css/tabulator_bootstrap4.min.css +1 -1
  29. package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
  30. package/dist/css/tabulator_bootstrap5.css +110 -75
  31. package/dist/css/tabulator_bootstrap5.css.map +1 -1
  32. package/dist/css/tabulator_bootstrap5.min.css +1 -1
  33. package/dist/css/tabulator_bootstrap5.min.css.map +1 -1
  34. package/dist/css/tabulator_bulma.css +95 -62
  35. package/dist/css/tabulator_bulma.css.map +1 -1
  36. package/dist/css/tabulator_bulma.min.css +1 -1
  37. package/dist/css/tabulator_bulma.min.css.map +1 -1
  38. package/dist/css/tabulator_materialize.css +93 -63
  39. package/dist/css/tabulator_materialize.css.map +1 -1
  40. package/dist/css/tabulator_materialize.min.css +1 -1
  41. package/dist/css/tabulator_materialize.min.css.map +1 -1
  42. package/dist/css/tabulator_midnight.css +90 -59
  43. package/dist/css/tabulator_midnight.css.map +1 -1
  44. package/dist/css/tabulator_midnight.min.css +1 -1
  45. package/dist/css/tabulator_midnight.min.css.map +1 -1
  46. package/dist/css/tabulator_modern.css +96 -62
  47. package/dist/css/tabulator_modern.css.map +1 -1
  48. package/dist/css/tabulator_modern.min.css +1 -1
  49. package/dist/css/tabulator_modern.min.css.map +1 -1
  50. package/dist/css/tabulator_semanticui.css +233 -182
  51. package/dist/css/tabulator_semanticui.css.map +1 -1
  52. package/dist/css/tabulator_semanticui.min.css +1 -1
  53. package/dist/css/tabulator_semanticui.min.css.map +1 -1
  54. package/dist/css/tabulator_simple.css +80 -53
  55. package/dist/css/tabulator_simple.css.map +1 -1
  56. package/dist/css/tabulator_simple.min.css +1 -1
  57. package/dist/css/tabulator_simple.min.css.map +1 -1
  58. package/dist/css/tabulator_site.css +88 -57
  59. package/dist/css/tabulator_site.css.map +1 -1
  60. package/dist/css/tabulator_site.min.css +1 -1
  61. package/dist/css/tabulator_site.min.css.map +1 -1
  62. package/dist/js/jquery_wrapper.js +55 -55
  63. package/dist/js/tabulator.js +26054 -25713
  64. package/dist/js/tabulator.js.map +1 -1
  65. package/dist/js/tabulator.min.js +2 -2
  66. package/dist/js/tabulator.min.js.map +1 -1
  67. package/dist/js/tabulator_esm.js +26131 -25790
  68. package/dist/js/tabulator_esm.js.map +1 -1
  69. package/dist/js/tabulator_esm.min.js +2 -2
  70. package/dist/js/tabulator_esm.min.js.map +1 -1
  71. package/package.json +65 -65
  72. package/src/js/builds/esm.js +14 -14
  73. package/src/js/builds/jquery_wrapper.js +55 -55
  74. package/src/js/core/ColumnManager.js +745 -730
  75. package/src/js/core/CoreFeature.js +138 -138
  76. package/src/js/core/FooterManager.js +101 -101
  77. package/src/js/core/Module.js +141 -141
  78. package/src/js/core/RowManager.js +1128 -1101
  79. package/src/js/core/Tabulator.js +895 -892
  80. package/src/js/core/TabulatorFull.js +10 -10
  81. package/src/js/core/cell/Cell.js +295 -295
  82. package/src/js/core/cell/CellComponent.js +78 -76
  83. package/src/js/core/column/Column.js +949 -949
  84. package/src/js/core/column/ColumnComponent.js +152 -152
  85. package/src/js/core/column/defaults/options.js +17 -17
  86. package/src/js/core/defaults/options.js +65 -65
  87. package/src/js/core/modules/core.js +2 -2
  88. package/src/js/core/modules/optional.js +34 -34
  89. package/src/js/core/rendering/Renderer.js +203 -203
  90. package/src/js/core/rendering/renderers/BasicHorizontal.js +24 -19
  91. package/src/js/core/rendering/renderers/BasicVertical.js +83 -79
  92. package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +582 -577
  93. package/src/js/core/rendering/renderers/VirtualDomVertical.js +634 -580
  94. package/src/js/core/row/PseudoRow.js +44 -44
  95. package/src/js/core/row/Row.js +457 -457
  96. package/src/js/core/row/RowComponent.js +93 -93
  97. package/src/js/core/tools/Alert.js +61 -61
  98. package/src/js/core/tools/ComponentFunctionBinder.js +32 -32
  99. package/src/js/core/tools/DataLoader.js +119 -119
  100. package/src/js/core/tools/DeprecationAdvisor.js +46 -46
  101. package/src/js/core/tools/ExternalEventBus.js +104 -104
  102. package/src/js/core/tools/Helpers.js +46 -46
  103. package/src/js/core/tools/InteractionMonitor.js +321 -321
  104. package/src/js/core/tools/InternalEventBus.js +161 -161
  105. package/src/js/core/tools/ModuleBinder.js +104 -104
  106. package/src/js/core/tools/OptionsList.js +44 -40
  107. package/src/js/core/tools/Popup.js +304 -304
  108. package/src/js/core/tools/TableRegistry.js +61 -61
  109. package/src/js/modules/Accessor/Accessor.js +115 -115
  110. package/src/js/modules/Ajax/Ajax.js +143 -143
  111. package/src/js/modules/Ajax/defaults/config.js +2 -2
  112. package/src/js/modules/Ajax/defaults/contentTypeFormatters.js +44 -44
  113. package/src/js/modules/Ajax/defaults/loaderPromise.js +86 -86
  114. package/src/js/modules/Ajax/defaults/urlGenerator.js +43 -43
  115. package/src/js/modules/Clipboard/Clipboard.js +279 -279
  116. package/src/js/modules/Clipboard/defaults/pasteActions.js +10 -10
  117. package/src/js/modules/Clipboard/defaults/pasteParsers.js +74 -74
  118. package/src/js/modules/ColumnCalcs/CalcComponent.js +47 -47
  119. package/src/js/modules/ColumnCalcs/ColumnCalcs.js +581 -568
  120. package/src/js/modules/ColumnCalcs/defaults/calculations.js +92 -85
  121. package/src/js/modules/Comms/Comms.js +51 -51
  122. package/src/js/modules/DataTree/DataTree.js +603 -603
  123. package/src/js/modules/Download/Download.js +148 -148
  124. package/src/js/modules/Download/defaults/downloaders/csv.js +61 -61
  125. package/src/js/modules/Download/defaults/downloaders/html.js +4 -4
  126. package/src/js/modules/Download/defaults/downloaders/json.js +33 -33
  127. package/src/js/modules/Download/defaults/downloaders/jsonLines.js +31 -31
  128. package/src/js/modules/Download/defaults/downloaders/pdf.js +111 -111
  129. package/src/js/modules/Download/defaults/downloaders/xlsx.js +102 -99
  130. package/src/js/modules/Download/defaults/downloaders.js +14 -14
  131. package/src/js/modules/Edit/Edit.js +734 -736
  132. package/src/js/modules/Edit/List.js +1048 -1033
  133. package/src/js/modules/Edit/defaults/editors/autocomplete.js +11 -11
  134. package/src/js/modules/Edit/defaults/editors/date.js +138 -110
  135. package/src/js/modules/Edit/defaults/editors/datetime.js +125 -97
  136. package/src/js/modules/Edit/defaults/editors/input.js +76 -74
  137. package/src/js/modules/Edit/defaults/editors/list.js +6 -6
  138. package/src/js/modules/Edit/defaults/editors/number.js +109 -107
  139. package/src/js/modules/Edit/defaults/editors/progress.js +126 -126
  140. package/src/js/modules/Edit/defaults/editors/range.js +80 -78
  141. package/src/js/modules/Edit/defaults/editors/select.js +9 -9
  142. package/src/js/modules/Edit/defaults/editors/star.js +145 -145
  143. package/src/js/modules/Edit/defaults/editors/textarea.js +122 -120
  144. package/src/js/modules/Edit/defaults/editors/tickCross.js +94 -96
  145. package/src/js/modules/Edit/defaults/editors/time.js +126 -98
  146. package/src/js/modules/Edit/defaults/editors.js +28 -28
  147. package/src/js/modules/Edit/inputMask.js +73 -73
  148. package/src/js/modules/Export/Export.js +626 -623
  149. package/src/js/modules/Export/ExportColumn.js +10 -10
  150. package/src/js/modules/Export/ExportRow.js +9 -9
  151. package/src/js/modules/Filter/Filter.js +903 -892
  152. package/src/js/modules/Filter/defaults/filters.js +107 -107
  153. package/src/js/modules/Format/Format.js +215 -212
  154. package/src/js/modules/Format/defaults/formatters/buttonCross.js +2 -2
  155. package/src/js/modules/Format/defaults/formatters/buttonTick.js +2 -2
  156. package/src/js/modules/Format/defaults/formatters/color.js +3 -3
  157. package/src/js/modules/Format/defaults/formatters/datetime.js +36 -36
  158. package/src/js/modules/Format/defaults/formatters/datetimediff.js +40 -40
  159. package/src/js/modules/Format/defaults/formatters/handle.js +3 -3
  160. package/src/js/modules/Format/defaults/formatters/html.js +2 -2
  161. package/src/js/modules/Format/defaults/formatters/image.js +39 -39
  162. package/src/js/modules/Format/defaults/formatters/link.js +77 -77
  163. package/src/js/modules/Format/defaults/formatters/lookup.js +9 -9
  164. package/src/js/modules/Format/defaults/formatters/money.js +43 -36
  165. package/src/js/modules/Format/defaults/formatters/plaintext.js +2 -2
  166. package/src/js/modules/Format/defaults/formatters/progress.js +132 -132
  167. package/src/js/modules/Format/defaults/formatters/responsiveCollapse.js +43 -43
  168. package/src/js/modules/Format/defaults/formatters/rowSelection.js +59 -59
  169. package/src/js/modules/Format/defaults/formatters/rownum.js +9 -9
  170. package/src/js/modules/Format/defaults/formatters/star.js +37 -37
  171. package/src/js/modules/Format/defaults/formatters/textarea.js +3 -3
  172. package/src/js/modules/Format/defaults/formatters/tickCross.js +21 -21
  173. package/src/js/modules/Format/defaults/formatters/traffic.js +46 -46
  174. package/src/js/modules/Format/defaults/formatters.js +42 -42
  175. package/src/js/modules/FrozenColumns/FrozenColumns.js +299 -299
  176. package/src/js/modules/FrozenRows/FrozenRows.js +169 -159
  177. package/src/js/modules/GroupRows/Group.js +597 -598
  178. package/src/js/modules/GroupRows/GroupComponent.js +70 -66
  179. package/src/js/modules/GroupRows/GroupRows.js +639 -639
  180. package/src/js/modules/History/History.js +171 -171
  181. package/src/js/modules/History/defaults/redoers.js +24 -24
  182. package/src/js/modules/History/defaults/undoers.js +24 -24
  183. package/src/js/modules/HtmlTableImport/HtmlTableImport.js +181 -181
  184. package/src/js/modules/Import/Import.js +193 -193
  185. package/src/js/modules/Import/defaults/importers/array.js +4 -4
  186. package/src/js/modules/Import/defaults/importers/csv.js +62 -62
  187. package/src/js/modules/Import/defaults/importers/json.js +7 -7
  188. package/src/js/modules/Import/defaults/importers.js +8 -8
  189. package/src/js/modules/Interaction/Interaction.js +337 -325
  190. package/src/js/modules/Keybindings/Keybindings.js +172 -172
  191. package/src/js/modules/Keybindings/defaults/actions.js +118 -118
  192. package/src/js/modules/Keybindings/defaults/bindings.js +12 -12
  193. package/src/js/modules/Layout/Layout.js +49 -49
  194. package/src/js/modules/Layout/defaults/modes/fitColumns.js +171 -171
  195. package/src/js/modules/Layout/defaults/modes/fitData.js +9 -9
  196. package/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +9 -9
  197. package/src/js/modules/Layout/defaults/modes/fitDataStretch.js +39 -39
  198. package/src/js/modules/Layout/defaults/modes.js +11 -11
  199. package/src/js/modules/Localize/Localize.js +185 -185
  200. package/src/js/modules/Localize/defaults/langs.js +36 -36
  201. package/src/js/modules/Menu/Menu.js +302 -302
  202. package/src/js/modules/MoveColumns/MoveColumns.js +299 -299
  203. package/src/js/modules/MoveRows/MoveRows.js +635 -635
  204. package/src/js/modules/Mutator/Mutator.js +161 -161
  205. package/src/js/modules/Page/Page.js +881 -881
  206. package/src/js/modules/Page/defaults/pageCounters/pages.js +32 -32
  207. package/src/js/modules/Page/defaults/pageCounters/rows.js +39 -39
  208. package/src/js/modules/Page/defaults/pageCounters.js +7 -7
  209. package/src/js/modules/Persistence/Persistence.js +472 -458
  210. package/src/js/modules/Persistence/defaults/readers.js +29 -29
  211. package/src/js/modules/Persistence/defaults/writers.js +12 -12
  212. package/src/js/modules/Popup/Popup.js +231 -231
  213. package/src/js/modules/Print/Print.js +137 -137
  214. package/src/js/modules/ReactiveData/ReactiveData.js +408 -408
  215. package/src/js/modules/ResizeColumns/ResizeColumns.js +309 -309
  216. package/src/js/modules/ResizeRows/ResizeRows.js +111 -111
  217. package/src/js/modules/ResizeTable/ResizeTable.js +159 -159
  218. package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +348 -345
  219. package/src/js/modules/SelectRow/SelectRow.js +474 -444
  220. package/src/js/modules/Sort/Sort.js +470 -470
  221. package/src/js/modules/Sort/defaults/sorters/alphanum.js +43 -43
  222. package/src/js/modules/Sort/defaults/sorters/array.js +53 -53
  223. package/src/js/modules/Sort/defaults/sorters/boolean.js +6 -6
  224. package/src/js/modules/Sort/defaults/sorters/date.js +9 -9
  225. package/src/js/modules/Sort/defaults/sorters/datetime.js +43 -43
  226. package/src/js/modules/Sort/defaults/sorters/exists.js +6 -6
  227. package/src/js/modules/Sort/defaults/sorters/number.js +39 -39
  228. package/src/js/modules/Sort/defaults/sorters/string.js +33 -33
  229. package/src/js/modules/Sort/defaults/sorters/time.js +9 -9
  230. package/src/js/modules/Sort/defaults/sorters.js +20 -20
  231. package/src/js/modules/Tooltip/Tooltip.js +130 -130
  232. package/src/js/modules/Validate/Validate.js +305 -305
  233. package/src/js/modules/Validate/defaults/validators.js +138 -138
  234. package/src/scss/tabulator.scss +1496 -1467
  235. package/src/scss/themes/bootstrap/functions4.scss +118 -118
  236. package/src/scss/themes/bootstrap/functions5.scss +302 -302
  237. package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +288 -284
  238. package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +552 -544
  239. package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +584 -574
  240. package/src/scss/themes/bootstrap/variables3.scss +870 -870
  241. package/src/scss/themes/bootstrap/variables4.scss +930 -930
  242. package/src/scss/themes/bootstrap/variables5.scss +1641 -1641
  243. package/src/scss/themes/bulma/tabulator_bulma.scss +258 -252
  244. package/src/scss/themes/bulma/variables.scss +197 -197
  245. package/src/scss/themes/materialize/tabulator_materialize.scss +269 -265
  246. package/src/scss/themes/materialize/variables.scss +70 -70
  247. package/src/scss/themes/semanticui/tabulator_semanticui.scss +586 -561
  248. package/src/scss/themes/semanticui/variables.scss +839 -839
  249. package/src/scss/themes/semanticui/variables_table.scss +247 -247
  250. package/src/scss/themes/tabulator_midnight.scss +162 -158
  251. package/src/scss/themes/tabulator_modern.scss +239 -231
  252. package/src/scss/themes/tabulator_simple.scss +102 -102
  253. package/src/scss/themes/tabulator_site.scss +193 -189
@@ -1,133 +1,133 @@
1
- import CellComponent from '../../../../core/cell/CellComponent.js';
2
-
3
- export default function(cell, formatterParams = {}, onRendered){ //progress bar
4
- var value = this.sanitizeHTML(cell.getValue()) || 0,
5
- element = cell.getElement(),
6
- max = formatterParams.max ? formatterParams.max : 100,
7
- min = formatterParams.min ? formatterParams.min : 0,
8
- legendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : "center",
9
- percent, percentValue, color, legend, legendColor;
10
-
11
- //make sure value is in range
12
- percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
13
- percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
14
-
15
- //workout percentage
16
- percent = (max - min) / 100;
17
- percentValue = Math.round((percentValue - min) / percent);
18
-
19
- //set bar color
20
- switch(typeof formatterParams.color){
21
- case "string":
22
- color = formatterParams.color;
23
- break;
24
- case "function":
25
- color = formatterParams.color(value);
26
- break;
27
- case "object":
28
- if(Array.isArray(formatterParams.color)){
29
- let unit = 100 / formatterParams.color.length;
30
- let index = Math.floor(percentValue / unit);
31
-
32
- index = Math.min(index, formatterParams.color.length - 1);
33
- index = Math.max(index, 0);
34
- color = formatterParams.color[index];
35
- break;
36
- }
37
- default:
38
- color = "#2DC214";
39
- }
40
-
41
- //generate legend
42
- switch(typeof formatterParams.legend){
43
- case "string":
44
- legend = formatterParams.legend;
45
- break;
46
- case "function":
47
- legend = formatterParams.legend(value);
48
- break;
49
- case "boolean":
50
- legend = value;
51
- break;
52
- default:
53
- legend = false;
54
- }
55
-
56
- //set legend color
57
- switch(typeof formatterParams.legendColor){
58
- case "string":
59
- legendColor = formatterParams.legendColor;
60
- break;
61
- case "function":
62
- legendColor = formatterParams.legendColor(value);
63
- break;
64
- case "object":
65
- if(Array.isArray(formatterParams.legendColor)){
66
- let unit = 100 / formatterParams.legendColor.length;
67
- let index = Math.floor(percentValue / unit);
68
-
69
- index = Math.min(index, formatterParams.legendColor.length - 1);
70
- index = Math.max(index, 0);
71
- legendColor = formatterParams.legendColor[index];
72
- }
73
- break;
74
- default:
75
- legendColor = "#000";
76
- }
77
-
78
- element.style.minWidth = "30px";
79
- element.style.position = "relative";
80
-
81
- element.setAttribute("aria-label", percentValue);
82
-
83
- var barEl = document.createElement("div");
84
- barEl.style.display = "inline-block";
85
- barEl.style.width = percentValue + "%";
86
- barEl.style.backgroundColor = color;
87
- barEl.style.height = "100%";
88
-
89
- barEl.setAttribute('data-max', max);
90
- barEl.setAttribute('data-min', min);
91
-
92
- var barContainer = document.createElement("div");
93
- barContainer.style.position = "relative";
94
- barContainer.style.width = "100%";
95
- barContainer.style.height = "100%";
96
-
97
- if(legend){
98
- var legendEl = document.createElement("div");
99
- legendEl.style.position = "absolute";
100
- legendEl.style.top = 0;
101
- legendEl.style.left = 0;
102
- legendEl.style.textAlign = legendAlign;
103
- legendEl.style.width = "100%";
104
- legendEl.style.color = legendColor;
105
- legendEl.innerHTML = legend;
106
- }
107
-
108
- onRendered(function(){
109
-
110
- //handle custom element needed if formatter is to be included in printed/downloaded output
111
- if(!(cell instanceof CellComponent)){
112
- var holderEl = document.createElement("div");
113
- holderEl.style.position = "absolute";
114
- holderEl.style.top = "4px";
115
- holderEl.style.bottom = "4px";
116
- holderEl.style.left = "4px";
117
- holderEl.style.right = "4px";
118
-
119
- element.appendChild(holderEl);
120
-
121
- element = holderEl;
122
- }
123
-
124
- element.appendChild(barContainer);
125
- barContainer.appendChild(barEl);
126
-
127
- if(legend){
128
- barContainer.appendChild(legendEl);
129
- }
130
- });
131
-
132
- return "";
1
+ import CellComponent from '../../../../core/cell/CellComponent.js';
2
+
3
+ export default function(cell, formatterParams = {}, onRendered){ //progress bar
4
+ var value = this.sanitizeHTML(cell.getValue()) || 0,
5
+ element = cell.getElement(),
6
+ max = formatterParams.max ? formatterParams.max : 100,
7
+ min = formatterParams.min ? formatterParams.min : 0,
8
+ legendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : "center",
9
+ percent, percentValue, color, legend, legendColor;
10
+
11
+ //make sure value is in range
12
+ percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
13
+ percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
14
+
15
+ //workout percentage
16
+ percent = (max - min) / 100;
17
+ percentValue = Math.round((percentValue - min) / percent);
18
+
19
+ //set bar color
20
+ switch(typeof formatterParams.color){
21
+ case "string":
22
+ color = formatterParams.color;
23
+ break;
24
+ case "function":
25
+ color = formatterParams.color(value);
26
+ break;
27
+ case "object":
28
+ if(Array.isArray(formatterParams.color)){
29
+ let unit = 100 / formatterParams.color.length;
30
+ let index = Math.floor(percentValue / unit);
31
+
32
+ index = Math.min(index, formatterParams.color.length - 1);
33
+ index = Math.max(index, 0);
34
+ color = formatterParams.color[index];
35
+ break;
36
+ }
37
+ default:
38
+ color = "#2DC214";
39
+ }
40
+
41
+ //generate legend
42
+ switch(typeof formatterParams.legend){
43
+ case "string":
44
+ legend = formatterParams.legend;
45
+ break;
46
+ case "function":
47
+ legend = formatterParams.legend(value);
48
+ break;
49
+ case "boolean":
50
+ legend = value;
51
+ break;
52
+ default:
53
+ legend = false;
54
+ }
55
+
56
+ //set legend color
57
+ switch(typeof formatterParams.legendColor){
58
+ case "string":
59
+ legendColor = formatterParams.legendColor;
60
+ break;
61
+ case "function":
62
+ legendColor = formatterParams.legendColor(value);
63
+ break;
64
+ case "object":
65
+ if(Array.isArray(formatterParams.legendColor)){
66
+ let unit = 100 / formatterParams.legendColor.length;
67
+ let index = Math.floor(percentValue / unit);
68
+
69
+ index = Math.min(index, formatterParams.legendColor.length - 1);
70
+ index = Math.max(index, 0);
71
+ legendColor = formatterParams.legendColor[index];
72
+ }
73
+ break;
74
+ default:
75
+ legendColor = "#000";
76
+ }
77
+
78
+ element.style.minWidth = "30px";
79
+ element.style.position = "relative";
80
+
81
+ element.setAttribute("aria-label", percentValue);
82
+
83
+ var barEl = document.createElement("div");
84
+ barEl.style.display = "inline-block";
85
+ barEl.style.width = percentValue + "%";
86
+ barEl.style.backgroundColor = color;
87
+ barEl.style.height = "100%";
88
+
89
+ barEl.setAttribute('data-max', max);
90
+ barEl.setAttribute('data-min', min);
91
+
92
+ var barContainer = document.createElement("div");
93
+ barContainer.style.position = "relative";
94
+ barContainer.style.width = "100%";
95
+ barContainer.style.height = "100%";
96
+
97
+ if(legend){
98
+ var legendEl = document.createElement("div");
99
+ legendEl.style.position = "absolute";
100
+ legendEl.style.top = 0;
101
+ legendEl.style.left = 0;
102
+ legendEl.style.textAlign = legendAlign;
103
+ legendEl.style.width = "100%";
104
+ legendEl.style.color = legendColor;
105
+ legendEl.innerHTML = legend;
106
+ }
107
+
108
+ onRendered(function(){
109
+
110
+ //handle custom element needed if formatter is to be included in printed/downloaded output
111
+ if(!(cell instanceof CellComponent)){
112
+ var holderEl = document.createElement("div");
113
+ holderEl.style.position = "absolute";
114
+ holderEl.style.top = "4px";
115
+ holderEl.style.bottom = "4px";
116
+ holderEl.style.left = "4px";
117
+ holderEl.style.right = "4px";
118
+
119
+ element.appendChild(holderEl);
120
+
121
+ element = holderEl;
122
+ }
123
+
124
+ element.appendChild(barContainer);
125
+ barContainer.appendChild(barEl);
126
+
127
+ if(legend){
128
+ barContainer.appendChild(legendEl);
129
+ }
130
+ });
131
+
132
+ return "";
133
133
  }
@@ -1,44 +1,44 @@
1
- export default function(cell, formatterParams, onRendered){
2
- var el = document.createElement("div"),
3
- config = cell.getRow()._row.modules.responsiveLayout;
4
-
5
- el.classList.add("tabulator-responsive-collapse-toggle");
6
-
7
- el.innerHTML = `<svg class='tabulator-responsive-collapse-toggle-open' viewbox="0 0 24 24">
8
- <line x1="7" y1="12" x2="17" y2="12" fill="none" stroke-width="3" stroke-linecap="round" />
9
- <line y1="7" x1="12" y2="17" x2="12" fill="none" stroke-width="3" stroke-linecap="round" />
10
- </svg>
11
-
12
- <svg class='tabulator-responsive-collapse-toggle-close' viewbox="0 0 24 24">
13
- <line x1="7" y1="12" x2="17" y2="12" fill="none" stroke-width="3" stroke-linecap="round" />
14
- </svg>`;
15
-
16
- cell.getElement().classList.add("tabulator-row-handle");
17
-
18
- function toggleList(isOpen){
19
- var collapseEl = config.element;
20
-
21
- config.open = isOpen;
22
-
23
- if(collapseEl){
24
-
25
- if(config.open){
26
- el.classList.add("open");
27
- collapseEl.style.display = '';
28
- }else{
29
- el.classList.remove("open");
30
- collapseEl.style.display = 'none';
31
- }
32
- }
33
- }
34
-
35
- el.addEventListener("click", function(e){
36
- e.stopImmediatePropagation();
37
- toggleList(!config.open);
38
- cell.getTable().rowManager.adjustTableSize();
39
- });
40
-
41
- toggleList(config.open);
42
-
43
- return el;
1
+ export default function(cell, formatterParams, onRendered){
2
+ var el = document.createElement("div"),
3
+ config = cell.getRow()._row.modules.responsiveLayout;
4
+
5
+ el.classList.add("tabulator-responsive-collapse-toggle");
6
+
7
+ el.innerHTML = `<svg class='tabulator-responsive-collapse-toggle-open' viewbox="0 0 24 24">
8
+ <line x1="7" y1="12" x2="17" y2="12" fill="none" stroke-width="3" stroke-linecap="round" />
9
+ <line y1="7" x1="12" y2="17" x2="12" fill="none" stroke-width="3" stroke-linecap="round" />
10
+ </svg>
11
+
12
+ <svg class='tabulator-responsive-collapse-toggle-close' viewbox="0 0 24 24">
13
+ <line x1="7" y1="12" x2="17" y2="12" fill="none" stroke-width="3" stroke-linecap="round" />
14
+ </svg>`;
15
+
16
+ cell.getElement().classList.add("tabulator-row-handle");
17
+
18
+ function toggleList(isOpen){
19
+ var collapseEl = config.element;
20
+
21
+ config.open = isOpen;
22
+
23
+ if(collapseEl){
24
+
25
+ if(config.open){
26
+ el.classList.add("open");
27
+ collapseEl.style.display = '';
28
+ }else{
29
+ el.classList.remove("open");
30
+ collapseEl.style.display = 'none';
31
+ }
32
+ }
33
+ }
34
+
35
+ el.addEventListener("click", function(e){
36
+ e.stopImmediatePropagation();
37
+ toggleList(!config.open);
38
+ cell.getTable().rowManager.adjustTableSize();
39
+ });
40
+
41
+ toggleList(config.open);
42
+
43
+ return el;
44
44
  }
@@ -1,60 +1,60 @@
1
- import RowComponent from '../../../../core/row/RowComponent.js';
2
-
3
- export default function(cell, formatterParams, onRendered){
4
- var checkbox = document.createElement("input");
5
- var blocked = false;
6
-
7
- checkbox.type = 'checkbox';
8
-
9
- checkbox.setAttribute("aria-label", "Select Row");
10
-
11
- if(this.table.modExists("selectRow", true)){
12
-
13
- checkbox.addEventListener("click", (e) => {
14
- e.stopPropagation();
15
- });
16
-
17
- if(typeof cell.getRow == 'function'){
18
- var row = cell.getRow();
19
-
20
- if(row instanceof RowComponent){
21
-
22
- checkbox.addEventListener("change", (e) => {
23
- if(this.table.options.selectableRangeMode === "click"){
24
- if(!blocked){
25
- row.toggleSelect();
26
- }else{
27
- blocked = false;
28
- }
29
- }else{
30
- row.toggleSelect();
31
- }
32
- });
33
-
34
- if(this.table.options.selectableRangeMode === "click"){
35
- checkbox.addEventListener("click", (e) => {
36
- blocked = true;
37
- this.table.modules.selectRow.handleComplexRowClick(row._row, e);
38
- });
39
- }
40
-
41
- checkbox.checked = row.isSelected && row.isSelected();
42
- this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
43
- }else{
44
- checkbox = "";
45
- }
46
- }else {
47
- checkbox.addEventListener("change", (e) => {
48
- if(this.table.modules.selectRow.selectedRows.length){
49
- this.table.deselectRow();
50
- }else {
51
- this.table.selectRow(formatterParams.rowRange);
52
- }
53
- });
54
-
55
- this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
56
- }
57
- }
58
-
59
- return checkbox;
1
+ import RowComponent from '../../../../core/row/RowComponent.js';
2
+
3
+ export default function(cell, formatterParams, onRendered){
4
+ var checkbox = document.createElement("input");
5
+ var blocked = false;
6
+
7
+ checkbox.type = 'checkbox';
8
+
9
+ checkbox.setAttribute("aria-label", "Select Row");
10
+
11
+ if(this.table.modExists("selectRow", true)){
12
+
13
+ checkbox.addEventListener("click", (e) => {
14
+ e.stopPropagation();
15
+ });
16
+
17
+ if(typeof cell.getRow == 'function'){
18
+ var row = cell.getRow();
19
+
20
+ if(row instanceof RowComponent){
21
+
22
+ checkbox.addEventListener("change", (e) => {
23
+ if(this.table.options.selectableRangeMode === "click"){
24
+ if(!blocked){
25
+ row.toggleSelect();
26
+ }else{
27
+ blocked = false;
28
+ }
29
+ }else{
30
+ row.toggleSelect();
31
+ }
32
+ });
33
+
34
+ if(this.table.options.selectableRangeMode === "click"){
35
+ checkbox.addEventListener("click", (e) => {
36
+ blocked = true;
37
+ this.table.modules.selectRow.handleComplexRowClick(row._row, e);
38
+ });
39
+ }
40
+
41
+ checkbox.checked = row.isSelected && row.isSelected();
42
+ this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
43
+ }else{
44
+ checkbox = "";
45
+ }
46
+ }else {
47
+ checkbox.addEventListener("change", (e) => {
48
+ if(this.table.modules.selectRow.selectedRows.length){
49
+ this.table.deselectRow();
50
+ }else {
51
+ this.table.selectRow(formatterParams.rowRange);
52
+ }
53
+ });
54
+
55
+ this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
56
+ }
57
+ }
58
+
59
+ return checkbox;
60
60
  }
@@ -1,10 +1,10 @@
1
- export default function(cell, formatterParams, onRendered){
2
- var content = document.createElement("span");
3
- var row = cell.getRow();
4
-
5
- row.watchPosition((position) => {
6
- content.innerText = position;
7
- });
8
-
9
- return content;
1
+ export default function(cell, formatterParams, onRendered){
2
+ var content = document.createElement("span");
3
+ var row = cell.getRow();
4
+
5
+ row.watchPosition((position) => {
6
+ content.innerText = position;
7
+ });
8
+
9
+ return content;
10
10
  }
@@ -1,38 +1,38 @@
1
- export default function(cell, formatterParams, onRendered){
2
- var value = cell.getValue(),
3
- element = cell.getElement(),
4
- maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
5
- stars = document.createElement("span"),
6
- star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
7
- starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
8
- starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
9
-
10
- //style stars holder
11
- stars.style.verticalAlign = "middle";
12
-
13
- //style star
14
- star.setAttribute("width", "14");
15
- star.setAttribute("height", "14");
16
- star.setAttribute("viewBox", "0 0 512 512");
17
- star.setAttribute("xml:space", "preserve");
18
- star.style.padding = "0 1px";
19
-
20
- value = value && !isNaN(value) ? parseInt(value) : 0;
21
-
22
- value = Math.max(0, Math.min(value, maxStars));
23
-
24
- for(var i=1;i<= maxStars;i++){
25
- var nextStar = star.cloneNode(true);
26
- nextStar.innerHTML = i <= value ? starActive : starInactive;
27
-
28
- stars.appendChild(nextStar);
29
- }
30
-
31
- element.style.whiteSpace = "nowrap";
32
- element.style.overflow = "hidden";
33
- element.style.textOverflow = "ellipsis";
34
-
35
- element.setAttribute("aria-label", value);
36
-
37
- return stars;
1
+ export default function(cell, formatterParams, onRendered){
2
+ var value = cell.getValue(),
3
+ element = cell.getElement(),
4
+ maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
5
+ stars = document.createElement("span"),
6
+ star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
7
+ starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
8
+ starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
9
+
10
+ //style stars holder
11
+ stars.style.verticalAlign = "middle";
12
+
13
+ //style star
14
+ star.setAttribute("width", "14");
15
+ star.setAttribute("height", "14");
16
+ star.setAttribute("viewBox", "0 0 512 512");
17
+ star.setAttribute("xml:space", "preserve");
18
+ star.style.padding = "0 1px";
19
+
20
+ value = value && !isNaN(value) ? parseInt(value) : 0;
21
+
22
+ value = Math.max(0, Math.min(value, maxStars));
23
+
24
+ for(var i=1;i<= maxStars;i++){
25
+ var nextStar = star.cloneNode(true);
26
+ nextStar.innerHTML = i <= value ? starActive : starInactive;
27
+
28
+ stars.appendChild(nextStar);
29
+ }
30
+
31
+ element.style.whiteSpace = "nowrap";
32
+ element.style.overflow = "hidden";
33
+ element.style.textOverflow = "ellipsis";
34
+
35
+ element.setAttribute("aria-label", value);
36
+
37
+ return stars;
38
38
  }
@@ -1,4 +1,4 @@
1
- export default function(cell, formatterParams, onRendered){
2
- cell.getElement().style.whiteSpace = "pre-wrap";
3
- return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
1
+ export default function(cell, formatterParams, onRendered){
2
+ cell.getElement().style.whiteSpace = "pre-wrap";
3
+ return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
4
4
  }
@@ -1,22 +1,22 @@
1
- export default function(cell, formatterParams, onRendered){
2
- var value = cell.getValue(),
3
- element = cell.getElement(),
4
- empty = formatterParams.allowEmpty,
5
- truthy = formatterParams.allowTruthy,
6
- trueValueSet = Object.keys(formatterParams).includes("trueValue"),
7
- tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
8
- cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
9
-
10
- if((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === "true" || value === "True" || value === 1 || value === "1")))){
11
- element.setAttribute("aria-checked", true);
12
- return tick || "";
13
- }else{
14
- if(empty && (value === "null" || value === "" || value === null || typeof value === "undefined")){
15
- element.setAttribute("aria-checked", "mixed");
16
- return "";
17
- }else{
18
- element.setAttribute("aria-checked", false);
19
- return cross || "";
20
- }
21
- }
1
+ export default function(cell, formatterParams, onRendered){
2
+ var value = cell.getValue(),
3
+ element = cell.getElement(),
4
+ empty = formatterParams.allowEmpty,
5
+ truthy = formatterParams.allowTruthy,
6
+ trueValueSet = Object.keys(formatterParams).includes("trueValue"),
7
+ tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
8
+ cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
9
+
10
+ if((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === "true" || value === "True" || value === 1 || value === "1")))){
11
+ element.setAttribute("aria-checked", true);
12
+ return tick || "";
13
+ }else{
14
+ if(empty && (value === "null" || value === "" || value === null || typeof value === "undefined")){
15
+ element.setAttribute("aria-checked", "mixed");
16
+ return "";
17
+ }else{
18
+ element.setAttribute("aria-checked", false);
19
+ return cross || "";
20
+ }
21
+ }
22
22
  }