@progress/telerik-jquery-report-viewer 26.25.521 → 27.25.813

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.
package/README.md CHANGED
@@ -1,9 +1,38 @@
1
- # Progress Telerik jQuery Report Viewer
1
+ # Progress® Telerik HTML5 jQuery Report Viewer
2
2
 
3
3
  This package is part of [Telerik Reporting](https://www.telerik.com/reporting).
4
4
 
5
- This version of Telerik jQuery Report Viewer requires Telerik Report Server or Telerik Reporting REST Service 19.1.25.521.
5
+ The Telerik Reporting HTML5 Report Viewer is an HTML5/jQuery-based component that enables the display of Telerik Reports within a web page. Its rich preview capabilities, easy customization, and extensive API allow for seamless integration into a wide range of web applications.
6
6
 
7
- __Intended for internal purposes only.__
7
+ Major features:
8
8
 
9
- Read more for Telerik Reporting Report Viewers here: [Telerik Report Viewers Overview](https://docs.telerik.com/reporting/embedding-reports/display-reports-in-applications/overview)
9
+ * Preview Telerik Reports in desktop or mobile browsers.
10
+
11
+ * Browse the report pages on screen.
12
+
13
+ * Navigate through the history of visited reports.
14
+
15
+ * Use built-in interactivity features such as navigating to external URLs, other reports or bookmarks, performing drill-down actions, sorting by table columns, etc.
16
+
17
+ * Print or export the report to supported formats including PDF, Word, Excel, and PowerPoint.
18
+
19
+ * Use the viewer's API for customizing and extending its behavior.
20
+
21
+ This version of Telerik jQuery Report Viewer requires either Telerik Report Server or Telerik Reporting REST Service 19.2.25.813.
22
+
23
+ Learn more about Telerik Reporting Viewers here: [Telerik Report Viewers Overview](https://docs.telerik.com/reporting/embedding-reports/display-reports-in-applications/overview)
24
+
25
+ ## License
26
+
27
+ **IMPORTANT** This is commercial software. To use it, you must agree to the
28
+ [Telerik End User License Agreement for Telerik Reporting](https://www.telerik.com/purchase/license-agreement/reporting-dlw-s).
29
+
30
+ If you do not have a commercial license, the usage of this product is governed by the trial license terms.
31
+
32
+ Telerik Reporting requires activation using a license key — this applies to both the trial and commercial versions of the product.
33
+
34
+ Telerik Reporting licenses can be obtained through the [Telerik Reporting page](https://www.telerik.com/purchase/individual/reporting). For more information on licensing, configuration, and troubleshooting, refer to the product documentation's [License section](https://docs.telerik.com/reporting/licensing/setting-up-your-telerik-reporting-license-key).
35
+
36
+ _Copyright © 2025 Progress Software Corporation and/or one of its subsidiaries or affiliates. All rights reserved._
37
+
38
+ _Progress, Telerik, and certain product names used herein are trademarks or registered trademarks of Progress Software Corporation and/or one of its subsidiaries or affiliates in the U.S. and/or other countries._
@@ -58,12 +58,13 @@ class AiPrompt {
58
58
  this.kendoAiPromptDialog;
59
59
  this.kendoAiPrompt;
60
60
  this.kendoAiPromtDialogLocation;
61
- this.pagesAreaContainer = $('[data-id="trv-pages-area"]');
61
+ this.reportViewerWrapper = $(`[data-selector='${this.viewerOptions.viewerSelector}']`);
62
+ this.pagesAreaContainer = this.reportViewerWrapper.find('[data-id="trv-pages-area"]');
62
63
  this.aiPromptDialogInitialized = false;
63
64
  this.aiPromptInitialized = false;
64
- const aiConfigurationOptions = this.controller.getAiConfigurationOptions();
65
- this.requireConsent = aiConfigurationOptions.requireConsent;
66
- this.allowCustomPrompts = aiConfigurationOptions.allowCustomPrompts;
65
+ this.requireConsent = false;
66
+ this.allowCustomPrompts = true;
67
+ this.predefinedPrompts = [];
67
68
  this.init();
68
69
  }
69
70
  init() {
@@ -71,10 +72,8 @@ class AiPrompt {
71
72
  return;
72
73
  }
73
74
  replaceStringResources(this.$element);
74
- if (this.requireConsent) {
75
- this._initAiConsentDialog();
76
- this._attachAiConsentDialogCommands();
77
- }
75
+ this._initAiConsentDialog();
76
+ this._attachAiConsentDialogCommands();
78
77
  this._initAiPromptDialog();
79
78
  this._attachEvents();
80
79
  this.aiPromptDialogInitialized = true;
@@ -107,7 +106,10 @@ class AiPrompt {
107
106
  this.kendoAiConsentDialog.close();
108
107
  this.controller.saveToSessionStorage("trvAiConsent", "true");
109
108
  this.controller.setAiPromptInitiated(true);
110
- this.open();
109
+ if (this.kendoAiPromptDialog) {
110
+ this._initAiPrompt(this.predefinedPrompts);
111
+ this.kendoAiPromptDialog.open();
112
+ }
111
113
  })
112
114
  };
113
115
  binder.Binder.attachCommands(this.kendoAiConsentDialog.element.find(".trv-ai-consent-actions"), optionsCommandSet, this.viewerOptions);
@@ -119,7 +121,7 @@ class AiPrompt {
119
121
  return;
120
122
  }
121
123
  this.kendoAiConsentDialog = new kendo.ui.Window(aiConsentDialogElement, {
122
- title: "Before you start with AI",
124
+ title: stringResources.stringResources["aiPromptDialogConsentTitle"] || "",
123
125
  width: 500,
124
126
  minWidth: 400,
125
127
  minHeight: 106,
@@ -221,14 +223,14 @@ class AiPrompt {
221
223
  if (this.allowCustomPrompts) {
222
224
  return;
223
225
  }
224
- let aiPromptTextAreaPlaceholder = "Enter your prompt";
226
+ let aiPromptTextAreaPlaceholder = stringResources.stringResources["aiPromptDialogTextAreaPlaceholder"];
225
227
  const aiPromptTextArea = this.kendoAiPrompt.element.find(".k-prompt-content .k-prompt-view textarea");
226
228
  if (!hasPromptSuggestions) {
227
- const aiPromptGenerateButton = this.kendoAiPrompt.element.find(".k-prompt-footer");
229
+ const aiPromptGenerateButton = this.kendoAiPrompt.element.find(".k-prompt-footer .k-actions");
228
230
  aiPromptGenerateButton && aiPromptGenerateButton.addClass("k-disabled");
229
- aiPromptTextAreaPlaceholder = "Custom prompts are disabled and there are no predefined prompts configured. Please allow custom prompts or add predefined prompts to use the AI feature.";
231
+ aiPromptTextAreaPlaceholder = stringResources.stringResources["aiPromptDialogNoPredefinedAndCustomPromptsPlaceholder"] || "";
230
232
  } else {
231
- aiPromptTextAreaPlaceholder = "Custom prompts are disabled, please select one of the predefined suggestions below";
233
+ aiPromptTextAreaPlaceholder = stringResources.stringResources["aiPromptDialogNoCustomPromptsPlaceholder"] || "";
232
234
  }
233
235
  aiPromptTextArea && aiPromptTextArea.attr("placeholder", aiPromptTextAreaPlaceholder) && aiPromptTextArea.addClass("k-disabled");
234
236
  }
@@ -280,20 +282,26 @@ class AiPrompt {
280
282
  }
281
283
  }
282
284
  open() {
283
- if (this.kendoAiConsentDialog && this.requireConsent && this.controller.loadFromSessionStorage("trvAiConsent") !== "true") {
284
- this.kendoAiConsentDialog.open();
285
- return;
286
- }
287
- if (this.kendoAiPromptDialog) {
288
- this.controller.createAIThread().then((data) => {
285
+ this.controller.createAIThread().then((data) => {
286
+ this.predefinedPrompts = data?.predefinedPrompts;
287
+ this.allowCustomPrompts = data?.allowCustomPrompts;
288
+ if (this.kendoAiConsentDialog && data.requireConsent && this.controller.loadFromSessionStorage("trvAiConsent") !== "true") {
289
+ $(".trv-ai-consent-content").html(data?.consentMessage);
290
+ this.kendoAiConsentDialog.open();
291
+ return;
292
+ }
293
+ if (this.kendoAiPromptDialog) {
289
294
  this.controller.setAiPromptInitiated(true);
290
- this._initAiPrompt(data?.predefinedPrompts);
295
+ this._initAiPrompt(this.predefinedPrompts);
291
296
  this.kendoAiPromptDialog.open();
292
- });
293
- }
297
+ }
298
+ });
294
299
  }
295
300
  close() {
296
301
  this.controller.setAiPromptInitiated(false);
302
+ if (this.kendoAiConsentDialog) {
303
+ this.kendoAiConsentDialog.close();
304
+ }
297
305
  if (this.kendoAiPromptDialog && this.kendoAiPromptDialog.options.visible) {
298
306
  this.kendoAiPromptDialog.close();
299
307
  }
@@ -134,9 +134,9 @@ class DocumentMapArea {
134
134
  }
135
135
  showDocumentMap(show) {
136
136
  var splitter = $("#" + this.options.viewerSelector + "-document-map-splitter").getKendoSplitter();
137
- var sibling = this.$element.next();
137
+ var sibling = this.$element.next(".k-splitbar");
138
138
  if (this.options.documentMapAreaPosition === enums.DocumentMapAreaPositions.RIGHT) {
139
- sibling = this.$element.prev();
139
+ sibling = this.$element.prev(".k-splitbar");
140
140
  }
141
141
  if (splitter) {
142
142
  (this.documentMapNecessary ? $.fn.removeClass : $.fn.addClass).call(sibling, "k-hidden");
package/dist/cjs/index.js CHANGED
@@ -45,6 +45,9 @@ exports.parameterEditorsMatch = parameters.parameterEditorsMatch;
45
45
  exports.ParameterValidators = parameterValidators.ParameterValidators;
46
46
  exports.PerspectiveManager = perspectives.PerspectiveManager;
47
47
  exports.ReportViewer = reportViewer.ReportViewer;
48
+ exports.ReportViewerController = reportViewer.ReportViewerController;
49
+ exports.ReportViewerNotificationService = reportViewer.ReportViewerNotificationService;
50
+ exports.ReportViewerServiceClient = reportViewer.ReportViewerServiceClient;
48
51
  exports.TouchBehavior = touch.TouchBehavior;
49
52
  exports.UIController = uiController.UIController;
50
53
  exports.ParametersArea = parametersArea.ParametersArea;
@@ -55,8 +55,8 @@ class ParametersArea {
55
55
  throw "No notificationService (telerikReporting.NotificationService) has been specified.";
56
56
  }
57
57
  this.parameterEditors = parameters.ParameterEditors;
58
- if (options.parameterEditors && options.parameterEditors.length > 0) {
59
- this.parameterEditors = [].concat(options.parameterEditors, parameters.ParameterEditors);
58
+ if (this.options.parameterEditors && this.options.parameterEditors.length > 0) {
59
+ this.parameterEditors = [].concat(this.options.parameterEditors, parameters.ParameterEditors);
60
60
  }
61
61
  this.recentParameterValues;
62
62
  this.parameters;
@@ -215,6 +215,9 @@ class ParametersArea {
215
215
  (this.allParametersAutoRefresh(parameters) && this.controller.autoRunEnabled ? $.fn.removeClass : $.fn.addClass).call(this.$element, "preview");
216
216
  }
217
217
  allParametersAutoRefresh(parameters) {
218
+ if (!parameters) {
219
+ return true;
220
+ }
218
221
  var allAuto = Array.from(parameters).every((parameter) => {
219
222
  return !parameter.isVisible || parameter.autoRefresh;
220
223
  });
@@ -443,9 +446,9 @@ class ParametersArea {
443
446
  if (!splitter) {
444
447
  return;
445
448
  }
446
- var sibling = this.$element.prev();
449
+ var sibling = this.$element.prev(".k-splitbar");
447
450
  if (this.options.parametersAreaPosition === enums.ParametersAreaPositions.TOP || this.options.parametersAreaPosition === enums.ParametersAreaPositions.LEFT) {
448
- sibling = this.$element.next();
451
+ sibling = this.$element.next(".k-splitbar");
449
452
  }
450
453
  (this.parametersAreaNecessary ? $.fn.removeClass : $.fn.addClass).call(sibling, "k-hidden");
451
454
  splitter.toggle(".trv-parameters-area", show);
@@ -462,8 +465,10 @@ class ParametersArea {
462
465
  _attachEvents() {
463
466
  this.controller.on("reloadParameters", (controllerLoadParametersPromise) => {
464
467
  this.showError();
465
- kendo.destroy(this._parametersWrapper);
466
- this._parametersWrapper.innerHTML = "";
468
+ if (this._parametersWrapper) {
469
+ kendo.destroy(this._parametersWrapper);
470
+ this._parametersWrapper.innerHTML = "";
471
+ }
467
472
  this.acceptParameters(controllerLoadParametersPromise, this.onLoadParametersSuccess.bind(this));
468
473
  }).onAsync("beforeLoadReport", async () => {
469
474
  this.loadingCount = 0;
@@ -125,7 +125,8 @@ function getDefaultOptions(serviceUrl, version) {
125
125
  searchMetadataOnDemand: false,
126
126
  initialPageAreaImageUrl: null,
127
127
  keepClientAlive: true,
128
- webDesignerPreview: false
128
+ webDesignerPreview: false,
129
+ serverPreview: false
129
130
  };
130
131
  }
131
132
  function ReportViewer(dom, options) {
@@ -154,7 +155,7 @@ function ReportViewer(dom, options) {
154
155
  if (!validateOptions(options)) {
155
156
  return;
156
157
  }
157
- var version = "19.1.25.521";
158
+ var version = "19.2.25.813";
158
159
  options = $.extend({}, getDefaultOptions(svcApiUrl, version), options);
159
160
  settings = new reportViewerSettings.ReportViewerSettings(
160
161
  persistanceKey,
@@ -169,7 +170,8 @@ function ReportViewer(dom, options) {
169
170
  parametersAreaPosition: options.parametersAreaPosition,
170
171
  documentMapAreaPosition: options.documentMapAreaPosition,
171
172
  keepClientAlive: options.keepClientAlive,
172
- webDesignerPreview: options.webDesignerPreview
173
+ webDesignerPreview: options.webDesignerPreview,
174
+ serverPreview: options.serverPreview
173
175
  }
174
176
  );
175
177
  notificationService$1 = new notificationService.NotificationService();
@@ -647,7 +649,7 @@ function ReportViewer(dom, options) {
647
649
  function start() {
648
650
  var pendingRefresh = false;
649
651
  init();
650
- if (!options.webDesignerPreview) {
652
+ if (!(options.webDesignerPreview || options.serverPreview)) {
651
653
  if (controller.shouldShowLicenseBanner()) {
652
654
  $(".trv-content-wrapper")?.prepend('<span class="trv-license-banner"></span>');
653
655
  const licenseBanner = $(".trv-license-banner").kendoNotification({
@@ -817,13 +819,21 @@ function ReportViewer(dom, options) {
817
819
  return Promise.resolve();
818
820
  }
819
821
  var kendoUrl = utils.rTrim(svcApiUrl, "\\/") + "/resources/js/telerikReportViewer.kendo-" + version2 + ".min.js/";
820
- return utils.loadScript(kendoUrl).catch((errorData) => {
822
+ return fetch(kendoUrl).then((response) => {
823
+ if (!response.ok) {
824
+ return Promise.reject({ error: "Failed to fetch data - status code " + response.status });
825
+ }
826
+ return response.text();
827
+ }).then((kendoScript) => {
828
+ const scriptElement = document.createElement("script");
829
+ scriptElement.textContent = kendoScript;
830
+ document.head.appendChild(scriptElement);
831
+ }).catch((errorData) => {
821
832
  utils.logError("Kendo could not be loaded automatically. Make sure 'options.serviceUrl' / 'options.reportServer.url' is correct and accessible. The error is: " + errorData.error);
822
833
  });
823
834
  }
824
835
  function main(version2) {
825
836
  ensureKendo(version2).then(() => {
826
- }).then(() => {
827
837
  viewer.authenticationToken(options.authenticationToken);
828
838
  controller.getServiceConfiguration().catch((ex) => {
829
839
  var errorOutput = utils.isApplicationExceptionInstance(ex) ? ex.exceptionMessage : utils.stringFormat(stringResources.stringResources.errorServiceUrl, [utils.escapeHtml(svcApiUrl)]);
@@ -859,6 +869,15 @@ function ReportViewer(dom, options) {
859
869
  }
860
870
  return viewer;
861
871
  }
872
+ function ReportViewerServiceClient(serviceClientOptions) {
873
+ return new RCV__namespace.ServiceClient(serviceClientOptions);
874
+ }
875
+ function ReportViewerController(controllerOptions) {
876
+ return new RCV__namespace.ReportController(controllerOptions?.serviceClient, controllerOptions?.settings);
877
+ }
878
+ function ReportViewerNotificationService() {
879
+ return new notificationService.NotificationService();
880
+ }
862
881
  var pluginName = "telerik_ReportViewer";
863
882
  $.fn[pluginName] = function(options) {
864
883
  if (this.selector && !options.selector) {
@@ -919,3 +938,6 @@ plugins.forEach((plugin) => {
919
938
  });
920
939
 
921
940
  exports.ReportViewer = ReportViewer;
941
+ exports.ReportViewerController = ReportViewerController;
942
+ exports.ReportViewerNotificationService = ReportViewerNotificationService;
943
+ exports.ReportViewerServiceClient = ReportViewerServiceClient;
@@ -92,7 +92,7 @@ class Search {
92
92
  if (!this.notificationService) {
93
93
  throw "No notificationService (telerikReporting.NotificationService) has been specified.";
94
94
  }
95
- this.pagesAreaContainer = $('[data-id="trv-pages-area"]');
95
+ this.pagesAreaContainer = this.reportViewerWrapper.find('[data-id="trv-pages-area"]');
96
96
  this.searchManager = new RCV__namespace.SearchManager(this.pagesAreaContainer[0], this.controller);
97
97
  this.searchManager.on("searchComplete", this.updateResultsUI.bind(this));
98
98
  this.init();
@@ -102,6 +102,10 @@ class SendEmail {
102
102
  this.controller.getDocumentFormats().then((formats) => {
103
103
  this.docFormatList = formats;
104
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
+ }
105
109
  });
106
110
  this._initDialog();
107
111
  this._initInputFields();
@@ -217,6 +221,7 @@ class SendEmail {
217
221
  "superscript"
218
222
  ]
219
223
  });
224
+ this.setDefaultValues(this.viewerOptions.sendEmail);
220
225
  this.kendoValidator = new kendo.ui.Validator(this.element.querySelector(".trv-send-email-fields"), {});
221
226
  }
222
227
  setAttrs() {
@@ -327,17 +332,12 @@ class SendEmail {
327
332
  }
328
333
  return fromIsValid && toIsValid && ccIsValid && hasFormat;
329
334
  }
335
+ /* Sets all default email values except the format as it depends on a request */
330
336
  setDefaultValues(sendEmail) {
331
337
  this.inputFrom.value(sendEmail && sendEmail.from || "");
332
338
  this.inputTo.value(sendEmail && sendEmail.to || "");
333
339
  this.inputCC.value(sendEmail && sendEmail.cc || "");
334
340
  this.inputSubject.value(sendEmail && sendEmail.subject || "");
335
- if (sendEmail && sendEmail.format) {
336
- this.docFormat.value(sendEmail.format);
337
- } else {
338
- this.docFormat.select(0);
339
- }
340
- this.docFormat.trigger("change");
341
341
  this.bodyEditor.value(sendEmail && sendEmail.body || "");
342
342
  }
343
343
  isEmpty(input) {
package/dist/cjs/sr.js CHANGED
@@ -55,6 +55,8 @@ var sr = {
55
55
  menuPreviousPageTitle: "Previous Page",
56
56
  menuNextPageTitle: "Next Page",
57
57
  menuPageNumberTitle: "Page Number Selector",
58
+ menuPageText: "Page",
59
+ menuPageOfText: "of",
58
60
  menuDocumentMapTitle: "Toggle Document Map",
59
61
  menuParametersAreaTitle: "Toggle Parameters Area",
60
62
  menuZoomInTitle: "Zoom In",
@@ -162,9 +164,12 @@ var sr = {
162
164
  sendEmailValidationSingleEmail: "The field accepts a single email address only",
163
165
  sendEmailValidationFormatRequired: "Format field is required",
164
166
  errorSendingDocument: "Error sending report document (Report = '{0}').",
165
- aiPromptConsentDialogTitle: "Before you start with AI",
166
- aiPromptConsentAgreeLabel: "Consent",
167
- aiPromptConsentRejectLabel: "Cancel"
167
+ aiPromptDialogConsentTitle: "Before you start with AI",
168
+ aiPromptDialogConsentAccept: "Consent",
169
+ aiPromptDialogConsentReject: "Cancel",
170
+ aiPromptDialogTextAreaPlaceholder: "Enter your prompt",
171
+ aiPromptDialogNoPredefinedAndCustomPromptsPlaceholder: "Custom prompts are disabled and there are no predefined prompts configured. Please allow custom prompts or add predefined prompts to use the AI feature.",
172
+ aiPromptDialogNoCustomPromptsPlaceholder: "Custom prompts are disabled, please select one of the predefined suggestions below"
168
173
  };
169
174
  window.telerikReportViewer ||= {};
170
175
  window.telerikReportViewer.sr ||= sr;
@@ -7,11 +7,27 @@ var pageCountLabel = require('./toolbar/page-count-label.js');
7
7
  var pageNumberInput = require('./toolbar/page-number-input.js');
8
8
  var constants = require('./constants.js');
9
9
 
10
+ function replaceStringResources($toolbar) {
11
+ if (!$toolbar) {
12
+ return;
13
+ }
14
+ const labels = $toolbar.find(".trv-replace-string");
15
+ if (labels && labels.length > 0) {
16
+ Array.from(labels).forEach((element) => {
17
+ const $element = $(element);
18
+ const stringResource = stringResources.stringResources[$element.text()];
19
+ if ($element && stringResource) {
20
+ $element.text(stringResource);
21
+ }
22
+ });
23
+ }
24
+ }
10
25
  class Toolbar {
11
26
  // #region fields
12
27
  _options;
13
28
  /** @type {HTMLElement} */
14
29
  _element;
30
+ $element;
15
31
  _kendoToolbar;
16
32
  _neverOverflowToolBarButtons = ["goToPrevPage", "goToNextPage"];
17
33
  // #endregion
@@ -19,11 +35,12 @@ class Toolbar {
19
35
  constructor(element, options, viewerOptions) {
20
36
  this._element = element;
21
37
  this._options = options;
38
+ this.$element = $(this._element);
22
39
  if (this._kendoToolbar === void 0) {
23
40
  this.initKendoToolbar();
24
41
  }
25
42
  this._options.controller.on("beginLoadReport", () => {
26
- const kendoExportDropDown = $(`#${constants.ToolBarConstants.ExportDropdownId}`).data("kendoDropDownButton");
43
+ const kendoExportDropDown = this.$element.find(`#${constants.ToolBarConstants.ExportDropdownId}`).data("kendoDropDownButton");
27
44
  kendoExportDropDown?.enable(false);
28
45
  }).onAsync("reportLoadComplete", async () => {
29
46
  if (viewerOptions.renderingExtensions === void 0) {
@@ -40,12 +57,12 @@ class Toolbar {
40
57
  // #endregion
41
58
  // #region methods
42
59
  initKendoToolbar() {
60
+ replaceStringResources(this.$element);
43
61
  const children = Array.from(this._element.children);
44
62
  const toolBarItems = [];
45
63
  children.forEach((child) => toolBarItems.push(this.createToolbarItem(child)));
46
- const $element = $(this._element);
47
- $element.empty();
48
- this._kendoToolbar = $element.kendoToolBar({
64
+ this.$element.empty();
65
+ this._kendoToolbar = this.$element.kendoToolBar({
49
66
  items: toolBarItems,
50
67
  click: (e) => {
51
68
  this.executeCommand(e);
@@ -54,18 +71,18 @@ class Toolbar {
54
71
  this.executeCommand(e);
55
72
  }
56
73
  }).data("kendoToolBar");
57
- const pageNumberInputEl = $(constants.ToolBarConstants.PageNumberInputDataRoleSelector).get(0);
74
+ const pageNumberInputEl = this.$element.find(constants.ToolBarConstants.PageNumberInputDataRoleSelector).get(0);
58
75
  if (pageNumberInputEl) {
59
76
  new pageNumberInput.PageNumberInput(pageNumberInputEl, this._options);
60
77
  }
61
- const pageCountLabelEl = $(constants.ToolBarConstants.PageCountLabelDataRoleSelector).get(0);
78
+ const pageCountLabelEl = this.$element.find(constants.ToolBarConstants.PageCountLabelDataRoleSelector).get(0);
62
79
  if (pageCountLabelEl) {
63
80
  new pageCountLabel.PageCountLabel(pageCountLabelEl, this._options);
64
81
  }
65
82
  }
66
83
  createToolbarItem(elementData) {
67
84
  const cmdName = (elementData.dataset?.command || "").replace("telerik_ReportViewer_", "");
68
- if (cmdName === "toggleAiPromptDialog" && !this._options.controller.getAiConfigurationOptions()?.isAvailable) {
85
+ if (cmdName === "toggleAiPromptDialog" && !this._options.controller.isAiInsightsEnabled()) {
69
86
  return;
70
87
  }
71
88
  const id = elementData.id;
@@ -159,7 +176,7 @@ class Toolbar {
159
176
  cmdFn.exec(cmdParam);
160
177
  }
161
178
  updateExportDropdownItems(extensions) {
162
- const kendoExportDropDown = $(`#${constants.ToolBarConstants.ExportDropdownId}`).data("kendoDropDownButton");
179
+ const kendoExportDropDown = this.$element.find(`#${constants.ToolBarConstants.ExportDropdownId}`).data("kendoDropDownButton");
163
180
  if (!kendoExportDropDown) {
164
181
  return;
165
182
  }
package/dist/cjs/utils.js CHANGED
@@ -34,13 +34,6 @@ function isSpecialKey() {
34
34
  return false;
35
35
  };
36
36
  }
37
- function toXhrErrorData(xhr, status, error) {
38
- return {
39
- xhr,
40
- status,
41
- error
42
- };
43
- }
44
37
  function rectangle(left, top, width, height) {
45
38
  return {
46
39
  left,
@@ -193,13 +186,6 @@ function getExceptionInstance(xhr) {
193
186
  }
194
187
  return parseJSON(xhr.responseText);
195
188
  }
196
- function loadScript(url) {
197
- var ajaxOptions = {
198
- dataType: "script",
199
- cache: true
200
- };
201
- return $ajax(url, ajaxOptions);
202
- }
203
189
  function filterUniqueLastOccurrence(array) {
204
190
  function onlyLastUnique(value, index, self) {
205
191
  return self.lastIndexOf(value) === index;
@@ -249,15 +235,6 @@ function getColorAlphaValue(color) {
249
235
  var alpha = colorComponents.length === 4 ? parseFloat((parseFloat(colorComponents[3].replace(/[()]/g, "")) / 255).toFixed(2)) : 1;
250
236
  return alpha;
251
237
  }
252
- function $ajax(url, ajaxSettings) {
253
- return new Promise(function(resolve, reject) {
254
- $.ajax(url, ajaxSettings).done(function(data) {
255
- return resolve(data);
256
- }).fail(function(xhr, status, error) {
257
- reject(toXhrErrorData(xhr, status, error));
258
- });
259
- });
260
- }
261
238
 
262
239
  Object.defineProperty(exports, 'parseToLocalDate', {
263
240
  enumerable: true,
@@ -275,7 +252,6 @@ Object.defineProperty(exports, 'tryParseInt', {
275
252
  enumerable: true,
276
253
  get: function () { return RCV.tryParseInt; }
277
254
  });
278
- exports.$ajax = $ajax;
279
255
  exports.adjustTimezone = adjustTimezone;
280
256
  exports.areEqual = areEqual;
281
257
  exports.areEqualArrays = areEqualArrays;
@@ -290,7 +266,6 @@ exports.isApplicationExceptionInstance = isApplicationExceptionInstance;
290
266
  exports.isRgbColor = isRgbColor;
291
267
  exports.isSpecialKey = isSpecialKey;
292
268
  exports.lTrim = lTrim;
293
- exports.loadScript = loadScript;
294
269
  exports.logError = logError;
295
270
  exports.parseJSON = parseJSON;
296
271
  exports.rTrim = rTrim;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * TelerikReporting v19.1.25.521 (https://www.telerik.com/products/reporting.aspx)
2
+ * TelerikReporting v19.2.25.813 (https://www.telerik.com/products/reporting.aspx)
3
3
  * Copyright 2025 Progress Software EAD. All rights reserved.
4
4
  *
5
5
  * Telerik Reporting commercial licenses may be obtained at
@@ -10,14 +10,14 @@
10
10
  font-family: "ReportingIcons";
11
11
  font-style: normal;
12
12
  font-weight: normal;
13
- src: url("../ReportingIcons-19.1.25.521.ttf/") format("truetype");
13
+ src: url("../ReportingIcons-19.2.25.813.ttf/") format("truetype");
14
14
  /*unicode-range: U+E0ED, U+E0EE, U+E0E6, U+E132, U+E12F, U+E008, U+E00B, U+E09C, U+E096, U+E07E, U+E086, U+E06C, U+E07F, U+E080, U+E081, U+E149, U+E087;*/
15
15
  }
16
16
  @font-face {
17
17
  font-family: "WebComponentsIcons";
18
18
  font-style: normal;
19
19
  font-weight: normal;
20
- src: url("../ReportingIcons-19.1.25.521.ttf/") format("truetype");
20
+ src: url("../ReportingIcons-19.2.25.813.ttf/") format("truetype");
21
21
  }
22
22
  .k-icon {
23
23
  /* use !important to prevent issues with browser extensions that change fonts */
@@ -4256,4 +4256,4 @@
4256
4256
  .trv-report-viewer .t-i-scroll:before {
4257
4257
  content: "\e022";
4258
4258
  }
4259
- /* DO NOT MODIFY OR DELETE THIS LINE! UPGRADE WIZARD CHECKSUM 5ee919d907e8eba93f034fd4e4413b14 */
4259
+ /* DO NOT MODIFY OR DELETE THIS LINE! UPGRADE WIZARD CHECKSUM 13afab675da2be218389d6d0045b16be */