@syncfusion/ej2-treemap 27.1.55 → 28.1.33

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,7 +1,7 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 27.1.55
4
- * Copyright Syncfusion Inc. 2001 - 2023. All rights reserved.
3
+ * version : 28.1.33
4
+ * Copyright Syncfusion Inc. 2001 - 2024. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
7
7
  * licensing@syncfusion.com. Any infringement will be prosecuted under
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-treemap@*",
3
- "_id": "@syncfusion/ej2-treemap@27.1.53",
3
+ "_id": "@syncfusion/ej2-treemap@16.31.24",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-+hzaGEi6Xd/IV3niTwsIGdPmZFsXIi8dGAtvOnxl6v5LelfRSEOt+2lPfCEo8kt9RsWnB6vJmu58r0gLfVp4zQ==",
5
+ "_integrity": "sha512-9aUvRASvPQAfbKJeO1ZkYVeN7XPOC9S1yJNmWctqKH+n3QGRHv0haMfQEzXuQM4yTL2OKocXe1LxLZRGwEvQKw==",
6
6
  "_location": "/@syncfusion/ej2-treemap",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -23,10 +23,10 @@
23
23
  "/@syncfusion/ej2-react-treemap",
24
24
  "/@syncfusion/ej2-vue-treemap"
25
25
  ],
26
- "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-treemap/-/ej2-treemap-27.1.53.tgz",
27
- "_shasum": "99fd9c5350c65495873ddfa91d38fe5dda59b7ba",
26
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-release/@syncfusion/ej2-treemap/-/ej2-treemap-16.31.24.tgz",
27
+ "_shasum": "93114e20ce6ed82f824744baeaa149c7a1bd0f9c",
28
28
  "_spec": "@syncfusion/ej2-treemap@*",
29
- "_where": "/jenkins/workspace/elease-automation_release_27.1.1/packages/included",
29
+ "_where": "/jenkins/workspace/elease-automation_release_28.1.1/packages/included",
30
30
  "author": {
31
31
  "name": "Syncfusion Inc."
32
32
  },
@@ -35,12 +35,12 @@
35
35
  },
36
36
  "bundleDependencies": false,
37
37
  "dependencies": {
38
- "@syncfusion/ej2-base": "~27.1.55",
39
- "@syncfusion/ej2-compression": "~27.1.53",
40
- "@syncfusion/ej2-data": "~27.1.52",
41
- "@syncfusion/ej2-file-utils": "~27.1.53",
42
- "@syncfusion/ej2-pdf-export": "~27.1.51",
43
- "@syncfusion/ej2-svg-base": "~27.1.50"
38
+ "@syncfusion/ej2-base": "~28.1.33",
39
+ "@syncfusion/ej2-compression": "~28.1.33",
40
+ "@syncfusion/ej2-data": "~28.1.33",
41
+ "@syncfusion/ej2-file-utils": "~28.1.33",
42
+ "@syncfusion/ej2-pdf-export": "~28.1.33",
43
+ "@syncfusion/ej2-svg-base": "~28.1.33"
44
44
  },
45
45
  "deprecated": false,
46
46
  "description": "Essential JS 2 TreeMap Components",
@@ -81,6 +81,6 @@
81
81
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
82
82
  },
83
83
  "typings": "index.d.ts",
84
- "version": "27.1.55",
84
+ "version": "28.1.33",
85
85
  "sideEffects": false
86
86
  }
@@ -1,5 +1,5 @@
1
1
  import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';
2
- import { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';
2
+ import { Browser, isNullOrUndefined, EventHandler, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';
3
3
  import { renderTextElement, textTrim } from '../utils/helper';
4
4
  import { legendItemRendering, legendRendering } from '../model/constants';
5
5
  /**
@@ -77,7 +77,7 @@ var TreeMapLegend = /** @class */ (function () {
77
77
  var defaultSize = 25;
78
78
  var textPadding = 10;
79
79
  var position = legend.position;
80
- var legendTitle = legend.title.text;
80
+ var legendTitle = treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(legend.title.text) : legend.title.text;
81
81
  var titleTextStyle = legend.titleStyle;
82
82
  var legendMode = legend.mode;
83
83
  var shapeX = 0;
@@ -119,7 +119,8 @@ var TreeMapLegend = /** @class */ (function () {
119
119
  if (isNullOrUndefined(this.totalPages[this.page])) {
120
120
  this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };
121
121
  }
122
- var legendTextSize = measureText(legendItem['legendName'], itemTextStyle);
122
+ var legendTextSize = measureText(treemap.enableHtmlSanitizer ?
123
+ SanitizeHtmlHelper.sanitize(legendItem['legendName']) : legendItem['legendName'], itemTextStyle);
123
124
  this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);
124
125
  if (i === 0) {
125
126
  startX_1 = shapeX = (leftPadding + (shapeWidth / 2));
@@ -327,7 +328,16 @@ var TreeMapLegend = /** @class */ (function () {
327
328
  if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {
328
329
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
329
330
  var childElement = this.treemap.drilledLegendItems;
330
- legendFillColor = childElement['data']['options']['fill'];
331
+ if (!isNullOrUndefined(childElement['data']['options'])) {
332
+ legendFillColor = childElement['data']['options']['fill'];
333
+ }
334
+ else {
335
+ for (var k = 0; k < childElement.length; k++) {
336
+ legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :
337
+ childElement[k]['data'][this.treemap.colorValuePath];
338
+ break;
339
+ }
340
+ }
331
341
  if (childElement['data']['isDrilled']) {
332
342
  child = findChildren(childElement['data'])['values'];
333
343
  }
@@ -357,7 +367,8 @@ var TreeMapLegend = /** @class */ (function () {
357
367
  ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :
358
368
  child[i]['data'][this.treemap.colorValuePath],
359
369
  legendData: [],
360
- itemArea: child[i]['weight']
370
+ itemArea: child[i]['weight'],
371
+ levelOrderName: child[i]['levelOrderName']
361
372
  });
362
373
  }
363
374
  }
@@ -483,7 +494,7 @@ var TreeMapLegend = /** @class */ (function () {
483
494
  this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);
484
495
  legendIndex++;
485
496
  }
486
- else if (colorMapProcess && !isDuplicate) {
497
+ else if (colorMapProcess) {
487
498
  colorMapProcess = false;
488
499
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
489
500
  this.legendCollections[isAddData['value']]['legendData'].push(data[i]);
@@ -501,14 +512,19 @@ var TreeMapLegend = /** @class */ (function () {
501
512
  if (isNullOrUndefined(this.outOfRangeLegend) && !isDuplicate) {
502
513
  this.legendCollections.push({
503
514
  actualValue: labelLegend, legendData: [],
504
- legendName: labelLegend, legendFill: outfill
515
+ legendName: labelLegend, legendFill: outfill, groupIndex: (!isLeafItem || groupIndex > -1) ? groupIndex : -1
505
516
  });
506
517
  otherIndex = this.legendCollections.length;
507
518
  this.outOfRangeLegend = this.legendCollections[otherIndex - 1];
508
519
  legendIndex++;
509
520
  }
510
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
511
- this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);
521
+ for (var k = this.legendCollections.length - 1; k >= 0; k--) {
522
+ if (this.legendCollections[k]['groupIndex'] === data[i]['groupIndex']) {
523
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
524
+ this.legendCollections[k]['legendData'].push(data[i]);
525
+ break;
526
+ }
527
+ }
512
528
  }
513
529
  }
514
530
  }
@@ -597,7 +613,8 @@ var TreeMapLegend = /** @class */ (function () {
597
613
  - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);
598
614
  }
599
615
  }
600
- textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');
616
+ var text = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(item['text'])) : item['text'];
617
+ textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', text, '', '');
601
618
  renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);
602
619
  this.legendGroup.appendChild(render.drawRectangle(rectOptions));
603
620
  }
@@ -646,7 +663,7 @@ var TreeMapLegend = /** @class */ (function () {
646
663
  var _loop_1 = function (i) {
647
664
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
648
665
  var collection = this_1.totalPages[page]['Collection'][i];
649
- var legendText = collection['DisplayText'];
666
+ var legendText = this_1.treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(collection['DisplayText']) : collection['DisplayText'];
650
667
  var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });
651
668
  legendElement.setAttribute('aria-label', legendText + ' Legend');
652
669
  legendElement.setAttribute('role', 'region');
@@ -755,7 +772,7 @@ var TreeMapLegend = /** @class */ (function () {
755
772
  TreeMapLegend.prototype.renderLegendTitle = function () {
756
773
  var legend = this.treemap.legendSettings;
757
774
  var textStyle = legend.titleStyle;
758
- var legendTitle = legend.title.text;
775
+ var legendTitle = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(legend.title.text)) : legend.title.text;
759
776
  var textOptions;
760
777
  var spacing = 10;
761
778
  var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);
@@ -779,6 +796,7 @@ var TreeMapLegend = /** @class */ (function () {
779
796
  var treemap = this.treemap;
780
797
  var target = e.target;
781
798
  var interactiveId = treemap.element.id + '_Interactive_Legend';
799
+ var pointerDrawn = false;
782
800
  target = !(e.type.indexOf('touch') > -1) ? target :
783
801
  document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);
784
802
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -796,7 +814,7 @@ var TreeMapLegend = /** @class */ (function () {
796
814
  var legendElement = void 0;
797
815
  targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];
798
816
  var svgRect = treemap.svgObject.getBoundingClientRect();
799
- for (var i = 0; i < this.legendCollections.length; i++) {
817
+ for (var i = 0; i < this.legendCollections.length && !pointerDrawn; i++) {
800
818
  currentData = this.legendCollections[i];
801
819
  legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);
802
820
  legendRect = legendElement.getBoundingClientRect();
@@ -804,16 +822,33 @@ var TreeMapLegend = /** @class */ (function () {
804
822
  fill = legendElement.getAttribute('fill');
805
823
  stroke = legend.shapeBorder.color;
806
824
  strokeWidth = legend.shapeBorder.width;
807
- if (!isNullOrUndefined(currentData['legendData'])) {
825
+ if (!isNullOrUndefined(currentData['legendData']) && currentData['legendData'].length > 0) {
808
826
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
809
827
  data = currentData['legendData'];
810
- for (var j = 0; j < data.length; j++) {
811
- if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {
812
- this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);
813
- break;
828
+ var valuePath = treemap.rangeColorValuePath;
829
+ if (targetItem['levelOrderName'].indexOf(this.legendCollections[i]['legendName']) > -1) {
830
+ this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);
831
+ pointerDrawn = true;
832
+ }
833
+ else {
834
+ for (var j = 0; j < data.length; j++) {
835
+ if ((treemap.rangeColorValuePath && treemap.leafItemSettings.colorMapping.length > 0)
836
+ ? data[j]['data'][valuePath] === targetItem['data'][valuePath]
837
+ : (data[j]['levelOrderName'] === targetItem['levelOrderName'] ||
838
+ data[j]['levelOrderName'].indexOf(targetItem['levelOrderName']) > -1)) {
839
+ this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);
840
+ pointerDrawn = true;
841
+ break;
842
+ }
814
843
  }
815
844
  }
816
845
  }
846
+ else if (this.treemap.leafItemSettings.colorMapping.length === 0 && this.treemap.palette) {
847
+ if (targetItem['levelOrderName'].indexOf(currentData['levelOrderName']) > -1) {
848
+ this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);
849
+ pointerDrawn = true;
850
+ }
851
+ }
817
852
  }
818
853
  }
819
854
  else {
@@ -1,5 +1,5 @@
1
1
  import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';
2
- import { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';
2
+ import { isNullOrUndefined, createElement, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';
3
3
  import { findChildren, renderTextElement } from '../utils/helper';
4
4
  import { itemRendering } from '../model/constants';
5
5
  /**
@@ -472,7 +472,8 @@ var LayoutPanel = /** @class */ (function () {
472
472
  groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;
473
473
  itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });
474
474
  gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;
475
- var treemapItemRect = this_1.treemap.totalRect ? convertToContainer(this_1.treemap.totalRect) : this_1.treemap.areaRect;
475
+ var treemapItemRect = this_1.treemap.totalRect ? (treeMap.legendSettings.visible ? this_1.treemap.totalRect
476
+ : convertToContainer(this_1.treemap.totalRect)) : this_1.treemap.areaRect;
476
477
  if (treeMap.layoutType === 'Squarified') {
477
478
  rect.width = Math.abs(rect.x - rect.width) - gap;
478
479
  rect.height = Math.abs(rect.y - rect.height) - gap;
@@ -515,6 +516,9 @@ var LayoutPanel = /** @class */ (function () {
515
516
  renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?
516
517
  !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :
517
518
  treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;
519
+ if (treeMap.enableHtmlSanitizer) {
520
+ renderText = SanitizeHtmlHelper.sanitize(renderText);
521
+ }
518
522
  var fontFamily = (isLeafItem ? leaf.labelStyle.fontFamily : levels[index].headerStyle.fontFamily);
519
523
  fontFamily = fontFamily || this_1.treemap.themeStyle.labelFontFamily;
520
524
  var size = (isLeafItem ? leaf.labelStyle.size : levels[index].headerStyle.size);
@@ -583,6 +587,7 @@ var LayoutPanel = /** @class */ (function () {
583
587
  secondaryEle.appendChild(templateGroup);
584
588
  }
585
589
  this.treemap.svgObject.appendChild(this.layoutGroup);
590
+ maintainSelection(this.treemap, this.layoutGroup, 'treeMapSelection');
586
591
  };
587
592
  LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {
588
593
  var padding = 5;
@@ -672,7 +677,8 @@ var LayoutPanel = /** @class */ (function () {
672
677
  for (var i = 0; i < parentData.length; i++) {
673
678
  if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {
674
679
  itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?
675
- parentData[i]['data'][treemap.colorValuePath] : (!isNullOrUndefined(treemap.palette) && treemap.palette.length > 0) ?
680
+ parentData[i]['data'][treemap.colorValuePath] : !isNullOrUndefined(item['options']) ?
681
+ item['options'].fill : (!isNullOrUndefined(treemap.palette) && treemap.palette.length > 0) ?
676
682
  treemap.palette[i % treemap.palette.length] : '#808080';
677
683
  }
678
684
  }
@@ -705,6 +711,9 @@ var LayoutPanel = /** @class */ (function () {
705
711
  template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);
706
712
  }
707
713
  }
714
+ if (this.treemap.enableHtmlSanitizer && typeof template === 'string') {
715
+ template = SanitizeHtmlHelper.sanitize(template);
716
+ }
708
717
  var labelElement;
709
718
  if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {
710
719
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -38,12 +38,12 @@ var ImageExport = /** @class */ (function () {
38
38
  var backgroundElement = exportElement.childNodes[0];
39
39
  if (!isNullOrUndefined(backgroundElement)) {
40
40
  var backgroundColor = backgroundElement.getAttribute('fill');
41
- if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||
41
+ if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||
42
42
  treeMap.theme === 'Fluent2')
43
43
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
44
44
  exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');
45
45
  }
46
- else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||
46
+ else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||
47
47
  treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')
48
48
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
49
49
  exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');
@@ -40,12 +40,12 @@ var PdfExport = /** @class */ (function () {
40
40
  var backgroundElement = exportElement.childNodes[0];
41
41
  if (!isNullOrUndefined(backgroundElement)) {
42
42
  var backgroundColor = backgroundElement.getAttribute('fill');
43
- if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||
43
+ if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||
44
44
  treeMap.theme === 'Fluent2')
45
45
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
46
46
  exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');
47
47
  }
48
- else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||
48
+ else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||
49
49
  treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')
50
50
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
51
51
  exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');
@@ -67,12 +67,12 @@ var Print = /** @class */ (function () {
67
67
  backgroundElement = backgroundElement.childNodes[0];
68
68
  if (!isNullOrUndefined(backgroundElement)) {
69
69
  var backgroundColor = backgroundElement.getAttribute('fill');
70
- if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||
70
+ if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||
71
71
  treeMap.theme === 'Fluent2')
72
72
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
73
73
  backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');
74
74
  }
75
- else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||
75
+ else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||
76
76
  treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')
77
77
  && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {
78
78
  backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');
@@ -77,9 +77,9 @@ export function getThemeStyle(theme) {
77
77
  fontWeight: 'Normal',
78
78
  subtitleFontSize: '14px',
79
79
  legendFontSize: '13px',
80
+ labelFontFamily: defaultFont,
80
81
  fontFamily: 'Roboto, Noto, Sans-serif',
81
82
  labelFontSize: '12px',
82
- labelFontFamily: defaultFont,
83
83
  legendBorderColor: '#000000',
84
84
  legendBorderWidth: 0
85
85
  };
@@ -156,6 +156,54 @@ export function getThemeStyle(theme) {
156
156
  legendBorderWidth: 0
157
157
  };
158
158
  break;
159
+ case 'tailwind3':
160
+ style = {
161
+ backgroundColor: 'transparent',
162
+ titleFontColor: '#111827',
163
+ titleFontWeight: '600',
164
+ subTitleFontColor: '#111827',
165
+ tooltipFillColor: '#111827',
166
+ tooltipFontColor: '#F9FAFB',
167
+ tooltipFontSize: '12px',
168
+ tooltipFillOpacity: 1,
169
+ tooltipTextOpacity: 1,
170
+ legendTitleColor: '#111827',
171
+ legendTextColor: '#111827',
172
+ fontFamily: 'Inter',
173
+ fontSize: '14px',
174
+ fontWeight: '400',
175
+ subtitleFontSize: '12px',
176
+ legendFontSize: '12px',
177
+ labelFontFamily: 'Inter',
178
+ labelFontSize: '12px',
179
+ legendBorderColor: '#000000',
180
+ legendBorderWidth: 0
181
+ };
182
+ break;
183
+ case 'tailwind3dark':
184
+ style = {
185
+ backgroundColor: 'transparent',
186
+ titleFontColor: '#FFFFFF',
187
+ titleFontWeight: '600',
188
+ subTitleFontColor: '#FFFFFF',
189
+ tooltipFillColor: '#F9FAFB',
190
+ tooltipFontColor: '#1F2937',
191
+ tooltipFontSize: '12px',
192
+ tooltipFillOpacity: 1,
193
+ tooltipTextOpacity: 1,
194
+ legendTitleColor: '#FFFFFF',
195
+ legendTextColor: '#FFFFFF',
196
+ fontFamily: 'Inter',
197
+ fontWeight: '400',
198
+ fontSize: '14px',
199
+ subtitleFontSize: '12px',
200
+ legendFontSize: '12px',
201
+ labelFontFamily: 'Inter',
202
+ labelFontSize: '12px',
203
+ legendBorderColor: '#000000',
204
+ legendBorderWidth: 0
205
+ };
206
+ break;
159
207
  case 'bootstrap5':
160
208
  style = {
161
209
  backgroundColor: 'transparent',
@@ -387,9 +435,9 @@ export function getThemeStyle(theme) {
387
435
  fontWeight: 'Normal',
388
436
  subtitleFontSize: '14px',
389
437
  legendFontSize: '13px',
390
- labelFontFamily: defaultFont,
391
438
  fontFamily: 'Roboto, Noto, Sans-serif',
392
439
  labelFontSize: '12px',
440
+ labelFontFamily: defaultFont,
393
441
  legendBorderColor: '#000000',
394
442
  legendBorderWidth: 0
395
443
  };
@@ -1,4 +1,4 @@
1
- import { Component, NotifyPropertyChanges, INotifyPropertyChanged, Property, extend, Fetch } from '@syncfusion/ej2-base';import { Complex, Collection, ModuleDeclaration } from '@syncfusion/ej2-base';import { Event, EmitType, Internationalization } from '@syncfusion/ej2-base';import { SvgRenderer } from '@syncfusion/ej2-svg-base';import { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';import { BorderModel, TitleSettingsModel, MarginModel, LevelSettingsModel, FontModel } from './model/base-model';import { LeafItemSettingsModel, TooltipSettingsModel, LegendSettingsModel, InitialDrillSettingsModel } from './model/base-model';import { HighlightSettingsModel, SelectionSettingsModel } from './model/base-model';import { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';import { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';import { LayoutMode, TreeMapTheme, RenderingMode } from './utils/enum';import { ILoadEventArgs, ILoadedEventArgs, IPrintEventArgs } from '../treemap/model/interface';import { ILegendItemRenderingEventArgs, ILegendRenderingEventArgs } from '../treemap/model/interface';import { IItemRenderingEventArgs, IResizeEventArgs, IDoubleClickEventArgs, IRightClickEventArgs } from '../treemap/model/interface';import { IItemClickEventArgs, IItemMoveEventArgs, IClickEventArgs, IMouseMoveEventArgs } from '../treemap/model/interface';import { IDrillStartEventArgs, IItemSelectedEventArgs, ITreeMapTooltipRenderEventArgs } from '../treemap/model/interface';import { IItemHighlightEventArgs, IDrillEndEventArgs, IThemeStyle } from '../treemap/model/interface';import { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';import { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';import { findPosition, Location, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';import { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';import { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';import { LayoutPanel } from './layout/render-panel';import { TreeMapTooltip } from './user-interaction/tooltip';import { ExportType } from '../treemap/utils/enum';import { PdfPageOrientation } from '@syncfusion/ej2-pdf-export';import { TreeMapHighlight, TreeMapSelection } from './user-interaction/highlight-selection';import { TreeMapLegend } from './layout/legend';import { DataManager, Query } from '@syncfusion/ej2-data';import { getThemeStyle } from './model/theme';import { Print } from './model/print';import { ImageExport } from './model/image-export';import { PdfExport } from './model/pdf-export';
1
+ import { Component, NotifyPropertyChanges, INotifyPropertyChanged, Property, extend, Fetch, SanitizeHtmlHelper } from '@syncfusion/ej2-base';import { Complex, Collection, ModuleDeclaration } from '@syncfusion/ej2-base';import { Event, EmitType, Internationalization } from '@syncfusion/ej2-base';import { SvgRenderer } from '@syncfusion/ej2-svg-base';import { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';import { BorderModel, TitleSettingsModel, MarginModel, LevelSettingsModel, FontModel } from './model/base-model';import { LeafItemSettingsModel, TooltipSettingsModel, LegendSettingsModel, InitialDrillSettingsModel } from './model/base-model';import { HighlightSettingsModel, SelectionSettingsModel } from './model/base-model';import { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';import { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';import { LayoutMode, TreeMapTheme, RenderingMode } from './utils/enum';import { ILoadEventArgs, ILoadedEventArgs, IPrintEventArgs } from '../treemap/model/interface';import { ILegendItemRenderingEventArgs, ILegendRenderingEventArgs } from '../treemap/model/interface';import { IItemRenderingEventArgs, IResizeEventArgs, IDoubleClickEventArgs, IRightClickEventArgs } from '../treemap/model/interface';import { IItemClickEventArgs, IItemMoveEventArgs, IClickEventArgs, IMouseMoveEventArgs } from '../treemap/model/interface';import { IDrillStartEventArgs, IItemSelectedEventArgs, ITreeMapTooltipRenderEventArgs } from '../treemap/model/interface';import { IItemHighlightEventArgs, IDrillEndEventArgs, IThemeStyle } from '../treemap/model/interface';import { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent, legendMaintain, removeLegend } from '../treemap/utils/helper';import { removeClassNames, textFormatter } from '../treemap/utils/helper';import { findPosition, Location, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';import { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';import { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';import { LayoutPanel } from './layout/render-panel';import { TreeMapTooltip } from './user-interaction/tooltip';import { ExportType } from '../treemap/utils/enum';import { PdfPageOrientation } from '@syncfusion/ej2-pdf-export';import { TreeMapHighlight, TreeMapSelection } from './user-interaction/highlight-selection';import { TreeMapLegend } from './layout/legend';import { DataManager, Query } from '@syncfusion/ej2-data';import { getThemeStyle } from './model/theme';import { Print } from './model/print';import { ImageExport } from './model/image-export';import { PdfExport } from './model/pdf-export';
2
2
  import {ComponentModel} from '@syncfusion/ej2-base';
3
3
 
4
4
  /**
@@ -166,6 +166,13 @@ export interface TreeMapModel extends ComponentModel{
166
166
  */
167
167
  drillDownView?: boolean;
168
168
 
169
+ /**
170
+ * Specifies whether to enable the rendering of untrusted HTML values in the TreeMap. If `enableHtmlSanitizer` set to **true**, the component will sanitize any suspected untrusted strings and scripts before rendering them.
171
+ *
172
+ * @default false
173
+ */
174
+ enableHtmlSanitizer?: boolean;
175
+
169
176
  /**
170
177
  * Specifies the options for customizing the initial drill down in treemap.
171
178
  */
@@ -218,6 +218,12 @@ export declare class TreeMap extends Component<HTMLElement> implements INotifyPr
218
218
  * @default false
219
219
  */
220
220
  drillDownView: boolean;
221
+ /**
222
+ * Specifies whether to enable the rendering of untrusted HTML values in the TreeMap. If `enableHtmlSanitizer` set to **true**, the component will sanitize any suspected untrusted strings and scripts before rendering them.
223
+ *
224
+ * @default false
225
+ */
226
+ enableHtmlSanitizer: boolean;
221
227
  /**
222
228
  * Specifies the options for customizing the initial drill down in treemap.
223
229
  */
@@ -20,15 +20,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
20
20
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
21
  return c > 3 && r && Object.defineProperty(target, key, r), r;
22
22
  };
23
- import { Component, NotifyPropertyChanges, Property, extend, Fetch } from '@syncfusion/ej2-base';
23
+ import { Component, NotifyPropertyChanges, Property, extend, Fetch, SanitizeHtmlHelper } from '@syncfusion/ej2-base';
24
24
  import { Complex, Collection } from '@syncfusion/ej2-base';
25
25
  import { Event, Internationalization } from '@syncfusion/ej2-base';
26
26
  import { SvgRenderer } from '@syncfusion/ej2-svg-base';
27
27
  import { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';
28
28
  import { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';
29
29
  import { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';
30
- import { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';
31
- import { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';
30
+ import { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent, legendMaintain, removeLegend } from '../treemap/utils/helper';
31
+ import { removeClassNames, textFormatter } from '../treemap/utils/helper';
32
32
  import { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';
33
33
  import { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';
34
34
  import { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';
@@ -154,6 +154,9 @@ var TreeMap = /** @class */ (function (_super) {
154
154
  }
155
155
  this.layout.processLayoutPanel();
156
156
  this.element.appendChild(this.svgObject);
157
+ if (!isNullOrUndefined(this.treeMapLegendModule) && this.legendSettings.visible) {
158
+ legendMaintain(this, this.treeMapLegendModule.legendGroup);
159
+ }
157
160
  this.elementChange();
158
161
  this.trigger(loaded, { treemap: this, isResized: this.isResize });
159
162
  this.isResize = false;
@@ -249,14 +252,15 @@ var TreeMap = /** @class */ (function (_super) {
249
252
  if (isNullOrUndefined(groupEle)) {
250
253
  groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });
251
254
  }
252
- var trimmedTitle = textTrim(width, title.text, style);
255
+ var titleText = this.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(title.text)) : title.text;
256
+ var trimmedTitle = textTrim(width, titleText, style);
253
257
  var elementSize = measureText(trimmedTitle, style);
254
258
  var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;
255
259
  var location_1 = findPosition(rect, title.alignment, elementSize, type);
256
260
  var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);
257
261
  var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);
258
262
  var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);
259
- element.setAttribute('aria-label', title.description || title.text);
263
+ element.setAttribute('aria-label', title.description || titleText);
260
264
  element.setAttribute('role', 'region');
261
265
  element.setAttribute('tabindex', this.tabIndex.toString());
262
266
  if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {
@@ -1046,7 +1050,7 @@ var TreeMap = /** @class */ (function (_super) {
1046
1050
  }
1047
1051
  removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);
1048
1052
  if (this.treeMapHighlightModule) {
1049
- removeShape(this.treeMapHighlightModule.shapeHighlightCollection);
1053
+ removeLegend(this.treeMapHighlightModule.shapeHighlightCollection, this);
1050
1054
  this.treeMapHighlightModule.highLightId = '';
1051
1055
  }
1052
1056
  };
@@ -1294,6 +1298,9 @@ var TreeMap = /** @class */ (function (_super) {
1294
1298
  __decorate([
1295
1299
  Property(false)
1296
1300
  ], TreeMap.prototype, "drillDownView", void 0);
1301
+ __decorate([
1302
+ Property(false)
1303
+ ], TreeMap.prototype, "enableHtmlSanitizer", void 0);
1297
1304
  __decorate([
1298
1305
  Complex({}, InitialDrillSettings)
1299
1306
  ], TreeMap.prototype, "initialDrillDown", void 0);