@syncfusion/ej2-lists 32.2.6 → 33.1.44

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.
@@ -67,6 +67,7 @@ var ListBase;
67
67
  showCheckBox: false,
68
68
  showIcon: false,
69
69
  enableHtmlSanitizer: false,
70
+ disableHtmlEncode: false,
70
71
  expandCollapse: false,
71
72
  fields: ListBase.defaultMappedFields,
72
73
  ariaAttributes: defaultAriaAttributes,
@@ -261,14 +262,10 @@ var ListBase;
261
262
  anchorElement = li.querySelector('.' + cssClass.anchorWrap);
262
263
  if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {
263
264
  var tooltipText = fieldData[fields.tooltip];
264
- if (options && options.enableHtmlSanitizer) {
265
- tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);
266
- }
267
- else {
268
- var tooltipTextElement = createElement('span', { innerHTML: tooltipText });
269
- tooltipText = tooltipTextElement.innerText;
270
- tooltipTextElement = null;
271
- }
265
+ tooltipText = getSanitizedText(tooltipText, curOpt);
266
+ var tooltipTextElement = createElement('span', { innerHTML: tooltipText });
267
+ tooltipText = tooltipTextElement.innerText;
268
+ tooltipTextElement = null;
272
269
  li.setAttribute('title', tooltipText);
273
270
  }
274
271
  if (curOpt.itemNavigable && checkboxElement.length) {
@@ -285,14 +282,10 @@ var ListBase;
285
282
  anchorElement = li.querySelector('.' + cssClass.anchorWrap);
286
283
  if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {
287
284
  var tooltipText = fieldData[fields.tooltip];
288
- if (options && options.enableHtmlSanitizer) {
289
- tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);
290
- }
291
- else {
292
- var tooltipTextElement = createElement('span', { innerHTML: tooltipText });
293
- tooltipText = tooltipTextElement.innerText;
294
- tooltipTextElement = null;
295
- }
285
+ tooltipText = getSanitizedText(tooltipText, curOpt);
286
+ var tooltipTextElement = createElement('span', { innerHTML: tooltipText });
287
+ tooltipText = tooltipTextElement.innerText;
288
+ tooltipTextElement = null;
296
289
  li.setAttribute('title', tooltipText);
297
290
  }
298
291
  if (Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {
@@ -824,6 +817,7 @@ var ListBase;
824
817
  fieldData[fields.text] : (fieldData[fields.text] || '');
825
818
  value = fieldData[fields.value];
826
819
  }
820
+ text = getSanitizedText(text, curOpt);
827
821
  var elementID;
828
822
  if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])
829
823
  && fieldData[fields.id] !== '') {
@@ -840,11 +834,8 @@ var ListBase;
840
834
  if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled].toString() === 'false') {
841
835
  li.classList.add(cssClass.disabled);
842
836
  }
843
- if (options && options.enableHtmlSanitizer) {
844
- text = SanitizeHtmlHelper.sanitize(text);
845
- }
846
837
  if (grpLI) {
847
- li.innerText = text;
838
+ li[getDomSetter(curOpt)] = text;
848
839
  }
849
840
  else {
850
841
  li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);
@@ -857,7 +848,7 @@ var ListBase;
857
848
  }
858
849
  if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&
859
850
  fieldData[fields.urlAttributes].href))) {
860
- li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));
851
+ li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable, curOpt));
861
852
  }
862
853
  else {
863
854
  if (innerElements.length && curOpt.itemNavigable) {
@@ -908,9 +899,10 @@ var ListBase;
908
899
  * @param {string} text - The text content of the anchor tag.
909
900
  * @param {HTMLElement[]} innerElements - Optional array of inner elements to append to the anchor tag.
910
901
  * @param {boolean} isFullNavigation - Indicates whether the anchor tag should be for full navigation.
902
+ * @param {ListBaseOptions} [options] - Optional ListBase options.
911
903
  * @returns {HTMLElement} The created anchor tag element.
912
904
  */
913
- function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {
905
+ function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation, options) {
914
906
  var fieldData = getFieldValues(dataSource, fields);
915
907
  var attr = { href: fieldData[fields.url] };
916
908
  if (Object.prototype.hasOwnProperty.call(fieldData, fields.urlAttributes) && fieldData[fields.urlAttributes]) {
@@ -919,8 +911,11 @@ var ListBase;
919
911
  fieldData[fields.urlAttributes].href;
920
912
  }
921
913
  var anchorTag;
914
+ var curOpt = extend({}, defaultListBaseOptions, options);
915
+ var safeText = getSanitizedText(text, curOpt);
922
916
  if (!isFullNavigation) {
923
- anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });
917
+ anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });
918
+ anchorTag[getDomSetter(curOpt)] = safeText;
924
919
  }
925
920
  else {
926
921
  anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });
@@ -928,7 +923,7 @@ var ListBase;
928
923
  if (innerElements && innerElements.length) {
929
924
  append(innerElements, anchorWrapper);
930
925
  }
931
- anchorWrapper.appendChild(document.createTextNode(text));
926
+ anchorWrapper.appendChild(document.createTextNode(safeText));
932
927
  append([anchorWrapper], anchorTag);
933
928
  }
934
929
  setAttribute(anchorTag, attr);
@@ -960,9 +955,7 @@ var ListBase;
960
955
  grpLI = (Object.prototype.hasOwnProperty.call(item, 'isHeader') && item.isHeader)
961
956
  ? true : false;
962
957
  }
963
- if (options && options.enableHtmlSanitizer) {
964
- text = SanitizeHtmlHelper.sanitize(text);
965
- }
958
+ text = getSanitizedText(text, curOpt);
966
959
  var li = createElement('li', {
967
960
  className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),
968
961
  attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?
@@ -1012,19 +1005,14 @@ var ListBase;
1012
1005
  });
1013
1006
  if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&
1014
1007
  fieldData[fields.urlAttributes].href))) {
1015
- innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));
1008
+ innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable, curOpt));
1016
1009
  }
1017
1010
  else {
1018
1011
  var element = createElement('span', {
1019
1012
  className: cssClass.text,
1020
1013
  attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})
1021
1014
  });
1022
- if (options && options.enableHtmlSanitizer) {
1023
- element.innerText = text;
1024
- }
1025
- else {
1026
- element.innerHTML = text;
1027
- }
1015
+ element[getDomSetter(curOpt)] = text;
1028
1016
  innerDiv.appendChild(element);
1029
1017
  }
1030
1018
  li.appendChild(innerDiv);
@@ -1080,6 +1068,14 @@ var ListBase;
1080
1068
  return liElement;
1081
1069
  }
1082
1070
  ListBase.generateIcon = generateIcon;
1071
+ function getDomSetter(options) {
1072
+ return options.disableHtmlEncode ? 'textContent' : 'innerHTML';
1073
+ }
1074
+ ListBase.getDomSetter = getDomSetter;
1075
+ function getSanitizedText(text, options) {
1076
+ return options.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(text) : text;
1077
+ }
1078
+ ListBase.getSanitizedText = getSanitizedText;
1083
1079
  })(ListBase || (ListBase = {}));
1084
1080
  /**
1085
1081
  * Used to get dataSource item from complex data using fields.
@@ -1423,13 +1419,13 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
1423
1419
  if (this.headerEle === undefined && this.showHeader) {
1424
1420
  this.headerEle = this.createElement('div', { className: classNames.header });
1425
1421
  var innerHeaderEle = this.createElement('span', { className: classNames.headerText });
1426
- if (this.enableHtmlSanitizer) {
1427
- this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);
1428
- innerHeaderEle.innerText = this.headerTitle;
1429
- }
1430
- else {
1431
- innerHeaderEle.innerHTML = this.headerTitle;
1422
+ var curOpt = this.listBaseOption || {
1423
+ enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode
1424
+ };
1425
+ if (curOpt.enableHtmlSanitizer) {
1426
+ this.setProperties({ headerTitle: ListBase.getSanitizedText(this.headerTitle, curOpt) }, true);
1432
1427
  }
1428
+ innerHeaderEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(this.headerTitle, curOpt);
1433
1429
  var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });
1434
1430
  var hedBackButton = this.createElement('div', {
1435
1431
  className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,
@@ -1460,10 +1456,10 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
1460
1456
  this.headerEle.style.display = '';
1461
1457
  var textEle = this.headerEle.querySelector('.' + classNames.headerText);
1462
1458
  var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);
1463
- if (this.enableHtmlSanitizer) {
1464
- text = SanitizeHtmlHelper.sanitize(text);
1465
- }
1466
- textEle.innerHTML = text;
1459
+ var curOpt = this.listBaseOption || {
1460
+ enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode
1461
+ };
1462
+ textEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(text, curOpt);
1467
1463
  if (this.headerTemplate && showBack) {
1468
1464
  textEle.parentElement.classList.remove('header');
1469
1465
  this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');
@@ -1553,7 +1549,8 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
1553
1549
  itemCreated: this.renderCheckbox.bind(this),
1554
1550
  templateID: "" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,
1555
1551
  groupTemplateID: "" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,
1556
- enableHtmlSanitizer: this.enableHtmlSanitizer
1552
+ enableHtmlSanitizer: this.enableHtmlSanitizer,
1553
+ disableHtmlEncode: this.disableHtmlEncode
1557
1554
  };
1558
1555
  this.initialization();
1559
1556
  };
@@ -3241,6 +3238,9 @@ var ListView = /** @__PURE__ @class */ (function (_super) {
3241
3238
  __decorate([
3242
3239
  Property(true)
3243
3240
  ], ListView.prototype, "enableHtmlSanitizer", void 0);
3241
+ __decorate([
3242
+ Property(true)
3243
+ ], ListView.prototype, "disableHtmlEncode", void 0);
3244
3244
  __decorate([
3245
3245
  Property('')
3246
3246
  ], ListView.prototype, "height", void 0);