survey-analytics 2.5.39 → 2.5.41

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * surveyjs - SurveyJS Dashboard library v2.5.39
2
+ * surveyjs - SurveyJS Dashboard library v2.5.41
3
3
  * Copyright (c) 2015-2026 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * surveyjs - SurveyJS Dashboard library v2.5.39
2
+ * surveyjs - SurveyJS Dashboard library v2.5.41
3
3
  * Copyright (c) 2015-2026 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
5
  */
6
6
 
7
- import { D as DocumentHelper, l as localization, c as createImagesContainer, d as createLinksContainer, e as createCommercialLicenseLink, f as svgTemplate } from './shared.mjs';
7
+ import { D as DocumentHelper, l as localization, c as createImagesContainer, d as createLinksContainer, e as stripHtml, f as createCommercialLicenseLink, g as svgTemplate } from './shared.mjs';
8
8
  export { s as setupLocale, a as surveyStrings } from './shared.mjs';
9
9
  import { ItemValue, settings, Serializer, surveyLocalization, hasLicense, EventBase, Event } from 'survey-core';
10
10
  import { TabulatorFull } from 'tabulator-tables';
@@ -497,6 +497,10 @@ class BaseColumn {
497
497
  if (!this.displayNameValue) {
498
498
  this.displayName = this.getDisplayName();
499
499
  }
500
+ // guard against XSS in user-defined question titles
501
+ if (!this.table || this.table.options.stripHtmlFromTitles !== false) {
502
+ return stripHtml(this.displayNameValue);
503
+ }
500
504
  return this.displayNameValue;
501
505
  }
502
506
  set displayName(val) {
@@ -1872,7 +1876,10 @@ class Tabulator extends Table {
1872
1876
  minWidth: this._options.columnMinWidth,
1873
1877
  download: this.options.downloadHiddenColumns ? true : undefined,
1874
1878
  formatter,
1875
- headerTooltip: true,
1879
+ // render the tooltip as plain text: Tabulator injects string tooltips via innerHTML (XSS)
1880
+ headerTooltip: () => DocumentHelper.createElement("div", "", {
1881
+ textContent: column.displayName || column.name,
1882
+ }),
1876
1883
  headerWordWrap: true,
1877
1884
  accessorDownload: this.accessorDownload,
1878
1885
  titleFormatter: (cell, formatterParams, onRendered) => {