flexmonster 2.9.30 → 2.9.31

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 (54) hide show
  1. package/flexmonster.css +1 -1
  2. package/flexmonster.es5.full.js +296 -294
  3. package/flexmonster.es5.js +31 -30
  4. package/flexmonster.full.js +133 -132
  5. package/flexmonster.js +31 -31
  6. package/flexmonster.min.css +1 -1
  7. package/localizations/de.json +2 -0
  8. package/localizations/en.json +2 -0
  9. package/localizations/es.json +2 -0
  10. package/localizations/fr.json +2 -0
  11. package/localizations/hu.json +2 -0
  12. package/localizations/id.json +2 -0
  13. package/localizations/it.json +2 -0
  14. package/localizations/nl.json +2 -0
  15. package/localizations/pt.json +2 -0
  16. package/localizations/th.json +2 -0
  17. package/localizations/tr.json +2 -0
  18. package/localizations/uk.json +2 -0
  19. package/localizations/zh.json +2 -0
  20. package/package.json +1 -1
  21. package/theme/accessible/flexmonster.css +1 -1
  22. package/theme/accessible/flexmonster.min.css +1 -1
  23. package/theme/blackorange/flexmonster.css +1 -1
  24. package/theme/blackorange/flexmonster.min.css +1 -1
  25. package/theme/brightorange/flexmonster.css +1 -1
  26. package/theme/brightorange/flexmonster.min.css +1 -1
  27. package/theme/dark/flexmonster.css +1 -1
  28. package/theme/dark/flexmonster.min.css +1 -1
  29. package/theme/flexmonster-base.less +1 -1
  30. package/theme/green/flexmonster.css +1 -1
  31. package/theme/green/flexmonster.min.css +1 -1
  32. package/theme/lightblue/flexmonster.css +1 -1
  33. package/theme/lightblue/flexmonster.min.css +1 -1
  34. package/theme/macos/flexmonster.css +1 -1
  35. package/theme/macos/flexmonster.min.css +1 -1
  36. package/theme/midnight/flexmonster.css +1 -1
  37. package/theme/midnight/flexmonster.min.css +1 -1
  38. package/theme/old/flexmonster.css +1 -1
  39. package/theme/old/flexmonster.min.css +1 -1
  40. package/theme/orange/flexmonster.css +1 -1
  41. package/theme/orange/flexmonster.min.css +1 -1
  42. package/theme/purple/flexmonster.css +1 -1
  43. package/theme/purple/flexmonster.min.css +1 -1
  44. package/theme/softdefault/flexmonster.css +1 -1
  45. package/theme/softdefault/flexmonster.min.css +1 -1
  46. package/theme/stripedblue/flexmonster.css +1 -1
  47. package/theme/stripedblue/flexmonster.min.css +1 -1
  48. package/theme/stripedteal/flexmonster.css +1 -1
  49. package/theme/stripedteal/flexmonster.min.css +1 -1
  50. package/theme/teal/flexmonster.css +1 -1
  51. package/theme/teal/flexmonster.min.css +1 -1
  52. package/theme/yellow/flexmonster.css +1 -1
  53. package/theme/yellow/flexmonster.min.css +1 -1
  54. package/toolbar/flexmonster.toolbar.js +495 -477
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Flexmonster Pivot Table & Charts [https://www.flexmonster.com/]
3
- * July 2022 (v. 2.9.30)
3
+ * August 2022 (v. 2.9.31)
4
4
  * Copyright (c) 2022 Flexmonster. All rights reserved.
5
5
  *
6
6
  * Flexmonster Pivot Table & Charts commercial licenses may be obtained at
@@ -26,45 +26,45 @@ FlexmonsterToolbar.prototype.getTabs = function () {
26
26
  icon: this.icons.connect,
27
27
  kibana: false,
28
28
  menu: [{
29
- title: Labels.connect_local_csv,
30
- id: "fm-tab-connect-local-csv",
31
- handler: this.connectLocalCSVHandler,
32
- mobile: false,
33
- icon: this.icons.connect_csv
34
- },
35
- {
36
- title: Labels.connect_local_json,
37
- id: "fm-tab-connect-local-json",
38
- handler: this.connectLocalJSONHandler,
39
- mobile: false,
40
- icon: this.icons.connect_json
41
- },
42
- {
43
- title: this.osUtils.isMobile ? Labels.connect_remote_csv_mobile : Labels.connect_remote_csv,
44
- id: "fm-tab-connect-remote-csv",
45
- handler: this.connectRemoteCSV,
46
- icon: this.icons.connect_csv_remote
47
- },
48
- {
49
- title: this.osUtils.isMobile ? Labels.connect_remote_json_mobile : Labels.connect_remote_json,
50
- id: "fm-tab-connect-remote-json",
51
- handler: this.connectRemoteJSON,
52
- icon: this.icons.connect_json_remote
53
- },
54
- {
55
- title: this.osUtils.isMobile ? Labels.connect_olap_mobile : Labels.connect_olap,
56
- id: "fm-tab-connect-olap",
57
- handler: this.connectOLAP,
58
- flat: false,
59
- icon: this.icons.connect_olap
60
- },
61
- {
62
- title: this.osUtils.isMobile ? Labels.connect_elastic_mobile : Labels.connect_elastic,
63
- id: "fm-tab-connect-elastic",
64
- handler: this.connectElastic,
65
- flat: false,
66
- icon: this.icons.connect_elastic
67
- }
29
+ title: Labels.connect_local_csv,
30
+ id: "fm-tab-connect-local-csv",
31
+ handler: this.connectLocalCSVHandler,
32
+ mobile: false,
33
+ icon: this.icons.connect_csv
34
+ },
35
+ {
36
+ title: Labels.connect_local_json,
37
+ id: "fm-tab-connect-local-json",
38
+ handler: this.connectLocalJSONHandler,
39
+ mobile: false,
40
+ icon: this.icons.connect_json
41
+ },
42
+ {
43
+ title: this.osUtils.isMobile ? Labels.connect_remote_csv_mobile : Labels.connect_remote_csv,
44
+ id: "fm-tab-connect-remote-csv",
45
+ handler: this.connectRemoteCSV,
46
+ icon: this.icons.connect_csv_remote
47
+ },
48
+ {
49
+ title: this.osUtils.isMobile ? Labels.connect_remote_json_mobile : Labels.connect_remote_json,
50
+ id: "fm-tab-connect-remote-json",
51
+ handler: this.connectRemoteJSON,
52
+ icon: this.icons.connect_json_remote
53
+ },
54
+ {
55
+ title: this.osUtils.isMobile ? Labels.connect_olap_mobile : Labels.connect_olap,
56
+ id: "fm-tab-connect-olap",
57
+ handler: this.connectOLAP,
58
+ flat: false,
59
+ icon: this.icons.connect_olap
60
+ },
61
+ {
62
+ title: this.osUtils.isMobile ? Labels.connect_elastic_mobile : Labels.connect_elastic,
63
+ id: "fm-tab-connect-elastic",
64
+ handler: this.connectElastic,
65
+ flat: false,
66
+ icon: this.icons.connect_elastic
67
+ }
68
68
  ]
69
69
  });
70
70
 
@@ -75,18 +75,18 @@ FlexmonsterToolbar.prototype.getTabs = function () {
75
75
  icon: this.icons.open,
76
76
  kibana: false,
77
77
  menu: [{
78
- title: Labels.local_report,
79
- id: "fm-tab-open-local-report",
80
- handler: this.openLocalReport,
81
- mobile: false,
82
- icon: this.icons.open_local
83
- },
84
- {
85
- title: this.osUtils.isMobile ? Labels.remote_report_mobile : Labels.remote_report,
86
- id: "fm-tab-open-remote-report",
87
- handler: this.openRemoteReport,
88
- icon: this.icons.open_remote
89
- }
78
+ title: Labels.local_report,
79
+ id: "fm-tab-open-local-report",
80
+ handler: this.openLocalReport,
81
+ mobile: false,
82
+ icon: this.icons.open_local
83
+ },
84
+ {
85
+ title: this.osUtils.isMobile ? Labels.remote_report_mobile : Labels.remote_report,
86
+ id: "fm-tab-open-remote-report",
87
+ handler: this.openRemoteReport,
88
+ icon: this.icons.open_remote
89
+ }
90
90
  ]
91
91
  });
92
92
 
@@ -107,46 +107,46 @@ FlexmonsterToolbar.prototype.getTabs = function () {
107
107
  mobile: false,
108
108
  icon: this.icons.export,
109
109
  menu: [{
110
- title: Labels.export_print,
111
- id: "fm-tab-export-print",
112
- handler: this.printHandler,
113
- icon: this.icons.export_print
114
- },
115
- {
116
- title: Labels.export_html,
117
- id: "fm-tab-export-html",
118
- handler: this.exportHandler,
119
- args: "html",
120
- icon: this.icons.export_html
121
- },
122
- {
123
- title: Labels.export_csv,
124
- id: "fm-tab-export-csv",
125
- handler: this.exportHandler,
126
- args: "csv",
127
- icon: this.icons.export_csv
128
- },
129
- {
130
- title: Labels.export_excel,
131
- id: "fm-tab-export-excel",
132
- handler: this.exportHandler,
133
- args: "excel",
134
- icon: this.icons.export_excel
135
- },
136
- {
137
- title: Labels.export_image,
138
- id: "fm-tab-export-image",
139
- handler: this.exportHandler,
140
- args: "image",
141
- icon: this.icons.export_image
142
- },
143
- {
144
- title: Labels.export_pdf,
145
- id: "fm-tab-export-pdf",
146
- handler: this.exportHandler,
147
- args: "pdf",
148
- icon: this.icons.export_pdf
149
- },
110
+ title: Labels.export_print,
111
+ id: "fm-tab-export-print",
112
+ handler: this.printHandler,
113
+ icon: this.icons.export_print
114
+ },
115
+ {
116
+ title: Labels.export_html,
117
+ id: "fm-tab-export-html",
118
+ handler: this.exportHandler,
119
+ args: "html",
120
+ icon: this.icons.export_html
121
+ },
122
+ {
123
+ title: Labels.export_csv,
124
+ id: "fm-tab-export-csv",
125
+ handler: this.exportHandler,
126
+ args: "csv",
127
+ icon: this.icons.export_csv
128
+ },
129
+ {
130
+ title: Labels.export_excel,
131
+ id: "fm-tab-export-excel",
132
+ handler: this.exportHandler,
133
+ args: "excel",
134
+ icon: this.icons.export_excel
135
+ },
136
+ {
137
+ title: Labels.export_image,
138
+ id: "fm-tab-export-image",
139
+ handler: this.exportHandler,
140
+ args: "image",
141
+ icon: this.icons.export_image
142
+ },
143
+ {
144
+ title: Labels.export_pdf,
145
+ id: "fm-tab-export-pdf",
146
+ handler: this.exportHandler,
147
+ args: "pdf",
148
+ icon: this.icons.export_pdf
149
+ },
150
150
  ]
151
151
  });
152
152
  // Share tab
@@ -177,63 +177,63 @@ FlexmonsterToolbar.prototype.getTabs = function () {
177
177
  onShowHandler: this.checkChartMultipleMeasures,
178
178
  icon: this.icons.charts,
179
179
  menu: [{
180
- title: Labels.charts_column,
181
- id: "fm-tab-charts-column",
182
- handler: this.chartsHandler,
183
- args: "column",
184
- icon: this.icons.charts
185
- },
186
- {
187
- title: Labels.charts_bar_horizontal,
188
- id: "fm-tab-charts-bar-horizontal",
189
- handler: this.chartsHandler,
190
- args: "bar_h",
191
- icon: this.icons.charts_bar
192
- },
193
- {
194
- title: Labels.charts_line,
195
- id: "fm-tab-charts-line",
196
- handler: this.chartsHandler,
197
- args: "line",
198
- icon: this.icons.charts_line
199
- },
200
- {
201
- title: Labels.charts_scatter,
202
- id: "fm-tab-charts-scatter",
203
- handler: this.chartsHandler,
204
- args: "scatter",
205
- icon: this.icons.charts_scatter
206
- },
207
- {
208
- title: Labels.charts_pie,
209
- id: "fm-tab-charts-pie",
210
- handler: this.chartsHandler,
211
- args: "pie",
212
- icon: this.icons.charts_pie
213
- },
214
- {
215
- title: Labels.charts_stacked_column,
216
- id: "fm-tab-charts-stacked-column",
217
- handler: this.chartsHandler,
218
- args: "stacked_column",
219
- flat: false,
220
- icon: this.icons.charts_stacked_column
221
- },
222
- {
223
- title: Labels.charts_column_line,
224
- id: "fm-tab-charts-column-line",
225
- handler: this.chartsHandler,
226
- args: "column_line",
227
- icon: this.icons.charts_column_line
228
- },
229
- {
230
- title: Labels.charts_multiple,
231
- id: "fm-tab-charts-multiple",
232
- handler: this.chartsMultipleHandler,
233
- flat: false,
234
- mobile: false,
235
- type: "checkbox"
236
- }
180
+ title: Labels.charts_column,
181
+ id: "fm-tab-charts-column",
182
+ handler: this.chartsHandler,
183
+ args: "column",
184
+ icon: this.icons.charts
185
+ },
186
+ {
187
+ title: Labels.charts_bar_horizontal,
188
+ id: "fm-tab-charts-bar-horizontal",
189
+ handler: this.chartsHandler,
190
+ args: "bar_h",
191
+ icon: this.icons.charts_bar
192
+ },
193
+ {
194
+ title: Labels.charts_line,
195
+ id: "fm-tab-charts-line",
196
+ handler: this.chartsHandler,
197
+ args: "line",
198
+ icon: this.icons.charts_line
199
+ },
200
+ {
201
+ title: Labels.charts_scatter,
202
+ id: "fm-tab-charts-scatter",
203
+ handler: this.chartsHandler,
204
+ args: "scatter",
205
+ icon: this.icons.charts_scatter
206
+ },
207
+ {
208
+ title: Labels.charts_pie,
209
+ id: "fm-tab-charts-pie",
210
+ handler: this.chartsHandler,
211
+ args: "pie",
212
+ icon: this.icons.charts_pie
213
+ },
214
+ {
215
+ title: Labels.charts_stacked_column,
216
+ id: "fm-tab-charts-stacked-column",
217
+ handler: this.chartsHandler,
218
+ args: "stacked_column",
219
+ flat: false,
220
+ icon: this.icons.charts_stacked_column
221
+ },
222
+ {
223
+ title: Labels.charts_column_line,
224
+ id: "fm-tab-charts-column-line",
225
+ handler: this.chartsHandler,
226
+ args: "column_line",
227
+ icon: this.icons.charts_column_line
228
+ },
229
+ {
230
+ title: Labels.charts_multiple,
231
+ id: "fm-tab-charts-multiple",
232
+ handler: this.chartsMultipleHandler,
233
+ flat: false,
234
+ mobile: false,
235
+ type: "checkbox"
236
+ }
237
237
  ]
238
238
  });
239
239
  tabs.push({
@@ -247,17 +247,17 @@ FlexmonsterToolbar.prototype.getTabs = function () {
247
247
  icon: this.icons.format,
248
248
  rightGroup: true,
249
249
  menu: [{
250
- title: this.osUtils.isMobile ? Labels.format_cells_mobile : Labels.format_cells,
251
- id: "fm-tab-format-cells",
252
- handler: this.formatCellsHandler,
253
- icon: this.icons.format_number
254
- },
255
- {
256
- title: this.osUtils.isMobile ? Labels.conditional_formatting_mobile : Labels.conditional_formatting,
257
- id: "fm-tab-format-conditional",
258
- handler: this.conditionalFormattingHandler,
259
- icon: this.icons.format_conditional
260
- }
250
+ title: this.osUtils.isMobile ? Labels.format_cells_mobile : Labels.format_cells,
251
+ id: "fm-tab-format-cells",
252
+ handler: this.formatCellsHandler,
253
+ icon: this.icons.format_number
254
+ },
255
+ {
256
+ title: this.osUtils.isMobile ? Labels.conditional_formatting_mobile : Labels.conditional_formatting,
257
+ id: "fm-tab-format-conditional",
258
+ handler: this.conditionalFormattingHandler,
259
+ icon: this.icons.format_conditional
260
+ }
261
261
  ]
262
262
  });
263
263
 
@@ -429,8 +429,8 @@ FlexmonsterToolbar.prototype.init = function () {
429
429
  for (var i = 0; i < children.length; i++) {
430
430
  var classList = children[i].classList;
431
431
  if (!(classList.contains("fm-popup") ||
432
- classList.contains("fm-modal-overlay") ||
433
- classList.contains("fm-popup-modal-overlay"))) {
432
+ classList.contains("fm-modal-overlay") ||
433
+ classList.contains("fm-popup-modal-overlay"))) {
434
434
  elementsToDelete.push(children[i]);
435
435
  }
436
436
  }
@@ -774,7 +774,7 @@ FlexmonsterToolbar.prototype.printHandler = function () {
774
774
  this.pivot.print();
775
775
  }
776
776
  FlexmonsterToolbar.prototype.exportHandler = function (type) {
777
- (type == "pdf") ? this.showExportPdfDialog(): this.pivot.exportTo(type);
777
+ (type == "pdf") ? this.showExportPdfDialog() : this.pivot.exportTo(type);
778
778
  }
779
779
  // Share tab
780
780
  FlexmonsterToolbar.prototype.shareReportHandler = function () {
@@ -803,15 +803,15 @@ FlexmonsterToolbar.prototype.showConnectToRemoteCSVDialog = function () {
803
803
  dialog.content.classList.add("fm-popup-w500");
804
804
  dialog.setTitle(Labels.open_remote_csv);
805
805
  dialog.setToolbar([{
806
- id: "fm-btn-open",
807
- label: Labels.open,
808
- handler: applyHandler,
809
- isPositive: true
810
- },
811
- {
812
- id: "fm-btn-cancel",
813
- label: Labels.cancel
814
- }
806
+ id: "fm-btn-open",
807
+ label: Labels.open,
808
+ handler: applyHandler,
809
+ isPositive: true
810
+ },
811
+ {
812
+ id: "fm-btn-cancel",
813
+ label: Labels.cancel
814
+ }
815
815
  ]);
816
816
 
817
817
  var content = document.createElement("div");
@@ -842,15 +842,15 @@ FlexmonsterToolbar.prototype.showConnectToRemoteJsonDialog = function () {
842
842
  dialog.content.classList.add("fm-popup-w500");
843
843
  dialog.setTitle(Labels.open_remote_json);
844
844
  dialog.setToolbar([{
845
- id: "fm-btn-open",
846
- label: Labels.open,
847
- handler: applyHandler,
848
- isPositive: true
849
- },
850
- {
851
- id: "fm-btn-cancel",
852
- label: Labels.cancel
853
- }
845
+ id: "fm-btn-open",
846
+ label: Labels.open,
847
+ handler: applyHandler,
848
+ isPositive: true
849
+ },
850
+ {
851
+ id: "fm-btn-cancel",
852
+ label: Labels.cancel
853
+ }
854
854
  ]);
855
855
 
856
856
  var content = document.createElement("div");
@@ -903,16 +903,16 @@ FlexmonsterToolbar.prototype.showConnectToElasticDialog = function () {
903
903
  dialog.content.classList.add("fm-popup-w570");
904
904
  dialog.setTitle(Labels.connect_elastic_title);
905
905
  dialog.setToolbar([{
906
- id: "fm-btn-open",
907
- label: Labels.ok,
908
- handler: okHandler,
909
- disabled: true,
910
- isPositive: true
911
- },
912
- {
913
- id: "fm-btn-cancel",
914
- label: Labels.cancel
915
- }
906
+ id: "fm-btn-open",
907
+ label: Labels.ok,
908
+ handler: okHandler,
909
+ disabled: true,
910
+ isPositive: true
911
+ },
912
+ {
913
+ id: "fm-btn-cancel",
914
+ label: Labels.cancel
915
+ }
916
916
  ]);
917
917
 
918
918
  var content = document.createElement("div");
@@ -1025,16 +1025,16 @@ FlexmonsterToolbar.prototype.showConnectToOLAPDialog = function () {
1025
1025
  dialog.content.classList.add("fm-popup-w570");
1026
1026
  dialog.setTitle(this.osUtils.isMobile ? Labels.connect_olap_mobile : Labels.olap_connection_tool);
1027
1027
  dialog.setToolbar([{
1028
- id: "fm-btn-open",
1029
- label: Labels.ok,
1030
- handler: okHandler,
1031
- disabled: true,
1032
- isPositive: true
1033
- },
1034
- {
1035
- id: "fm-btn-cancel",
1036
- label: Labels.cancel
1037
- }
1028
+ id: "fm-btn-open",
1029
+ label: Labels.ok,
1030
+ handler: okHandler,
1031
+ disabled: true,
1032
+ isPositive: true
1033
+ },
1034
+ {
1035
+ id: "fm-btn-cancel",
1036
+ label: Labels.cancel
1037
+ }
1038
1038
  ]);
1039
1039
 
1040
1040
  var content = document.createElement("div");
@@ -1133,15 +1133,15 @@ FlexmonsterToolbar.prototype.showOpenRemoteReportDialog = function () {
1133
1133
  dialog.content.classList.add("fm-popup-w500");
1134
1134
  dialog.setTitle(Labels.open_remote_report);
1135
1135
  dialog.setToolbar([{
1136
- id: "fm-btn-open",
1137
- label: Labels.open,
1138
- handler: applyHandler,
1139
- isPositive: true
1140
- },
1141
- {
1142
- id: "fm-btn-cancel",
1143
- label: Labels.cancel
1144
- }
1136
+ id: "fm-btn-open",
1137
+ label: Labels.open,
1138
+ handler: applyHandler,
1139
+ isPositive: true
1140
+ },
1141
+ {
1142
+ id: "fm-btn-cancel",
1143
+ label: Labels.cancel
1144
+ }
1145
1145
  ]);
1146
1146
  var content = document.createElement("div");
1147
1147
  var textInput = document.createElement("input");
@@ -1159,163 +1159,163 @@ FlexmonsterToolbar.prototype.showOpenRemoteReportDialog = function () {
1159
1159
  // Format cells
1160
1160
  FlexmonsterToolbar.prototype.defaults.numberFormatting = {
1161
1161
  textAligns: [{
1162
- label: "align_left",
1163
- value: "left"
1164
- },
1165
- {
1166
- label: "align_right",
1167
- value: "right"
1168
- },
1169
- {
1170
- label: "align_center",
1171
- value: "center"
1172
- },
1162
+ label: "align_left",
1163
+ value: "left"
1164
+ },
1165
+ {
1166
+ label: "align_right",
1167
+ value: "right"
1168
+ },
1169
+ {
1170
+ label: "align_center",
1171
+ value: "center"
1172
+ },
1173
1173
  ],
1174
1174
  thousandsSeparators: [{
1175
- label: "none",
1176
- value: ""
1177
- },
1178
- {
1179
- label: "space",
1180
- value: " "
1181
- },
1182
- {
1183
- label: ",",
1184
- value: ","
1185
- },
1186
- {
1187
- label: ".",
1188
- value: "."
1189
- },
1175
+ label: "none",
1176
+ value: ""
1177
+ },
1178
+ {
1179
+ label: "space",
1180
+ value: " "
1181
+ },
1182
+ {
1183
+ label: ",",
1184
+ value: ","
1185
+ },
1186
+ {
1187
+ label: ".",
1188
+ value: "."
1189
+ },
1190
1190
  ],
1191
1191
  decimalSeparators: [{
1192
- label: ",",
1193
- value: ","
1194
- },
1195
- {
1196
- label: ".",
1197
- value: "."
1198
- },
1192
+ label: ",",
1193
+ value: ","
1194
+ },
1195
+ {
1196
+ label: ".",
1197
+ value: "."
1198
+ },
1199
1199
  ],
1200
1200
  decimalPlaces: [{
1201
- label: "none",
1202
- value: -1
1203
- },
1204
- {
1205
- label: "0",
1206
- value: 0
1207
- },
1208
- {
1209
- label: "1",
1210
- value: 1
1211
- },
1212
- {
1213
- label: "2",
1214
- value: 2
1215
- },
1216
- {
1217
- label: "3",
1218
- value: 3
1219
- },
1220
- {
1221
- label: "4",
1222
- value: 4
1223
- },
1224
- {
1225
- label: "5",
1226
- value: 5
1227
- },
1228
- {
1229
- label: "6",
1230
- value: 6
1231
- },
1232
- {
1233
- label: "7",
1234
- value: 7
1235
- },
1236
- {
1237
- label: "8",
1238
- value: 8
1239
- },
1240
- {
1241
- label: "9",
1242
- value: 9
1243
- },
1201
+ label: "none",
1202
+ value: -1
1203
+ },
1204
+ {
1205
+ label: "0",
1206
+ value: 0
1207
+ },
1208
+ {
1209
+ label: "1",
1210
+ value: 1
1211
+ },
1212
+ {
1213
+ label: "2",
1214
+ value: 2
1215
+ },
1216
+ {
1217
+ label: "3",
1218
+ value: 3
1219
+ },
1220
+ {
1221
+ label: "4",
1222
+ value: 4
1223
+ },
1224
+ {
1225
+ label: "5",
1226
+ value: 5
1227
+ },
1228
+ {
1229
+ label: "6",
1230
+ value: 6
1231
+ },
1232
+ {
1233
+ label: "7",
1234
+ value: 7
1235
+ },
1236
+ {
1237
+ label: "8",
1238
+ value: 8
1239
+ },
1240
+ {
1241
+ label: "9",
1242
+ value: 9
1243
+ },
1244
1244
  ],
1245
1245
  positiveCurrencyFormats: [{
1246
- label: "$1",
1247
- value: "$1"
1248
- },
1249
- {
1250
- label: "1$",
1251
- value: "1$"
1252
- },
1246
+ label: "$1",
1247
+ value: "$1"
1248
+ },
1249
+ {
1250
+ label: "1$",
1251
+ value: "1$"
1252
+ },
1253
1253
  ],
1254
1254
  negativeCurrencyFormats: [{
1255
- label: "-$1",
1256
- value: "-$1"
1257
- },
1258
- {
1259
- label: "-1$",
1260
- value: "-1$"
1261
- },
1262
- {
1263
- label: "$-1",
1264
- value: "$-1"
1265
- },
1266
- {
1267
- label: "$1-",
1268
- value: "$1-"
1269
- },
1270
- {
1271
- label: "1-$",
1272
- value: "1-$"
1273
- },
1274
- {
1275
- label: "1$-",
1276
- value: "1$-"
1277
- },
1278
- {
1279
- label: "($1)",
1280
- value: "($1)"
1281
- },
1282
- {
1283
- label: "(1$)",
1284
- value: "(1$)"
1285
- },
1255
+ label: "-$1",
1256
+ value: "-$1"
1257
+ },
1258
+ {
1259
+ label: "-1$",
1260
+ value: "-1$"
1261
+ },
1262
+ {
1263
+ label: "$-1",
1264
+ value: "$-1"
1265
+ },
1266
+ {
1267
+ label: "$1-",
1268
+ value: "$1-"
1269
+ },
1270
+ {
1271
+ label: "1-$",
1272
+ value: "1-$"
1273
+ },
1274
+ {
1275
+ label: "1$-",
1276
+ value: "1$-"
1277
+ },
1278
+ {
1279
+ label: "($1)",
1280
+ value: "($1)"
1281
+ },
1282
+ {
1283
+ label: "(1$)",
1284
+ value: "(1$)"
1285
+ },
1286
1286
  ],
1287
1287
  negativeNumberFormats: [{
1288
- label: "-1",
1289
- value: "-1"
1290
- },
1291
- {
1292
- label: "- 1",
1293
- value: "- 1"
1294
- },
1295
- {
1296
- label: "1-",
1297
- value: "1-"
1298
- },
1299
- {
1300
- label: "1 -",
1301
- value: "1 -"
1302
- },
1303
- {
1304
- label: "(1)",
1305
- value: "(1)"
1306
- },
1288
+ label: "-1",
1289
+ value: "-1"
1290
+ },
1291
+ {
1292
+ label: "- 1",
1293
+ value: "- 1"
1294
+ },
1295
+ {
1296
+ label: "1-",
1297
+ value: "1-"
1298
+ },
1299
+ {
1300
+ label: "1 -",
1301
+ value: "1 -"
1302
+ },
1303
+ {
1304
+ label: "(1)",
1305
+ value: "(1)"
1306
+ },
1307
1307
  ],
1308
1308
  isPercent: [{
1309
- label: "true_value",
1310
- value: true
1311
- },
1312
- {
1313
- label: "false_value",
1314
- value: false
1315
- },
1309
+ label: "true_value",
1310
+ value: true
1311
+ },
1312
+ {
1313
+ label: "false_value",
1314
+ value: false
1315
+ },
1316
1316
  ]
1317
1317
  }
1318
- FlexmonsterToolbar.prototype.ConfirmationPopUp = function () {}
1318
+ FlexmonsterToolbar.prototype.ConfirmationPopUp = function () { }
1319
1319
  FlexmonsterToolbar.prototype.showFormatCellsDialog = function (measureName, measureAggregation) {
1320
1320
  var self = this;
1321
1321
  var Labels = this.Labels;
@@ -1411,16 +1411,16 @@ FlexmonsterToolbar.prototype.showFormatCellsDialog = function (measureName, meas
1411
1411
  ConfirmationPopUp.prototype.initializePopUp = function () {
1412
1412
  this.dialog.setTitle(Labels.confirm_title);
1413
1413
  confirmPopUp.dialog.setToolbar([{
1414
- id: "fm-btn-apply",
1415
- label: Labels.ok,
1416
- handler: switchToMeasure,
1417
- isPositive: true
1418
- },
1419
- {
1420
- id: "fm-btn-cancel",
1421
- label: Labels.cancel,
1422
- handler: restoreEditedMeasure
1423
- }
1414
+ id: "fm-btn-apply",
1415
+ label: Labels.ok,
1416
+ handler: switchToMeasure,
1417
+ isPositive: true
1418
+ },
1419
+ {
1420
+ id: "fm-btn-cancel",
1421
+ label: Labels.cancel,
1422
+ handler: restoreEditedMeasure
1423
+ }
1424
1424
  ], false, this.removePopUp);
1425
1425
  var content = document.createElement("div");
1426
1426
  var contentLabel = document.createElement("label");
@@ -1462,8 +1462,8 @@ FlexmonsterToolbar.prototype.showFormatCellsDialog = function (measureName, meas
1462
1462
  var formatObject = {};
1463
1463
  formatObject = filterFormatting(formatObject);
1464
1464
  if ((formatObject.hasOwnProperty("textAlign") || formatObject.hasOwnProperty("thousandsSeparator") || formatObject.hasOwnProperty("decimalSeparator") ||
1465
- formatObject.hasOwnProperty("decimalPlaces") || formatObject.hasOwnProperty("currencySymbol") || formatObject.hasOwnProperty("positiveCurrencyFormat") ||
1466
- formatObject.hasOwnProperty("negativeCurrencyFormat") || formatObject.hasOwnProperty("nullValue") || formatObject.hasOwnProperty("isPercent")) &&
1465
+ formatObject.hasOwnProperty("decimalPlaces") || formatObject.hasOwnProperty("currencySymbol") || formatObject.hasOwnProperty("positiveCurrencyFormat") ||
1466
+ formatObject.hasOwnProperty("negativeCurrencyFormat") || formatObject.hasOwnProperty("nullValue") || formatObject.hasOwnProperty("isPercent")) &&
1467
1467
  (currentMeasureNames && currentMeasureNames.length > 0)) {
1468
1468
  confirmPopUp.createPopUp();
1469
1469
  confirmPopUp.initializePopUp();
@@ -1575,8 +1575,8 @@ FlexmonsterToolbar.prototype.showFormatCellsDialog = function (measureName, meas
1575
1575
  var measure = null;
1576
1576
  for (var i = 0; i < measuresList.length; i++) {
1577
1577
  measure = getMeasureFromUniqueName(measuresList[i]);
1578
- self.pivot.setFormat(formatVO,
1579
- (measure[0] == "" ? null : measure[0]),
1578
+ self.pivot.setFormat(formatVO,
1579
+ (measure[0] == "" ? null : measure[0]),
1580
1580
  (self.singleAggregationFormatting ? undefined : measure[1]));
1581
1581
  }
1582
1582
  // if (valuesDropDown.getValue() === "" && currentReport.hasOwnProperty("formats")) {
@@ -1617,15 +1617,15 @@ FlexmonsterToolbar.prototype.showFormatCellsDialog = function (measureName, meas
1617
1617
  dialog.content.classList.add("fm-popup-format-cells");
1618
1618
  dialog.setTitle(this.osUtils.isMobile ? Labels.format : Labels.format_cells);
1619
1619
  dialog.setToolbar([{
1620
- id: "fm-btn-apply",
1621
- label: Labels.apply,
1622
- handler: applyHandler,
1623
- isPositive: true
1624
- },
1625
- {
1626
- id: "fm-btn-cancel",
1627
- label: Labels.cancel
1628
- }
1620
+ id: "fm-btn-apply",
1621
+ label: Labels.apply,
1622
+ handler: applyHandler,
1623
+ isPositive: true
1624
+ },
1625
+ {
1626
+ id: "fm-btn-cancel",
1627
+ label: Labels.cancel
1628
+ }
1629
1629
  ], true);
1630
1630
 
1631
1631
  var content = document.createElement("div");
@@ -1904,15 +1904,15 @@ FlexmonsterToolbar.prototype.showConditionalFormattingDialog = function (measure
1904
1904
  dialog.content.classList.add("fm-popup-conditional");
1905
1905
  dialog.setTitle(this.osUtils.isMobile ? Labels.conditional : Labels.conditional_formatting);
1906
1906
  dialog.setToolbar([{
1907
- id: "fm-btn-apply",
1908
- label: Labels.apply,
1909
- handler: applyHandler,
1910
- isPositive: true
1911
- },
1912
- {
1913
- id: "fm-btn-cancel",
1914
- label: Labels.cancel
1915
- }
1907
+ id: "fm-btn-apply",
1908
+ label: Labels.apply,
1909
+ handler: applyHandler,
1910
+ isPositive: true
1911
+ },
1912
+ {
1913
+ id: "fm-btn-cancel",
1914
+ label: Labels.cancel
1915
+ }
1916
1916
  ], true);
1917
1917
 
1918
1918
  var addConditionBtn = document.createElement("button");
@@ -1980,37 +1980,37 @@ FlexmonsterToolbar.prototype.showConditionalFormattingDialog = function (measure
1980
1980
  FlexmonsterToolbar.prototype.defaults.fontSizes = ["8px", "9px", "10px", "11px", "12px", "13px", "14px"];
1981
1981
  FlexmonsterToolbar.prototype.defaults.fonts = ['Arial', 'Lucida Sans Unicode', 'Verdana', 'Courier New', 'Palatino Linotype', 'Tahoma', 'Impact', 'Trebuchet MS', 'Georgia', 'Times New Roman'];
1982
1982
  FlexmonsterToolbar.prototype.defaults.conditions = [{
1983
- label: "less_than",
1984
- value: '<'
1985
- },
1986
- {
1987
- label: "less_than_or_equal",
1988
- value: '<='
1989
- },
1990
- {
1991
- label: "greater_than",
1992
- value: '>'
1993
- },
1994
- {
1995
- label: "greater_than_or_equal",
1996
- value: '>='
1997
- },
1998
- {
1999
- label: "equal_to",
2000
- value: '='
2001
- },
2002
- {
2003
- label: "not_equal_to",
2004
- value: '!='
2005
- },
2006
- {
2007
- label: "between",
2008
- value: '><'
2009
- },
2010
- {
2011
- label: "is_empty",
2012
- value: 'isNaN'
2013
- }
1983
+ label: "less_than",
1984
+ value: '<'
1985
+ },
1986
+ {
1987
+ label: "less_than_or_equal",
1988
+ value: '<='
1989
+ },
1990
+ {
1991
+ label: "greater_than",
1992
+ value: '>'
1993
+ },
1994
+ {
1995
+ label: "greater_than_or_equal",
1996
+ value: '>='
1997
+ },
1998
+ {
1999
+ label: "equal_to",
2000
+ value: '='
2001
+ },
2002
+ {
2003
+ label: "not_equal_to",
2004
+ value: '!='
2005
+ },
2006
+ {
2007
+ label: "between",
2008
+ value: '><'
2009
+ },
2010
+ {
2011
+ label: "is_empty",
2012
+ value: 'isNaN'
2013
+ }
2014
2014
  ];
2015
2015
  FlexmonsterToolbar.prototype.createConditionalFormattingItem = function (data, allConditions, isMSAS) {
2016
2016
  var self = this;
@@ -2020,7 +2020,7 @@ FlexmonsterToolbar.prototype.createConditionalFormattingItem = function (data, a
2020
2020
  var MEASURE_UNIQUENAME_DELIMETER = "_@@_@@_@@_";
2021
2021
  //generates uniqueName based on measure's uniqueName and aggregation
2022
2022
  var getMeasureUniqueName = function (uniqueName, aggregation) {
2023
- return _isMSAS || aggregation === "none" || aggregation === "" ? uniqueName : uniqueName + MEASURE_UNIQUENAME_DELIMETER + aggregation;
2023
+ return _isMSAS || aggregation === "none" || aggregation === "" ? uniqueName : uniqueName + MEASURE_UNIQUENAME_DELIMETER + aggregation;
2024
2024
  }
2025
2025
  //generates measure tuple (uniqueName and aggregation) based on getMeasureUniqueName result
2026
2026
  var getMeasureFromUniqueName = function (uniqueName) {
@@ -2048,7 +2048,7 @@ FlexmonsterToolbar.prototype.createConditionalFormattingItem = function (data, a
2048
2048
  value: ""
2049
2049
  }];
2050
2050
  if (selectedMeasure && selectedMeasureAggregation === "" && (currentMeasure && !currentMeasure.calculated) && !isMSAS) {
2051
- var measureItemList = measures.filter(function(item) {
2051
+ var measureItemList = measures.filter(function (item) {
2052
2052
  return item.uniqueName === selectedMeasure;
2053
2053
  });
2054
2054
  var selectedMeasureLabel = measureItemList.length > 0 ? measureItemList[0].name + " (" + Labels.all + ")" : selectedMeasure + " (" + Labels.all + ")";
@@ -2071,8 +2071,8 @@ FlexmonsterToolbar.prototype.createConditionalFormattingItem = function (data, a
2071
2071
  }
2072
2072
  }
2073
2073
  valuesDropDown.setDataProvider(dataProvider);
2074
- valuesDropDown.setValue(selectedMeasure && selectedMeasureAggregation !== undefined
2075
- ? getMeasureUniqueName(selectedMeasure, selectedMeasureAggregation)
2074
+ valuesDropDown.setValue(selectedMeasure && selectedMeasureAggregation !== undefined
2075
+ ? getMeasureUniqueName(selectedMeasure, selectedMeasureAggregation)
2076
2076
  : (selectedMeasure ? selectedMeasure : dataProvider[0].value));
2077
2077
  };
2078
2078
 
@@ -2321,15 +2321,15 @@ FlexmonsterToolbar.prototype.showOptionsDialog = function () {
2321
2321
  dialog.content.classList.add("fm-popup-options");
2322
2322
  dialog.setTitle(this.osUtils.isMobile ? Labels.options : Labels.layout_options);
2323
2323
  dialog.setToolbar([{
2324
- id: "fm-btn-apply",
2325
- label: Labels.apply,
2326
- handler: applyHandler,
2327
- isPositive: true
2328
- },
2329
- {
2330
- id: "fm-btn-cancel",
2331
- label: Labels.cancel
2332
- }
2324
+ id: "fm-btn-apply",
2325
+ label: Labels.apply,
2326
+ handler: applyHandler,
2327
+ isPositive: true
2328
+ },
2329
+ {
2330
+ id: "fm-btn-cancel",
2331
+ label: Labels.cancel
2332
+ }
2333
2333
  ], true);
2334
2334
 
2335
2335
  var content = document.createElement("div");
@@ -2445,15 +2445,15 @@ FlexmonsterToolbar.prototype.showExportPdfDialog = function () {
2445
2445
  var dialog = this.popupManager.createPopup();
2446
2446
  dialog.setTitle(Labels.choose_page_orientation);
2447
2447
  dialog.setToolbar([{
2448
- id: "fm-btn-apply",
2449
- label: Labels.apply,
2450
- handler: applyHandler,
2451
- isPositive: true
2452
- },
2453
- {
2454
- id: "fm-btn-cancel",
2455
- label: Labels.cancel
2456
- }
2448
+ id: "fm-btn-apply",
2449
+ label: Labels.apply,
2450
+ handler: applyHandler,
2451
+ isPositive: true
2452
+ },
2453
+ {
2454
+ id: "fm-btn-cancel",
2455
+ label: Labels.cancel
2456
+ }
2457
2457
  ]);
2458
2458
 
2459
2459
  var content = document.createElement("div");
@@ -2485,39 +2485,21 @@ FlexmonsterToolbar.prototype.isFullscreen = function () {
2485
2485
  FlexmonsterToolbar.prototype.enterFullscreen = function (element) {
2486
2486
  if (element.requestFullscreen || element.webkitRequestFullScreen ||
2487
2487
  element.mozRequestFullScreen || (element.msRequestFullscreen && window == top)) {
2488
- this.containerStyle = {
2489
- width: this.container.style.width,
2490
- height: this.container.style.height,
2491
- position: this.container.style.position,
2492
- top: this.container.style.top,
2493
- bottom: this.container.style.bottom,
2494
- left: this.container.style.left,
2495
- right: this.container.style.right,
2496
- marginTop: this.container.style.marginTop,
2497
- marginLeft: this.container.style.marginLeft,
2498
- zIndex: this.container.style.zIndex
2499
- };
2500
- this.container.style.width = "100%";
2501
- this.container.style.height = "100%";
2502
- this.container.style.position = "fixed";
2503
- this.container.style.top = 0 + "px";
2504
- this.container.style.left = 0 + "px";
2505
- this.container.style.zIndex = 2147483647;
2506
-
2507
- this.toolbarWrapper.style.width = "100%";
2508
- var fullScreenChangeHandler = null;
2509
-
2510
- this._redrawToolbar();
2511
-
2488
+ var _this = this;
2512
2489
  if (element.requestFullscreen) {
2513
- element.requestFullscreen();
2514
- fullScreenChangeHandler = function () {
2515
- if (!this.isFullscreen()) {
2516
- this.exitFullscreen();
2517
- element.removeEventListener("fullscreenchange", fullScreenChangeHandler);
2518
- }
2519
- }.bind(this);
2520
- element.addEventListener("fullscreenchange", fullScreenChangeHandler, false);
2490
+ element.requestFullscreen().then(function () {
2491
+ var fullScreenChangeHandler = function () {
2492
+ if (!_this.isFullscreen()) {
2493
+ _this.exitFullscreen();
2494
+ element.removeEventListener("fullscreenchange", fullScreenChangeHandler);
2495
+ } else {
2496
+ _this.onFullscreenEntered();
2497
+ }
2498
+ }.bind(_this);
2499
+ element.addEventListener("fullscreenchange", fullScreenChangeHandler, false);
2500
+ }).catch(function () {
2501
+ _this.onFullscreenError();
2502
+ });
2521
2503
  } else if (element.webkitRequestFullScreen) {
2522
2504
  var ua = navigator.userAgent;
2523
2505
  if ((ua.indexOf("Safari") > -1) && (ua.indexOf("Chrome") == -1)) {
@@ -2525,28 +2507,34 @@ FlexmonsterToolbar.prototype.enterFullscreen = function (element) {
2525
2507
  } else {
2526
2508
  element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
2527
2509
  }
2528
- fullScreenChangeHandler = function () {
2510
+ var fullScreenChangeHandler = function () {
2529
2511
  if (!this.isFullscreen()) {
2530
2512
  this.exitFullscreen();
2531
2513
  element.removeEventListener("webkitfullscreenchange", fullScreenChangeHandler);
2514
+ } else {
2515
+ this.onFullscreenEntered();
2532
2516
  }
2533
2517
  }.bind(this);
2534
2518
  element.addEventListener("webkitfullscreenchange", fullScreenChangeHandler, false);
2535
2519
  } else if (element.mozRequestFullScreen) {
2536
2520
  element.mozRequestFullScreen();
2537
- fullScreenChangeHandler = function () {
2521
+ var fullScreenChangeHandler = function () {
2538
2522
  if (!this.isFullscreen()) {
2539
2523
  this.exitFullscreen();
2540
2524
  document.removeEventListener("mozfullscreenchange", fullScreenChangeHandler);
2525
+ } else {
2526
+ this.onFullscreenEntered();
2541
2527
  }
2542
2528
  }.bind(this);
2543
2529
  document.addEventListener("mozfullscreenchange", fullScreenChangeHandler, false);
2544
2530
  } else if (element.msRequestFullscreen) { //IE 11
2545
2531
  element.msRequestFullscreen();
2546
- fullScreenChangeHandler = function () {
2532
+ var fullScreenChangeHandler = function () {
2547
2533
  if (!this.isFullscreen()) {
2548
2534
  this.exitFullscreen();
2549
2535
  document.removeEventListener("MSFullscreenChange", fullScreenChangeHandler);
2536
+ } else {
2537
+ this.onFullscreenEntered();
2550
2538
  }
2551
2539
  }.bind(this);
2552
2540
  document.addEventListener("MSFullscreenChange", fullScreenChangeHandler, false);
@@ -2555,6 +2543,36 @@ FlexmonsterToolbar.prototype.enterFullscreen = function (element) {
2555
2543
  alert("Fullscreen mode in IE11 is not supported when Pivot is embedded in IFrame.");
2556
2544
  }
2557
2545
  }
2546
+ FlexmonsterToolbar.prototype.onFullscreenEntered = function () {
2547
+ this.containerStyle = {
2548
+ width: this.container.style.width,
2549
+ height: this.container.style.height,
2550
+ position: this.container.style.position,
2551
+ top: this.container.style.top,
2552
+ bottom: this.container.style.bottom,
2553
+ left: this.container.style.left,
2554
+ right: this.container.style.right,
2555
+ marginTop: this.container.style.marginTop,
2556
+ marginLeft: this.container.style.marginLeft,
2557
+ zIndex: this.container.style.zIndex
2558
+ };
2559
+ this.container.style.width = "100%";
2560
+ this.container.style.height = "100%";
2561
+ this.container.style.position = "fixed";
2562
+ this.container.style.top = 0 + "px";
2563
+ this.container.style.left = 0 + "px";
2564
+ this.container.style.zIndex = 2147483647;
2565
+
2566
+ this.toolbarWrapper.style.width = "100%";
2567
+
2568
+ this._redrawToolbar();
2569
+ }
2570
+ FlexmonsterToolbar.prototype.onFullscreenError = function () {
2571
+ this.pivot.alert({
2572
+ title: this.Labels.fullscreenErrorTitle,
2573
+ message: this.Labels.fullscreenErrorMessage,
2574
+ });
2575
+ }
2558
2576
  FlexmonsterToolbar.prototype.exitFullscreen = function () {
2559
2577
  this.container.style.width = this.containerStyle.width;
2560
2578
  this.container.style.height = this.containerStyle.height;
@@ -2629,7 +2647,7 @@ FlexmonsterToolbar.prototype.makeSelectableByKeyboard = function (element) {
2629
2647
  if (document.activeElement !== element) {
2630
2648
  return;
2631
2649
  }
2632
- if (e.which == 13 /*enter*/ || e.which == 32 /*space*/ ) {
2650
+ if (e.which == 13 /*enter*/ || e.which == 32 /*space*/) {
2633
2651
  element.click();
2634
2652
  var el = element.querySelector("input");
2635
2653
  if (el) {
@@ -3166,7 +3184,7 @@ FlexmonsterToolbar.prototype.createTabMenu = function (dataProvider, parentTab)
3166
3184
  setActiveItemAt(e.keyCode == 40 ? _activeItemIndex + 1 : _activeItemIndex - 1);
3167
3185
  e.preventDefault();
3168
3186
  }
3169
- if (e.keyCode == 13 /*enter*/ || e.keyCode == 32 /*space*/ ) {
3187
+ if (e.keyCode == 13 /*enter*/ || e.keyCode == 32 /*space*/) {
3170
3188
  if (_isOpen) {
3171
3189
  if (_activeItemIndex >= 0) {
3172
3190
  var data = dataProvider[_activeItemIndex];
@@ -3181,7 +3199,7 @@ FlexmonsterToolbar.prototype.createTabMenu = function (dataProvider, parentTab)
3181
3199
  e.preventDefault();
3182
3200
  }
3183
3201
  }
3184
- if (_isOpen && e.keyCode == 27 /*esc*/ ) {
3202
+ if (_isOpen && e.keyCode == 27 /*esc*/) {
3185
3203
  hide();
3186
3204
  e.stopImmediatePropagation();
3187
3205
  }
@@ -3206,7 +3224,7 @@ FlexmonsterToolbar.prototype.createTabMenu = function (dataProvider, parentTab)
3206
3224
  var rightScrollArrow = _this.container.querySelector(".fm-right-scroll-button");
3207
3225
  var arrowWidth = (leftScrollArrow ? leftScrollArrow.offsetWidth : 0) + (rightScrollArrow ? rightScrollArrow.offsetWidth : 0);
3208
3226
 
3209
- if ((menuRect.left > parentRect.right - arrowWidth || menuRect.left < parentRect.left + arrowWidth)
3227
+ if ((menuRect.left > parentRect.right - arrowWidth || menuRect.left < parentRect.left + arrowWidth)
3210
3228
  && parentRect.right + menuRect.width < toolbarRect.right && _this.toolbar.scrollLeft > 0) {// this case handles left positioning with scroll
3211
3229
  menuContainer.style.left = 0;
3212
3230
  menuRect = menuContainer.getBoundingClientRect();
@@ -3214,11 +3232,11 @@ FlexmonsterToolbar.prototype.createTabMenu = function (dataProvider, parentTab)
3214
3232
  var luft = Math.round(parentRect.right - menuRect.left - parentRect.width * 0.6);
3215
3233
  menuContainer.style.left = luft + "px";
3216
3234
  menuList.classList.add("fm-dropdown-scrollable-left");
3217
- } else if (menuRect.right > toolbarRect.right - arrowWidth
3235
+ } else if (menuRect.right > toolbarRect.right - arrowWidth
3218
3236
  && parentRect.left + parentRect.width / 2 - menuRect.width > 0) {//this case handles right positioning
3219
3237
  menuContainer.style.right = 0;
3220
3238
  menuRect = menuContainer.getBoundingClientRect();
3221
-
3239
+
3222
3240
  var luft = Math.round(menuRect.right - parentRect.left - parentRect.width * 0.6);
3223
3241
  menuContainer.style.right = luft + "px";
3224
3242
  menuList.classList.add("fm-dropdown-scrollable-right");