@progress/telerik-jquery-report-viewer 21.24.130 → 22.24.514

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 (92) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/accessibility.js +218 -0
  3. package/dist/cjs/binder.js +172 -0
  4. package/dist/cjs/command.js +32 -0
  5. package/dist/cjs/commandSet.js +167 -0
  6. package/dist/cjs/controller.js +1207 -0
  7. package/dist/cjs/documentMapArea.js +168 -0
  8. package/dist/cjs/domUtils.js +50 -0
  9. package/dist/cjs/enums.js +52 -0
  10. package/dist/cjs/event-emitter.js +17 -0
  11. package/dist/cjs/events.js +23 -0
  12. package/dist/cjs/globalSettings.js +9 -0
  13. package/dist/cjs/history.js +131 -0
  14. package/dist/cjs/index.js +58 -0
  15. package/dist/cjs/jqueryThrottleDebounce.js +48 -0
  16. package/dist/cjs/kendo-jquery.js +4 -0
  17. package/dist/cjs/mainMenu.js +332 -0
  18. package/dist/cjs/mem-storage.js +44 -0
  19. package/dist/cjs/pagesArea.js +641 -0
  20. package/dist/cjs/parameterValidators.js +167 -0
  21. package/dist/cjs/parameters.js +921 -0
  22. package/dist/cjs/parametersArea.js +502 -0
  23. package/dist/cjs/perspectives.js +138 -0
  24. package/dist/cjs/print.js +166 -0
  25. package/dist/cjs/report-viewer/report-viewer-settings.js +138 -0
  26. package/dist/cjs/reportViewer.js +654 -0
  27. package/dist/cjs/scroll.js +537 -0
  28. package/dist/cjs/search.js +634 -0
  29. package/dist/cjs/sendEmail.js +435 -0
  30. package/dist/cjs/service-client-sentinel.js +52 -0
  31. package/dist/cjs/serviceClient.js +405 -0
  32. package/dist/cjs/sideMenu.js +225 -0
  33. package/dist/cjs/sr.js +164 -0
  34. package/dist/cjs/stringResources.js +11 -0
  35. package/dist/cjs/telerikReportViewer.kendo.js +60196 -0
  36. package/dist/cjs/telerikReportViewer.kendo.min.js +19776 -0
  37. package/dist/cjs/template-cache.js +39 -0
  38. package/dist/cjs/touch.js +86 -0
  39. package/dist/cjs/uiController.js +142 -0
  40. package/dist/cjs/uiFreezeCoordinator.js +281 -0
  41. package/dist/cjs/utils.js +492 -0
  42. package/dist/es/accessibility.js +214 -0
  43. package/dist/es/binder.js +168 -0
  44. package/dist/es/command.js +28 -0
  45. package/dist/es/commandSet.js +163 -0
  46. package/dist/es/controller.js +1203 -0
  47. package/dist/es/documentMapArea.js +164 -0
  48. package/dist/es/domUtils.js +43 -0
  49. package/dist/es/enums.js +41 -0
  50. package/dist/es/event-emitter.js +13 -0
  51. package/dist/es/events.js +19 -0
  52. package/dist/es/globalSettings.js +5 -0
  53. package/dist/es/history.js +127 -0
  54. package/dist/es/index.js +24 -0
  55. package/dist/es/jqueryThrottleDebounce.js +46 -0
  56. package/dist/es/kendo-jquery.js +1 -0
  57. package/dist/es/mainMenu.js +328 -0
  58. package/dist/es/mem-storage.js +40 -0
  59. package/dist/es/pagesArea.js +637 -0
  60. package/dist/es/parameterValidators.js +163 -0
  61. package/dist/es/parameters.js +916 -0
  62. package/dist/es/parametersArea.js +498 -0
  63. package/dist/es/perspectives.js +134 -0
  64. package/dist/es/print.js +162 -0
  65. package/dist/es/report-viewer/report-viewer-settings.js +134 -0
  66. package/dist/es/reportViewer.js +650 -0
  67. package/dist/es/scroll.js +533 -0
  68. package/dist/es/search.js +630 -0
  69. package/dist/es/sendEmail.js +431 -0
  70. package/dist/es/service-client-sentinel.js +48 -0
  71. package/dist/es/serviceClient.js +401 -0
  72. package/dist/es/sideMenu.js +221 -0
  73. package/dist/es/sr.js +162 -0
  74. package/dist/es/stringResources.js +7 -0
  75. package/dist/es/telerikReportViewer.kendo.js +60194 -0
  76. package/dist/es/telerikReportViewer.kendo.min.js +19774 -0
  77. package/dist/es/template-cache.js +35 -0
  78. package/dist/es/touch.js +82 -0
  79. package/dist/es/uiController.js +138 -0
  80. package/dist/es/uiFreezeCoordinator.js +277 -0
  81. package/dist/es/utils.js +447 -0
  82. package/dist/font/font-icons.css +4 -4
  83. package/dist/font/font-icons.min.css +3 -3
  84. package/dist/js/telerikReportViewer.js +8574 -8249
  85. package/dist/js/telerikReportViewer.min.js +1 -17
  86. package/dist/js/telerikReportViewer.stringResources.js +166 -173
  87. package/dist/styles/telerikReportViewer.css +1 -1
  88. package/dist/styles/telerikReportViewer.min.css +1 -1
  89. package/dist/templates/telerikReportViewerTemplate-FA.html +3 -3
  90. package/dist/templates/telerikReportViewerTemplate.html +3 -3
  91. package/package.json +13 -7
  92. /package/dist/font/{ReportingIcons-18.0.24.130.ttf → ReportingIcons-18.1.24.514.ttf} +0 -0
@@ -0,0 +1,405 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('./utils.js');
6
+
7
+ var JSON_CONTENT_TYPE = "application/json; charset=UTF-8";
8
+ var URLENCODED_CONTENT_TYPE = "application/x-www-form-urlencoded; charset=UTF-8";
9
+ var HTTP_GET = "GET";
10
+ var HTTP_POST = "POST";
11
+ var HTTP_DELETE = "DELETE";
12
+ var defaultOptions = {};
13
+ function ServiceClient(options) {
14
+ options = utils.extend({}, defaultOptions, options);
15
+ var baseUrl = utils.rTrim(options.serviceUrl || options.baseUrl, "\\/");
16
+ var loginPromise;
17
+ var _ajax = utils.$ajax;
18
+ function validateClientID(clientID) {
19
+ if (!clientID)
20
+ throw "Invalid clientID";
21
+ }
22
+ function urlFromTemplate(template, args) {
23
+ args = utils.extend({}, { baseUrl }, args);
24
+ return utils.stringFormat(template, args);
25
+ }
26
+ function getHeaderSettings(authorizationToken) {
27
+ return authorizationToken ? {
28
+ headers: {
29
+ Authorization: "Bearer " + authorizationToken
30
+ }
31
+ } : {};
32
+ }
33
+ function login() {
34
+ if (!loginPromise) {
35
+ var loginInfo = options.loginInfo;
36
+ if (loginInfo && loginInfo.url && (loginInfo.username || loginInfo.password)) {
37
+ loginPromise = _ajax({
38
+ url: loginInfo.url,
39
+ type: HTTP_POST,
40
+ data: {
41
+ grant_type: "password",
42
+ username: loginInfo.username,
43
+ password: loginInfo.password
44
+ },
45
+ dataType: "json",
46
+ contentType: URLENCODED_CONTENT_TYPE
47
+ }).then(function(result) {
48
+ return result.access_token;
49
+ });
50
+ } else {
51
+ loginPromise = Promise.resolve();
52
+ }
53
+ }
54
+ return loginPromise;
55
+ }
56
+ return {
57
+ _urlFromTemplate: urlFromTemplate,
58
+ registerClient: function(settings) {
59
+ return login().then(function(authorizationToken) {
60
+ var ajaxSettings = utils.extend(
61
+ getHeaderSettings(authorizationToken),
62
+ settings,
63
+ {
64
+ type: HTTP_POST,
65
+ url: urlFromTemplate("{baseUrl}/clients"),
66
+ dataType: "json",
67
+ //Used to avoid Chrome caching functionality for simple async requests
68
+ //when the first request is not completed the second request is not send
69
+ //and the same response is used for both of the request. In this case the
70
+ //second client is not registered to the service and the same clientId is used.
71
+ data: JSON.stringify({ timeStamp: Date.now() })
72
+ }
73
+ );
74
+ return _ajax(ajaxSettings);
75
+ }).then(function(clientData) {
76
+ if (clientData.Message) {
77
+ throw clientData.Message;
78
+ }
79
+ return clientData.clientId;
80
+ });
81
+ },
82
+ unregisterClient: function(clientID, settings) {
83
+ validateClientID(clientID);
84
+ return login().then(function(authorizationToken) {
85
+ var ajaxSettings = utils.extend(
86
+ getHeaderSettings(authorizationToken),
87
+ settings,
88
+ {
89
+ type: HTTP_DELETE,
90
+ url: urlFromTemplate("{baseUrl}/clients/{clientID}", { clientID })
91
+ }
92
+ );
93
+ return _ajax(ajaxSettings);
94
+ });
95
+ },
96
+ getParameters: function(clientID, report, parameterValues, settings) {
97
+ validateClientID(clientID);
98
+ return login().then(function(authorizationToken) {
99
+ var ajaxSettings = utils.extend(
100
+ getHeaderSettings(authorizationToken),
101
+ settings,
102
+ {
103
+ type: HTTP_POST,
104
+ url: urlFromTemplate("{baseUrl}/clients/{clientID}/parameters", { clientID }),
105
+ contentType: JSON_CONTENT_TYPE,
106
+ dataType: "json",
107
+ data: JSON.stringify({ report, parameterValues })
108
+ }
109
+ );
110
+ return _ajax(ajaxSettings);
111
+ });
112
+ },
113
+ createReportInstance: function(clientID, report, parameterValues, settings) {
114
+ validateClientID(clientID);
115
+ return login().then(function(authorizationToken) {
116
+ var ajaxSettings = utils.extend(
117
+ getHeaderSettings(authorizationToken),
118
+ settings,
119
+ {
120
+ type: HTTP_POST,
121
+ url: urlFromTemplate("{baseUrl}/clients/{clientID}/instances", { clientID }),
122
+ contentType: JSON_CONTENT_TYPE,
123
+ dataType: "json",
124
+ data: JSON.stringify({ report, parameterValues })
125
+ }
126
+ );
127
+ return _ajax(ajaxSettings);
128
+ }).then(function(instanceData) {
129
+ return instanceData.instanceId;
130
+ });
131
+ },
132
+ deleteReportInstance: function(clientID, instanceID, settings) {
133
+ validateClientID(clientID);
134
+ return login().then(function(authorizationToken) {
135
+ var ajaxSettings = utils.extend(
136
+ getHeaderSettings(authorizationToken),
137
+ settings,
138
+ {
139
+ type: HTTP_DELETE,
140
+ url: urlFromTemplate("{baseUrl}/clients/{clientID}/instances/{instanceID}", { clientID, instanceID })
141
+ }
142
+ );
143
+ return _ajax(ajaxSettings);
144
+ });
145
+ },
146
+ createReportDocument: function(clientID, instanceID, format, deviceInfo, useCache, baseDocumentID, actionID, settings) {
147
+ validateClientID(clientID);
148
+ return login().then(function(authorizationToken) {
149
+ deviceInfo = deviceInfo || {};
150
+ deviceInfo["BasePath"] = baseUrl;
151
+ var ajaxSettings = utils.extend(
152
+ getHeaderSettings(authorizationToken),
153
+ settings,
154
+ {
155
+ type: HTTP_POST,
156
+ url: urlFromTemplate("{baseUrl}/clients/{clientID}/instances/{instanceID}/documents", { clientID, instanceID }),
157
+ contentType: JSON_CONTENT_TYPE,
158
+ dataType: "json",
159
+ data: JSON.stringify(
160
+ {
161
+ format,
162
+ deviceInfo,
163
+ useCache,
164
+ baseDocumentID,
165
+ actionID
166
+ }
167
+ )
168
+ }
169
+ );
170
+ return _ajax(ajaxSettings);
171
+ }).then(function(documentData) {
172
+ return documentData.documentId;
173
+ });
174
+ },
175
+ sendDocument: function(clientID, instanceID, documentID, mailArgs, settings) {
176
+ validateClientID(clientID);
177
+ return login().then(function(authorizationToken) {
178
+ var ajaxSettings = utils.extend(
179
+ getHeaderSettings(authorizationToken),
180
+ settings,
181
+ {
182
+ type: HTTP_POST,
183
+ url: urlFromTemplate(
184
+ "{baseUrl}/clients/{clientID}/instances/{instanceID}/documents/{documentID}/send",
185
+ { clientID, instanceID, documentID }
186
+ ),
187
+ contentType: JSON_CONTENT_TYPE,
188
+ data: JSON.stringify(
189
+ {
190
+ from: mailArgs.from,
191
+ to: mailArgs.to,
192
+ cc: mailArgs.cc,
193
+ subject: mailArgs.subject,
194
+ body: mailArgs.body
195
+ }
196
+ )
197
+ }
198
+ );
199
+ return _ajax(ajaxSettings);
200
+ });
201
+ },
202
+ deleteReportDocument: function(clientID, instanceID, documentID, settings) {
203
+ validateClientID(clientID);
204
+ return login().then(function(authorizationToken) {
205
+ var ajaxSettings = utils.extend(
206
+ getHeaderSettings(authorizationToken),
207
+ settings,
208
+ {
209
+ type: HTTP_DELETE,
210
+ url: urlFromTemplate(
211
+ "{baseUrl}/clients/{clientID}/instances/{instanceID}/documents/{documentID}",
212
+ { clientID, instanceID, documentID }
213
+ )
214
+ }
215
+ );
216
+ return _ajax(ajaxSettings);
217
+ });
218
+ },
219
+ getDocumentInfo: function(clientID, instanceID, documentID, settings) {
220
+ validateClientID(clientID);
221
+ return login().then(function(authorizationToken) {
222
+ var ajaxSettings = utils.extend(
223
+ getHeaderSettings(authorizationToken),
224
+ settings,
225
+ {
226
+ type: HTTP_GET,
227
+ url: urlFromTemplate(
228
+ "{baseUrl}/clients/{clientID}/instances/{instanceID}/documents/{documentID}/info",
229
+ {
230
+ clientID,
231
+ instanceID,
232
+ documentID
233
+ }
234
+ ),
235
+ dataType: "json"
236
+ }
237
+ );
238
+ return _ajax(ajaxSettings);
239
+ });
240
+ },
241
+ getPage: function(clientID, instanceID, documentID, pageNumber, settings) {
242
+ validateClientID(clientID);
243
+ return login().then(function(authorizationToken) {
244
+ var ajaxSettings = utils.extend(
245
+ getHeaderSettings(authorizationToken),
246
+ settings,
247
+ {
248
+ type: HTTP_GET,
249
+ url: urlFromTemplate(
250
+ "{baseUrl}/clients/{clientID}/instances/{instanceID}/documents/{documentID}/pages/{pageNumber}",
251
+ {
252
+ clientID,
253
+ instanceID,
254
+ documentID,
255
+ pageNumber
256
+ }
257
+ ),
258
+ dataType: "json"
259
+ }
260
+ );
261
+ return _ajax(ajaxSettings);
262
+ });
263
+ },
264
+ get: function(url) {
265
+ var ajaxSettings = {
266
+ type: HTTP_GET,
267
+ url
268
+ };
269
+ return _ajax(ajaxSettings);
270
+ },
271
+ formatDocumentUrl: function(clientID, instanceID, documentID, queryString) {
272
+ var url = urlFromTemplate(
273
+ "{baseUrl}/clients/{clientID}/instances/{instanceID}/documents/{documentID}",
274
+ {
275
+ clientID,
276
+ instanceID,
277
+ documentID
278
+ }
279
+ );
280
+ if (queryString) {
281
+ url += "?" + queryString;
282
+ }
283
+ return url;
284
+ },
285
+ getDocumentFormats: function(settings) {
286
+ return login().then(function(authorizationToken) {
287
+ var ajaxSettings = utils.extend(
288
+ getHeaderSettings(authorizationToken),
289
+ settings,
290
+ {
291
+ type: HTTP_GET,
292
+ url: urlFromTemplate("{baseUrl}/formats"),
293
+ // anonymous
294
+ dataType: "json"
295
+ }
296
+ );
297
+ return _ajax(ajaxSettings);
298
+ });
299
+ },
300
+ getServiceVersion: function(settings) {
301
+ return login().then(function(authorizationToken) {
302
+ var ajaxSettings = utils.extend(
303
+ getHeaderSettings(authorizationToken),
304
+ settings,
305
+ {
306
+ type: HTTP_GET,
307
+ url: urlFromTemplate("{baseUrl}/version"),
308
+ // anonymous
309
+ dataType: "json"
310
+ }
311
+ );
312
+ return _ajax(ajaxSettings);
313
+ });
314
+ },
315
+ getResource: function(clientID, instanceID, documentID, resourceID, settings) {
316
+ validateClientID(clientID);
317
+ return login().then(function(authorizationToken) {
318
+ var ajaxSettings = utils.extend(
319
+ getHeaderSettings(authorizationToken),
320
+ settings,
321
+ {
322
+ type: HTTP_GET,
323
+ url: urlFromTemplate(
324
+ "{baseUrl}/clients/{clientID}/instances/{instanceID}/documents/{documentID}/resources/{resourceID}",
325
+ {
326
+ clientID,
327
+ instanceID,
328
+ documentID,
329
+ resourceID
330
+ }
331
+ ),
332
+ dataType: (settings == null ? void 0 : settings.dataType) || "json"
333
+ }
334
+ );
335
+ return _ajax(ajaxSettings);
336
+ });
337
+ },
338
+ getSearchResults: function(clientID, instanceID, documentID, searchToken, matchCase, matchWholeWord, useRegex, settings) {
339
+ validateClientID(clientID);
340
+ var searchUrl = urlFromTemplate(
341
+ "{baseUrl}/clients/{clientID}/instances/{instanceID}/documents/{documentID}/search",
342
+ {
343
+ clientID,
344
+ instanceID,
345
+ documentID
346
+ }
347
+ );
348
+ return login().then(function(authorizationToken) {
349
+ var ajaxSettings = utils.extend(
350
+ getHeaderSettings(authorizationToken),
351
+ settings,
352
+ {
353
+ type: HTTP_POST,
354
+ url: searchUrl,
355
+ contentType: JSON_CONTENT_TYPE,
356
+ dataType: "json",
357
+ data: JSON.stringify(
358
+ {
359
+ searchToken,
360
+ matchCase,
361
+ matchWholeWord,
362
+ useRegularExpressions: useRegex
363
+ }
364
+ )
365
+ }
366
+ );
367
+ return _ajax(ajaxSettings);
368
+ });
369
+ },
370
+ setAccessToken: function(accessToken) {
371
+ loginPromise = Promise.resolve(accessToken);
372
+ },
373
+ login,
374
+ keepClientAlive: function(clientID, settings) {
375
+ return login().then(function(authorizationToken) {
376
+ var ajaxSettings = utils.extend(
377
+ getHeaderSettings(authorizationToken),
378
+ settings,
379
+ {
380
+ type: HTTP_POST,
381
+ url: urlFromTemplate("{baseUrl}/clients/keepAlive/{clientID}", { clientID })
382
+ }
383
+ );
384
+ return _ajax(ajaxSettings);
385
+ });
386
+ },
387
+ getClientsSessionTimeoutSeconds: function(settings) {
388
+ return login().then(function(authorizationToken) {
389
+ var ajaxSettings = utils.extend(
390
+ getHeaderSettings(authorizationToken),
391
+ settings,
392
+ {
393
+ type: HTTP_GET,
394
+ url: urlFromTemplate("{baseUrl}/clients/sessionTimeout")
395
+ }
396
+ );
397
+ return _ajax(ajaxSettings);
398
+ }).then(function(sessionTimeoutData) {
399
+ return sessionTimeoutData.clientSessionTimeout;
400
+ });
401
+ }
402
+ };
403
+ }
404
+
405
+ exports.ServiceClient = ServiceClient;
@@ -0,0 +1,225 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('./utils.js');
6
+ var stringResources = require('./stringResources.js');
7
+
8
+ function SideMenu(dom, rootOptions, otherOptions) {
9
+ var options = $.extend({}, rootOptions, otherOptions);
10
+ var menu = $(dom).data("kendoMenu");
11
+ var enableAccessibility = options.enableAccessibility;
12
+ var DEFAULT_TABINDEX = 3;
13
+ var panelBar;
14
+ var sideMenuVisible = false;
15
+ var controller = options.controller;
16
+ if (!controller) {
17
+ throw "No controller (telerikReporting.ReportViewerController) has been specified.";
18
+ }
19
+ if (!menu) {
20
+ init(dom);
21
+ }
22
+ function init(root) {
23
+ var $root = $(root);
24
+ try {
25
+ panelBar = $root.children("ul").kendoPanelBar().data("kendoPanelBar");
26
+ } catch (e) {
27
+ console.error("Instantiation of Kendo PanelBar as side menu threw an exception", e);
28
+ throw e;
29
+ }
30
+ panelBar.bind("expand", onSubmenuOpen);
31
+ panelBar.element.off("keydown", onPanelKeyDown);
32
+ panelBar.element.on("keydown", onPanelKeyDown);
33
+ setTabIndexes($root);
34
+ enableCloseOnClick($root);
35
+ $root.click(function(e) {
36
+ if (e.target == root) {
37
+ controller.setSideMenuVisible({ visible: !sideMenuVisible });
38
+ }
39
+ });
40
+ replaceStringResources();
41
+ }
42
+ controller.setSideMenuVisible(function(event, args) {
43
+ setSideMenuVisibility();
44
+ if (enableAccessibility) {
45
+ panelBar.element.focus();
46
+ }
47
+ sideMenuVisible = args.visible;
48
+ if (!sideMenuVisible) {
49
+ panelBar.collapse($("#trv-side-menu-export-command"));
50
+ }
51
+ }).getSideMenuVisible(function(event, args) {
52
+ args.visible = sideMenuVisible;
53
+ });
54
+ function setSideMenuVisibility() {
55
+ var $root = panelBar.element.parent();
56
+ var hidden = $root.position().left < 0 || !$root.is(":visible");
57
+ if (hidden) {
58
+ $root.show();
59
+ } else {
60
+ window.setTimeout(function() {
61
+ $root.hide();
62
+ }, 500);
63
+ }
64
+ }
65
+ function onSubmenuOpen(e) {
66
+ var $item = $(e.item);
67
+ panelBar.unbind("expand", onSubmenuOpen);
68
+ panelBar.append({ text: stringResources.stringResources.loadingFormats, spriteCssClass: "k-icon k-loading" }, $item);
69
+ options.controller.getDocumentFormats().then(fillFormats).then(function() {
70
+ panelBar.expand($item);
71
+ }).then(function() {
72
+ panelBar.bind("expand", onSubmenuOpen);
73
+ });
74
+ }
75
+ function fillFormats(formats) {
76
+ utils.each($(dom).find("ul[data-command-list=export-format-list]"), function() {
77
+ var $list = $(this);
78
+ var $parent = $list.parents("li");
79
+ var tabIndex = $parent.attr("tabindex");
80
+ if (!tabIndex) {
81
+ tabIndex = DEFAULT_TABINDEX;
82
+ }
83
+ $list.empty();
84
+ utils.each(formats, function(i) {
85
+ var format = this;
86
+ var ariaLabel = enableAccessibility ? utils.stringFormat('aria-label="{localizedName}" ', format) : " ";
87
+ var li = "<li " + ariaLabel + utils.stringFormat('tabindex="' + tabIndex + '"><a tabindex="-1" href="#" data-command="telerik_ReportViewer_export" data-command-parameter="{name}"><span>{localizedName}</span></a></li>', format);
88
+ panelBar.append(li, $parent);
89
+ });
90
+ setListItemsTabIndex($parent.find("li"), tabIndex);
91
+ enableCloseOnClick($parent);
92
+ });
93
+ }
94
+ function enableCloseOnClick(root) {
95
+ utils.each(root.find("li"), function() {
96
+ var isLeaf = $(this).children("ul").length === 0;
97
+ if (isLeaf) {
98
+ $(this).children("a").click(function() {
99
+ controller.setSideMenuVisible({ visible: !sideMenuVisible });
100
+ });
101
+ }
102
+ });
103
+ }
104
+ function setTabIndexes(root) {
105
+ if (!root) {
106
+ return;
107
+ }
108
+ var $list = root.children("ul");
109
+ var parentTabIndex = root.attr("tabindex");
110
+ var listIndex = parentTabIndex ? parentTabIndex : DEFAULT_TABINDEX;
111
+ setListItemsTabIndex($list, listIndex);
112
+ }
113
+ function setListItemsTabIndex(list, tabIndex) {
114
+ list.attr("tabindex", tabIndex);
115
+ var items = list.find("li");
116
+ utils.each(items, function() {
117
+ var $item = $(this);
118
+ $item.attr("tabindex", tabIndex);
119
+ var anchor = $item.children("a");
120
+ if (anchor.length > 0) {
121
+ var $anchor = $(anchor);
122
+ $anchor.attr("tabindex", -1);
123
+ }
124
+ $item.focus(function() {
125
+ var anchor2 = $item.children("a");
126
+ if (anchor2.length > 0) {
127
+ anchor2.addClass("k-focus");
128
+ }
129
+ });
130
+ $item.blur(function() {
131
+ var anchor2 = $item.children("a");
132
+ if (anchor2.length > 0) {
133
+ anchor2.removeClass("k-focus");
134
+ }
135
+ });
136
+ $item.off("keydown", onItemKeyDown);
137
+ $item.on("keydown", onItemKeyDown);
138
+ });
139
+ }
140
+ function onPanelKeyDown(e) {
141
+ if (e.which == kendo.keys.ENTER) {
142
+ var $item;
143
+ var isSelectedFocusedItem = false;
144
+ var focusedItem = document.activeElement;
145
+ if (focusedItem && focusedItem.localName == "li") {
146
+ var items = panelBar.element.find("li.k-item");
147
+ for (var i = 0; i < items.length; i++) {
148
+ var listItem = items[i];
149
+ if (focusedItem === listItem) {
150
+ $item = $(listItem);
151
+ isSelectedFocusedItem = true;
152
+ break;
153
+ }
154
+ }
155
+ } else {
156
+ $item = panelBar.select();
157
+ }
158
+ if (!$item || !$item.length > 0) {
159
+ return;
160
+ }
161
+ handleItemSelect($item, isSelectedFocusedItem);
162
+ }
163
+ }
164
+ function onItemKeyDown(e) {
165
+ if (e.which == kendo.keys.ENTER) {
166
+ handleItemSelect($(e.target), false);
167
+ }
168
+ }
169
+ function handleItemSelect(item, handleExpandCollapse) {
170
+ if (!item.length > 0) {
171
+ return;
172
+ }
173
+ var isLeaf = item.children("ul").length === 0;
174
+ if (!isLeaf) {
175
+ if (handleExpandCollapse) {
176
+ if (item.hasClass("k-active")) {
177
+ panelBar.collapse(item);
178
+ } else {
179
+ panelBar.expand(item);
180
+ }
181
+ }
182
+ } else {
183
+ var $anchor = item.find("a");
184
+ if ($anchor.length > 0) {
185
+ $anchor[0].click();
186
+ }
187
+ }
188
+ }
189
+ function replaceStringResources() {
190
+ var menuAreas = findMenuArea();
191
+ if (!menuAreas) {
192
+ return;
193
+ }
194
+ utils.each(menuAreas, function() {
195
+ var $menu = $(this);
196
+ var menuItems = $menu.children("li.k-panelbar-header");
197
+ $menu.attr("aria-label", stringResources.stringResources[$menu.attr("aria-label")]);
198
+ utils.each(menuItems, function() {
199
+ var $menuItem = $(this);
200
+ var $a = $menuItem.find("a");
201
+ $menuItem.attr("aria-label", stringResources.stringResources[$menuItem.attr("aria-label")]);
202
+ if ($a) {
203
+ var $span = $a.find("span:not(.k-icon)");
204
+ $a.attr("title", stringResources.stringResources[$a.attr("title")]);
205
+ if ($span) {
206
+ $span.text(stringResources.stringResources[$span.text()]);
207
+ }
208
+ }
209
+ });
210
+ });
211
+ }
212
+ function findMenuArea() {
213
+ return utils.findElement("div[data-role=telerik_ReportViewer_SideMenu] > ul");
214
+ }
215
+ }
216
+ var pluginName = "telerik_ReportViewer_SideMenu";
217
+ $.fn[pluginName] = function(options, otherOptions) {
218
+ return utils.each(this, function() {
219
+ if (!$.data(this, pluginName)) {
220
+ $.data(this, pluginName, new SideMenu(this, options, otherOptions));
221
+ }
222
+ });
223
+ };
224
+
225
+ exports.SideMenu = SideMenu;