@progress/telerik-jquery-report-viewer 25.25.313 → 26.25.716

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 (103) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/accessibility.js +22 -64
  3. package/dist/cjs/aiPrompt.js +315 -0
  4. package/dist/cjs/base-component.js +8 -11
  5. package/dist/cjs/binder.js +12 -12
  6. package/dist/cjs/command.js +44 -25
  7. package/dist/cjs/commandSet.js +78 -53
  8. package/dist/cjs/components/button.js +41 -0
  9. package/dist/cjs/components/toggle-button.js +47 -0
  10. package/dist/cjs/constants.js +22 -0
  11. package/dist/cjs/documentMapArea.js +114 -93
  12. package/dist/cjs/event-emitter.js +2 -8
  13. package/dist/cjs/history.js +13 -12
  14. package/dist/cjs/index.js +4 -12
  15. package/dist/cjs/mainMenu.js +38 -28
  16. package/dist/cjs/mem-storage.js +7 -13
  17. package/dist/cjs/notificationService.js +128 -0
  18. package/dist/cjs/parameterValidators.js +26 -25
  19. package/dist/cjs/parameters.js +180 -161
  20. package/dist/cjs/parametersArea.js +309 -298
  21. package/dist/cjs/perspectives.js +23 -27
  22. package/dist/cjs/report-viewer/report-viewer-settings.js +4 -10
  23. package/dist/cjs/reportViewer.js +441 -190
  24. package/dist/cjs/search.js +218 -328
  25. package/dist/cjs/sendEmail.js +262 -267
  26. package/dist/cjs/service-client-sentinel.js +1 -1
  27. package/dist/cjs/sideMenu.js +20 -16
  28. package/dist/cjs/sr.js +11 -5
  29. package/dist/cjs/template-cache.js +2 -2
  30. package/dist/cjs/toolbar/button.js +18 -0
  31. package/dist/cjs/toolbar/link-button.js +6 -12
  32. package/dist/cjs/toolbar/page-count-label.js +1 -1
  33. package/dist/cjs/toolbar/page-number-input.js +16 -14
  34. package/dist/cjs/toolbar.js +203 -0
  35. package/dist/cjs/touch.js +8 -8
  36. package/dist/cjs/uiController.js +70 -57
  37. package/dist/cjs/utils.js +20 -207
  38. package/dist/font/font-icons.css +25 -222
  39. package/dist/font/font-icons.min.css +3 -3
  40. package/dist/js/telerikReportViewer.js +8196 -9110
  41. package/dist/js/telerikReportViewer.kendo.js +105616 -60642
  42. package/dist/js/telerikReportViewer.kendo.min.js +2 -2
  43. package/dist/js/telerikReportViewer.min.js +1 -1
  44. package/dist/js/telerikReportViewer.stringResources.js +11 -5
  45. package/dist/styles/telerikReportViewer.css +3 -3
  46. package/dist/styles/telerikReportViewer.min.css +3 -3
  47. package/dist/templates/telerikReportViewerTemplate.html +299 -238
  48. package/package.json +2 -3
  49. package/dist/cjs/controller.js +0 -1226
  50. package/dist/cjs/kendo-jquery.js +0 -4
  51. package/dist/cjs/pagesArea.js +0 -625
  52. package/dist/cjs/print.js +0 -165
  53. package/dist/cjs/scroll.js +0 -535
  54. package/dist/cjs/serviceClient.js +0 -311
  55. package/dist/cjs/telerikReportViewer.kendo.js +0 -60196
  56. package/dist/cjs/telerikReportViewer.kendo.min.js +0 -19776
  57. package/dist/cjs/uiFreezeCoordinator.js +0 -282
  58. package/dist/es/accessibility.js +0 -204
  59. package/dist/es/base-component.js +0 -22
  60. package/dist/es/binder.js +0 -75
  61. package/dist/es/command.js +0 -28
  62. package/dist/es/commandSet.js +0 -163
  63. package/dist/es/controller.js +0 -1222
  64. package/dist/es/documentMapArea.js +0 -161
  65. package/dist/es/domUtils.js +0 -43
  66. package/dist/es/enums.js +0 -41
  67. package/dist/es/event-emitter.js +0 -127
  68. package/dist/es/events.js +0 -20
  69. package/dist/es/globalSettings.js +0 -5
  70. package/dist/es/history.js +0 -131
  71. package/dist/es/index.js +0 -25
  72. package/dist/es/jqueryThrottleDebounce.js +0 -46
  73. package/dist/es/kendo-jquery.js +0 -1
  74. package/dist/es/mainMenu.js +0 -319
  75. package/dist/es/mem-storage.js +0 -40
  76. package/dist/es/pagesArea.js +0 -621
  77. package/dist/es/parameterValidators.js +0 -160
  78. package/dist/es/parameters.js +0 -916
  79. package/dist/es/parametersArea.js +0 -493
  80. package/dist/es/perspectives.js +0 -134
  81. package/dist/es/print.js +0 -161
  82. package/dist/es/report-viewer/report-viewer-settings.js +0 -134
  83. package/dist/es/reportViewer.js +0 -666
  84. package/dist/es/scroll.js +0 -531
  85. package/dist/es/search.js +0 -580
  86. package/dist/es/sendEmail.js +0 -388
  87. package/dist/es/service-client-sentinel.js +0 -49
  88. package/dist/es/serviceClient.js +0 -307
  89. package/dist/es/sideMenu.js +0 -212
  90. package/dist/es/sr.js +0 -164
  91. package/dist/es/stringResources.js +0 -7
  92. package/dist/es/telerikReportViewer.kendo.js +0 -60194
  93. package/dist/es/telerikReportViewer.kendo.min.js +0 -19774
  94. package/dist/es/template-cache.js +0 -35
  95. package/dist/es/toolbar/link-button.js +0 -38
  96. package/dist/es/toolbar/page-count-label.js +0 -14
  97. package/dist/es/toolbar/page-number-input.js +0 -60
  98. package/dist/es/touch.js +0 -82
  99. package/dist/es/uiController.js +0 -138
  100. package/dist/es/uiFreezeCoordinator.js +0 -278
  101. package/dist/es/utils.js +0 -444
  102. package/dist/templates/telerikReportViewerTemplate-FA.html +0 -317
  103. /package/dist/font/{ReportingIcons-19.0.25.313.ttf → ReportingIcons-19.1.25.716.ttf} +0 -0
@@ -2,6 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('@progress/telerik-common-report-viewer');
5
6
  var stringResources = require('./stringResources.js');
6
7
  var binder = require('./binder.js');
7
8
  var command = require('./command.js');
@@ -12,8 +13,10 @@ function replaceStringResources($sendEmailDialog) {
12
13
  return;
13
14
  }
14
15
  var labels = $sendEmailDialog.find(".trv-replace-string");
15
- var ariaLabel = $sendEmailDialog.find("[aria-label]");
16
+ var ariaLabel = $sendEmailDialog.find("[aria-label]").add($sendEmailDialog);
16
17
  var titles = $sendEmailDialog.find("[title]");
18
+ var requiredMsg = $sendEmailDialog.find("[data-required-msg]");
19
+ var emailMsg = $sendEmailDialog.find("[data-email-msg]");
17
20
  if (labels.length) {
18
21
  Array.from(labels).forEach((element) => {
19
22
  replaceText($(element));
@@ -29,6 +32,16 @@ function replaceStringResources($sendEmailDialog) {
29
32
  replaceAttribute($(element), "title");
30
33
  });
31
34
  }
35
+ if (requiredMsg.length) {
36
+ Array.from(requiredMsg).forEach((element) => {
37
+ replaceAttribute($(element), "data-required-msg");
38
+ });
39
+ }
40
+ if (emailMsg.length) {
41
+ Array.from(emailMsg).forEach((element) => {
42
+ replaceAttribute($(element), "data-email-msg");
43
+ });
44
+ }
32
45
  }
33
46
  function replaceText($el) {
34
47
  if ($el) {
@@ -40,220 +53,215 @@ function replaceAttribute($el, attribute) {
40
53
  $el.attr(attribute, stringResources.stringResources[$el.attr(attribute)]);
41
54
  }
42
55
  }
43
- function SendEmail(placeholder, options, viewerOptions) {
44
- options = $.extend({}, defaultOptions, options);
45
- var controller = options.controller;
46
- var initialized = false;
47
- var dialogVisible = false;
48
- var $placeholder;
49
- var kendoSendEmailDialog;
50
- var selector = viewerOptions.viewerSelector;
51
- var inputFrom;
52
- var inputTo;
53
- var inputCC;
54
- var inputSubject;
55
- var docFormat;
56
- var docFormatEl;
57
- var bodyEditorEl;
58
- var bodyEditor;
59
- var docFormatList;
60
- var optionsCommandSet;
61
- var windowLocation;
62
- var reportViewerWrapper = $("[data-selector='" + selector + "']").find(".trv-report-viewer");
63
- if (!controller) {
64
- throw "No controller (telerikReporting.ReportViewerController) has been specified.";
65
- }
66
- if (!viewerOptions.sendEmail || !viewerOptions.sendEmail.enabled) {
67
- var toolbarSendEmailItem = $("[data-selector='" + selector + "']").find("a[data-command='telerik_ReportViewer_toggleSendEmailDialog']").closest(".k-item ");
68
- toolbarSendEmailItem.hide();
69
- return;
70
- }
71
- controller.beginLoadReport(closeAndClear).viewModeChanged(closeAndClear);
72
- controller.getSendEmailDialogState(function(event, args) {
73
- args.visible = dialogVisible;
74
- }).setSendEmailDialogVisible(function(event, args) {
75
- toggle(args.visible);
76
- }).setSearchDialogVisible(function(event, args) {
77
- if (args.visible && dialogVisible) {
78
- toggle(!dialogVisible);
56
+ class SendEmail {
57
+ // #region fields
58
+ // #endregion
59
+ // #region constructor
60
+ constructor(element, options, viewerOptions) {
61
+ this.options = $.extend({}, defaultOptions, options);
62
+ this.viewerOptions = viewerOptions;
63
+ this.element = element;
64
+ this.$element = $(element);
65
+ this.viewerElement = $(`[data-selector='${this.viewerOptions.viewerSelector}']`);
66
+ this.viewer = this.viewerElement.data("telerik_ReportViewer");
67
+ this.controller = this.options.controller;
68
+ this.notificationService = options.notificationService;
69
+ this.initialized = false;
70
+ this.dialogVisible = false;
71
+ this.kendoSendEmailDialog;
72
+ this.inputFrom;
73
+ this.inputTo;
74
+ this.inputCC;
75
+ this.inputSubject;
76
+ this.docFormat;
77
+ this.docFormatEl;
78
+ this.bodyEditorEl;
79
+ this.bodyEditor;
80
+ this.docFormatList;
81
+ this.optionsCommandSet;
82
+ this.windowLocation;
83
+ if (!this.controller) {
84
+ throw "No controller (telerikReporting.ReportViewerController) has been specified.";
79
85
  }
80
- });
81
- controller.getDocumentFormats().then(function(formats) {
82
- docFormatList = formats;
83
- });
84
- function closeAndClear() {
85
- toggle(false);
86
- }
87
- function toggle(show) {
88
- dialogVisible = show;
89
- if (show) {
90
- ensureInitialized();
91
- setDefaultValues(viewerOptions.sendEmail);
92
- kendoSendEmailDialog.open();
93
- } else {
94
- if (kendoSendEmailDialog && kendoSendEmailDialog.options.visible) {
95
- kendoSendEmailDialog.close();
96
- }
86
+ if (!this.notificationService) {
87
+ throw "No notificationService (telerikReporting.NotificationService) has been specified.";
88
+ }
89
+ if (!this.viewerOptions.sendEmail || !this.viewerOptions.sendEmail.enabled) {
90
+ this.viewerElement.find("[data-command='toggleSendEmailDialog']").addClass("send-email-hidden");
91
+ return;
97
92
  }
93
+ this.init();
98
94
  }
99
- function getBody() {
100
- return bodyEditor ? bodyEditor.value() : "";
95
+ // #endregion
96
+ // #region methods
97
+ init() {
98
+ if (this.initialized) {
99
+ return;
100
+ }
101
+ replaceStringResources(this.$element);
102
+ this.controller.getDocumentFormats().then((formats) => {
103
+ this.docFormatList = formats;
104
+ this.docFormat?.setDataSource(this.docFormatList);
105
+ if (this.viewerOptions?.sendEmail && this.viewerOptions?.sendEmail.format) {
106
+ this.docFormat?.value(this.viewerOptions.sendEmail.format);
107
+ this.docFormat?.trigger("change");
108
+ }
109
+ });
110
+ this._initDialog();
111
+ this._initInputFields();
112
+ this._attachCommands();
113
+ this._attachEvents();
114
+ this.initialized = true;
101
115
  }
102
- function ensureInitialized() {
103
- if (!initialized) {
104
- $placeholder = $(placeholder);
105
- inputFrom = $placeholder.find("[name='from']");
106
- inputTo = $placeholder.find("[name='to']");
107
- inputCC = $placeholder.find("[name='cc']");
108
- inputSubject = $placeholder.find("[name='subject']");
109
- docFormatEl = $placeholder.find("[name='format']");
110
- bodyEditorEl = $placeholder.find("textarea");
111
- setAttrs();
112
- initCommands();
113
- replaceStringResources($placeholder);
114
- try {
115
- kendoSendEmailDialog = reportViewerWrapper.find(".trv-send-email-window").kendoWindow({
116
- title: stringResources.stringResources.sendEmailDialogTitle,
117
- minWidth: 350,
118
- minHeight: 350,
119
- maxHeight: 900,
120
- modal: true,
121
- close: function() {
122
- storeDialogPosition();
123
- clearValidation();
124
- },
125
- open: function() {
126
- adjustDialogSize();
127
- adjustDialogPosition();
128
- },
129
- deactivate: function() {
130
- controller.setSendEmailDialogVisible({
131
- visible: false
132
- });
133
- },
134
- activate: function() {
135
- kendoSendEmailDialog.wrapper.find(".trv-send-email-fields input[type='email']:visible").first().focus();
136
- setTimeout(function() {
137
- setValidation();
138
- }, 250);
139
- }
140
- }).data("kendoWindow");
141
- } catch (error) {
142
- console.error("Instantiation of Kendo Window for Send Email dialog threw an exception", error);
143
- throw error;
116
+ _attachEvents() {
117
+ this.controller.on("beginLoadReport", this.close.bind(this)).on("viewModeChanged", this.close.bind(this));
118
+ this.notificationService.getSendEmailDialogState((event, args) => {
119
+ args.visible = this.dialogVisible;
120
+ }).setSendEmailDialogVisible((event, args) => {
121
+ if (args.visible === true) {
122
+ this.open();
123
+ } else {
124
+ this.close();
144
125
  }
145
- kendoSendEmailDialog.wrapper.addClass("trv-send-email");
146
- try {
147
- docFormat = docFormatEl.kendoComboBox({
148
- dataTextField: "localizedName",
149
- dataValueField: "name",
150
- dataSource: docFormatList || [],
151
- filter: "startswith",
152
- dataBound: function() {
153
- this.select(0);
154
- this.trigger("change");
155
- }
156
- }).data("kendoComboBox");
157
- } catch (error) {
158
- console.error("Instantiation of Kendo ComboBox as document format selector threw an exception", error);
159
- throw error;
126
+ }).setSearchDialogVisible((event, args) => {
127
+ if (args.visible && this.dialogVisible) {
128
+ this.close();
160
129
  }
161
- $placeholder.on("keydown", '[name="format_input"]', function(event) {
162
- var tabkey = 9;
163
- if (event.keyCode === tabkey && bodyEditor) {
164
- setTimeout(function() {
165
- bodyEditor.focus();
166
- });
167
- }
168
- });
169
- try {
170
- bodyEditor = bodyEditorEl.kendoEditor({
171
- tools: [
172
- "bold",
173
- "italic",
174
- "underline",
175
- "strikethrough",
176
- "justifyLeft",
177
- "justifyCenter",
178
- "justifyRight",
179
- "justifyFull",
180
- "insertUnorderedList",
181
- "insertOrderedList",
182
- "indent",
183
- "outdent",
184
- "createLink",
185
- "unlink",
186
- "cleanFormatting",
187
- "formatting",
188
- "fontName",
189
- "fontSize",
190
- "foreColor",
191
- "backColor",
192
- "subscript",
193
- "superscript"
194
- ]
195
- }).data("kendoEditor");
196
- } catch (error) {
197
- console.error("Instantiation of Kendo Editor for Email body editor threw an exception", error);
198
- throw error;
130
+ });
131
+ $(window).on("resize", () => {
132
+ if (this.kendoSendEmailDialog && this.kendoSendEmailDialog.options.visible) {
133
+ this.storeDialogPosition();
134
+ this.adjustDialogPosition();
199
135
  }
200
- setDefaultValues(viewerOptions.sendEmail);
201
- initialized = true;
202
- }
136
+ });
203
137
  }
204
- $(window).resize(function() {
205
- if (kendoSendEmailDialog && kendoSendEmailDialog.options.visible) {
206
- storeDialogPosition();
207
- adjustDialogSize();
208
- adjustDialogPosition();
138
+ open() {
139
+ this.dialogVisible = true;
140
+ this.kendoSendEmailDialog.open();
141
+ }
142
+ close() {
143
+ this.dialogVisible = false;
144
+ if (this.kendoSendEmailDialog && this.kendoSendEmailDialog.options.visible) {
145
+ this.kendoSendEmailDialog.close();
209
146
  }
210
- });
211
- function setAttrs() {
212
- $placeholder.find(".trv-send-email-field input").each(function() {
213
- var el = $(this);
214
- var attrName = el.attr("name");
215
- el.attr("id", selector + "-" + attrName);
216
- });
217
- $placeholder.find(".trv-send-email-label label").each(function() {
218
- var el = $(this);
219
- var attrName = el.attr("for");
220
- el.attr("for", selector + "-" + attrName);
147
+ }
148
+ getBody() {
149
+ return this.bodyEditor ? this.bodyEditor.value() : "";
150
+ }
151
+ _initDialog() {
152
+ this.kendoSendEmailDialog = new kendo.ui.Window(this.element, {
153
+ title: stringResources.stringResources.sendEmailDialogTitle,
154
+ visible: false,
155
+ width: 800,
156
+ minWidth: 350,
157
+ minHeight: 350,
158
+ modal: true,
159
+ close: () => {
160
+ this.storeDialogPosition();
161
+ this.kendoValidator.reset();
162
+ },
163
+ open: () => {
164
+ this.adjustDialogPosition();
165
+ },
166
+ deactivate: () => {
167
+ this.notificationService.setSendEmailDialogVisible({
168
+ visible: false
169
+ });
170
+ },
171
+ activate: () => {
172
+ this.inputFrom.focus();
173
+ setTimeout(() => {
174
+ this.setValidation();
175
+ }, 250);
176
+ }
221
177
  });
178
+ this.kendoSendEmailDialog.element.removeClass("trv-send-email-dialog k-hidden");
179
+ this.kendoSendEmailDialog.wrapper.addClass("trv-send-email-dialog");
222
180
  }
223
- function storeDialogPosition() {
224
- var kendoWindow = kendoSendEmailDialog.element.parent(".k-window");
225
- windowLocation = kendoWindow.offset();
181
+ _initInputFields() {
182
+ const prefix = this.viewerOptions.viewerSelector;
183
+ this.setAttrs();
184
+ this.inputFrom = new kendo.ui.TextBox(this.element.querySelector(`[name="${prefix}-from"]`), {});
185
+ this.inputTo = new kendo.ui.TextBox(this.element.querySelector(`[name="${prefix}-to"]`), {});
186
+ this.inputCC = new kendo.ui.TextBox(this.element.querySelector(`[name="${prefix}-cc"]`), {});
187
+ this.inputSubject = new kendo.ui.TextBox(this.element.querySelector(`[name="${prefix}-subject"]`), {});
188
+ this.docFormat = new kendo.ui.ComboBox(this.element.querySelector(`[name="${prefix}-format"]`), {
189
+ dataTextField: "localizedName",
190
+ dataValueField: "name",
191
+ dataSource: this.docFormatList || [],
192
+ filter: "startswith",
193
+ dataBound: (event) => {
194
+ event.sender.select(0);
195
+ event.sender.trigger("change");
196
+ }
197
+ });
198
+ this.bodyEditor = new kendo.ui.Editor(this.element.querySelector(`[name="${prefix}-emailBody"]`), {
199
+ tools: [
200
+ "bold",
201
+ "italic",
202
+ "underline",
203
+ "strikethrough",
204
+ "justifyLeft",
205
+ "justifyCenter",
206
+ "justifyRight",
207
+ "justifyFull",
208
+ "insertUnorderedList",
209
+ "insertOrderedList",
210
+ "indent",
211
+ "outdent",
212
+ "createLink",
213
+ "unlink",
214
+ "cleanFormatting",
215
+ "formatting",
216
+ "fontName",
217
+ "fontSize",
218
+ "foreColor",
219
+ "backColor",
220
+ "subscript",
221
+ "superscript"
222
+ ]
223
+ });
224
+ this.setDefaultValues(this.viewerOptions.sendEmail);
225
+ this.kendoValidator = new kendo.ui.Validator(this.element.querySelector(".trv-send-email-fields"), {});
226
226
  }
227
- function adjustDialogSize() {
228
- var kendoWindow = kendoSendEmailDialog.element.parent(".k-window");
229
- var windowWidth = $(window).width();
230
- var kendoWindowWidth = 350;
231
- if (windowWidth > 800) {
232
- kendoWindowWidth = 720;
233
- }
234
- kendoWindow.css({ width: kendoWindowWidth });
235
- kendoSendEmailDialog.refresh({
236
- width: kendoWindowWidth
227
+ setAttrs() {
228
+ const prefix = this.viewerOptions.viewerSelector;
229
+ Array.from(this.element.querySelectorAll(".trv-send-email-field input, .trv-send-email-field textarea")).forEach((element) => {
230
+ var attrName = element.getAttribute("name");
231
+ if (attrName === null) {
232
+ return;
233
+ }
234
+ element.setAttribute("id", `${prefix}-${attrName}`);
235
+ element.setAttribute("name", `${prefix}-${attrName}`);
237
236
  });
237
+ Array.from(this.element.querySelectorAll(".trv-send-email-label label")).forEach((element) => {
238
+ var attrFor = element.getAttribute("for");
239
+ if (attrFor === null) {
240
+ return;
241
+ }
242
+ element.setAttribute("for", `${prefix}-${attrFor}`);
243
+ });
244
+ }
245
+ storeDialogPosition() {
246
+ var kendoWindow = this.kendoSendEmailDialog.element.parent(".k-window");
247
+ this.windowLocation = kendoWindow.offset();
238
248
  }
239
- function adjustDialogPosition() {
240
- if (!windowLocation) {
241
- kendoSendEmailDialog.center();
249
+ adjustDialogPosition() {
250
+ var windowWidth = $(window).innerWidth();
251
+ var windowHeight = $(window).innerHeight();
252
+ var width = this.kendoSendEmailDialog.wrapper.outerWidth(true);
253
+ var height = this.kendoSendEmailDialog.wrapper.outerHeight(true);
254
+ var padding = 10;
255
+ if (!this.windowLocation) {
256
+ this.kendoSendEmailDialog.center();
242
257
  } else {
243
- var padding = 10;
244
- var windowWidth = $(window).innerWidth();
245
- var windowHeight = $(window).innerHeight();
246
- var kendoWindow = kendoSendEmailDialog.wrapper;
247
- var width = kendoWindow.outerWidth(true);
248
- var height = kendoWindow.outerHeight(true);
249
- var left = windowLocation.left;
250
- var top = windowLocation.top;
258
+ var left = this.windowLocation.left;
259
+ var top = this.windowLocation.top;
251
260
  var right = left + width;
252
261
  var bottom = top + height;
253
262
  if (right > windowWidth - padding) {
254
263
  left = Math.max(padding, windowWidth - width - padding);
255
- kendoWindow.css({ left });
256
- kendoSendEmailDialog.setOptions({
264
+ this.kendoSendEmailDialog.setOptions({
257
265
  position: {
258
266
  left
259
267
  }
@@ -261,8 +269,7 @@ function SendEmail(placeholder, options, viewerOptions) {
261
269
  }
262
270
  if (bottom > windowHeight - padding) {
263
271
  top = Math.max(padding, windowHeight - height - padding);
264
- kendoWindow.css({ top });
265
- kendoSendEmailDialog.setOptions({
272
+ this.kendoSendEmailDialog.setOptions({
266
273
  position: {
267
274
  top
268
275
  }
@@ -270,123 +277,111 @@ function SendEmail(placeholder, options, viewerOptions) {
270
277
  }
271
278
  }
272
279
  }
273
- function initCommands() {
274
- optionsCommandSet = {
275
- "sendEmail_Cancel": new command.Command(function() {
276
- closeWindow();
280
+ _attachCommands() {
281
+ this.optionsCommandSet = {
282
+ "sendEmail_Cancel": new command.Command(() => {
283
+ this.close();
277
284
  }),
278
- "sendEmail_Send": new command.Command(function() {
279
- sendingEmail();
285
+ "sendEmail_Send": new command.Command(() => {
286
+ this.sendingEmail();
280
287
  })
281
288
  };
282
- binder.Binder.attachCommands($placeholder.find(".trv-send-email-actions"), optionsCommandSet, viewerOptions);
289
+ binder.Binder.attachCommands(this.$element.find(".trv-send-email-actions"), this.optionsCommandSet, this.viewerOptions);
283
290
  }
284
- function sendingEmail(cmd, args) {
291
+ sendingEmail(cmd, args) {
285
292
  var sendEmailArgs = {
286
- from: inputFrom.val(),
287
- to: inputTo.val(),
288
- cc: inputCC.val(),
289
- subject: inputSubject.val(),
290
- format: docFormat.value(),
291
- body: getBody(),
293
+ from: this.inputFrom.value(),
294
+ to: this.inputTo.value(),
295
+ cc: this.inputCC.value(),
296
+ subject: this.inputSubject.value(),
297
+ format: this.docFormat.value(),
298
+ body: this.getBody(),
292
299
  deviceInfo: {}
293
300
  };
294
- if (validateFields()) {
295
- controller.sendReport(sendEmailArgs);
296
- closeWindow();
301
+ if (this.validateFields()) {
302
+ this.controller.sendReport(sendEmailArgs);
303
+ this.close();
297
304
  }
298
305
  }
299
- function setValidation() {
300
- inputFrom.off("blur").on("blur", function(event) {
301
- if (!isEmpty($(this))) {
302
- isValidEmail($(this), false);
306
+ setValidation() {
307
+ this.inputFrom.element.off("blur").on("blur", () => {
308
+ if (!this.isEmpty(this.inputFrom)) {
309
+ this.isValidEmail(this.inputFrom, false);
303
310
  }
304
311
  });
305
- inputTo.off("blur").on("blur", function(event) {
306
- if (!isEmpty($(this))) {
307
- isValidEmail($(this), true);
312
+ this.inputTo.element.off("blur").on("blur", () => {
313
+ if (!this.isEmpty(this.inputTo)) {
314
+ this.isValidEmail(this.inputTo, true);
308
315
  }
309
316
  });
310
- inputCC.off("blur").on("blur", function(event) {
311
- if ($(this).val().length) {
312
- isValidEmail($(this), true);
317
+ this.inputCC.element.off("blur").on("blur", () => {
318
+ if (this.inputCC.value().toString().length) {
319
+ this.isValidEmail(this.inputCC, true);
313
320
  } else {
314
- hideError($(this));
321
+ this.hideError(this.inputCC.element);
315
322
  }
316
323
  });
317
324
  }
318
- function validateFields() {
319
- var fromIsValid = isEmpty(inputFrom) || !isValidEmail(inputFrom, false);
320
- var toIsValid = isEmpty(inputTo) || !isValidEmail(inputTo, true);
321
- var ccIsValid = inputCC.val().length && !isValidEmail(inputCC, true);
322
- var hasFormat = docFormat.value().length;
325
+ validateFields() {
326
+ var fromIsValid = !this.isEmpty(this.inputFrom) && this.isValidEmail(this.inputFrom, false);
327
+ var toIsValid = !this.isEmpty(this.inputTo) && this.isValidEmail(this.inputTo, true);
328
+ var ccIsValid = this.isEmpty(this.inputCC) || this.isValidEmail(this.inputCC, true);
329
+ var hasFormat = this.docFormat.value().length > 0;
323
330
  if (!hasFormat) {
324
- showError(docFormatEl, "data-required-msg");
325
- }
326
- if (fromIsValid || toIsValid || ccIsValid || !hasFormat) {
327
- return false;
331
+ this.showError(this.docFormat.element, "data-required-msg");
328
332
  }
329
- return true;
333
+ return fromIsValid && toIsValid && ccIsValid && hasFormat;
330
334
  }
331
- function setDefaultValues(sendEmail) {
332
- inputFrom.val(sendEmail && sendEmail.from || "");
333
- inputTo.val(sendEmail && sendEmail.to || "");
334
- inputCC.val(sendEmail && sendEmail.cc || "");
335
- inputSubject.val(sendEmail && sendEmail.subject || "");
336
- if (sendEmail && sendEmail.format) {
337
- docFormat.value(sendEmail.format);
338
- } else {
339
- docFormat.select(0);
340
- }
341
- docFormat.trigger("change");
342
- bodyEditor.value(sendEmail && sendEmail.body || "");
335
+ /* Sets all default email values except the format as it depends on a request */
336
+ setDefaultValues(sendEmail) {
337
+ this.inputFrom.value(sendEmail && sendEmail.from || "");
338
+ this.inputTo.value(sendEmail && sendEmail.to || "");
339
+ this.inputCC.value(sendEmail && sendEmail.cc || "");
340
+ this.inputSubject.value(sendEmail && sendEmail.subject || "");
341
+ this.bodyEditor.value(sendEmail && sendEmail.body || "");
343
342
  }
344
- function isEmpty($el) {
345
- if (!$el.val().length) {
346
- showError($el, "data-required-msg");
343
+ isEmpty(input) {
344
+ var $el = input.element;
345
+ if (!input.value().length) {
346
+ this.showError($el, "data-required-msg");
347
347
  return true;
348
348
  }
349
- hideError($el);
349
+ this.hideError($el);
350
350
  return false;
351
351
  }
352
- function showError($el, tag) {
352
+ showError($el, tag) {
353
353
  var validationMsg = stringResources.stringResources[$el.attr(tag)];
354
354
  $('[data-for="' + $el.attr("name") + '"]').addClass("-visible").text(validationMsg);
355
355
  }
356
- function hideError($el) {
356
+ hideError($el) {
357
357
  $('[data-for="' + $el.attr("name") + '"]').removeClass("-visible");
358
358
  }
359
- function isValidEmail($el, moreThenOneEmail) {
360
- var inputValue = $el.val();
359
+ isValidEmail(input, moreThenOneEmail) {
360
+ var inputValue = input.value();
361
+ var $el = input.element;
361
362
  if (moreThenOneEmail) {
362
363
  var listEmailsAddress = inputValue.split(/[\s,;]+/);
363
364
  for (var i = 0; i < listEmailsAddress.length; i++) {
364
- if (!_validateEmail(listEmailsAddress[i].trim(), $el)) {
365
+ if (!this._validateEmail(listEmailsAddress[i].trim(), $el)) {
365
366
  return false;
366
367
  }
367
368
  }
368
369
  return true;
369
370
  }
370
- return _validateEmail(inputValue, $el);
371
+ return this._validateEmail(inputValue, $el);
371
372
  }
372
- function _validateEmail(email, $el) {
373
+ _validateEmail(email, $el) {
373
374
  var regexEmail = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
374
375
  if (email.indexOf(",") > -1 || email.indexOf(";") > -1) {
375
- showError($el, "data-single-email-msg");
376
+ this.showError($el, "data-single-email-msg");
376
377
  return false;
377
378
  }
378
379
  if (!regexEmail.test(email)) {
379
- showError($el, "data-email-msg");
380
+ this.showError($el, "data-email-msg");
380
381
  return false;
381
382
  }
382
383
  return true;
383
384
  }
384
- function closeWindow() {
385
- kendoSendEmailDialog.close();
386
- }
387
- function clearValidation() {
388
- $(".k-invalid-msg").removeClass("-visible");
389
- }
390
385
  }
391
386
 
392
387
  exports.SendEmail = SendEmail;
@@ -29,7 +29,7 @@ function ServiceClientSentinel(serviceClient, clientID, sessionTimeoutSeconds) {
29
29
  return;
30
30
  }
31
31
  pingMilliseconds = Math.min(pingMilliseconds, 2147483647);
32
- interval = setInterval(function() {
32
+ interval = setInterval(() => {
33
33
  serviceClient.keepClientAlive(clientID);
34
34
  }, pingMilliseconds);
35
35
  }