@syncfusion/ej2-treemap 27.2.2 → 28.1.39
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 +2 -2
- package/dist/ej2-treemap.min.js +3 -3
- package/dist/ej2-treemap.umd.min.js +3 -3
- package/dist/ej2-treemap.umd.min.js.map +1 -1
- package/dist/es6/ej2-treemap.es2015.js +427 -86
- package/dist/es6/ej2-treemap.es2015.js.map +1 -1
- package/dist/es6/ej2-treemap.es5.js +427 -86
- package/dist/es6/ej2-treemap.es5.js.map +1 -1
- package/dist/global/ej2-treemap.min.js +3 -3
- package/dist/global/ej2-treemap.min.js.map +1 -1
- package/dist/global/index.d.ts +2 -2
- package/package.json +12 -12
- package/src/treemap/layout/legend.js +53 -18
- package/src/treemap/layout/render-panel.js +12 -3
- package/src/treemap/model/image-export.js +2 -2
- package/src/treemap/model/pdf-export.js +2 -2
- package/src/treemap/model/print.js +2 -2
- package/src/treemap/model/theme.js +50 -2
- package/src/treemap/treemap-model.d.ts +8 -1
- package/src/treemap/treemap.d.ts +6 -0
- package/src/treemap/treemap.js +13 -6
- package/src/treemap/user-interaction/highlight-selection.js +225 -38
- package/src/treemap/user-interaction/tooltip.js +6 -1
- package/src/treemap/utils/enum.d.ts +4 -0
- package/src/treemap/utils/helper.d.ts +2 -1
- package/src/treemap/utils/helper.js +69 -19
package/dist/global/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* filename: index.d.ts
|
|
3
|
-
* version :
|
|
4
|
-
* Copyright Syncfusion Inc. 2001 -
|
|
3
|
+
* version : 28.1.39
|
|
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@
|
|
3
|
+
"_id": "@syncfusion/ej2-treemap@28.1.33",
|
|
4
4
|
"_inBundle": false,
|
|
5
|
-
"_integrity": "sha512
|
|
5
|
+
"_integrity": "sha512-El1k0YtGfUvHSLUWCCf99WYUOuUw90LIVZMDnC8iRwBFGPoZRktjx5h6hnZjs6XmrzVtBLksINCO4Os85tloSw==",
|
|
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
|
-
"_shasum": "
|
|
26
|
+
"_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-treemap/-/ej2-treemap-28.1.33.tgz",
|
|
27
|
+
"_shasum": "1fac964b894760375cc3c4b74d2542bbae61ea85",
|
|
28
28
|
"_spec": "@syncfusion/ej2-treemap@*",
|
|
29
|
-
"_where": "/jenkins/workspace/elease-
|
|
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": "~
|
|
39
|
-
"@syncfusion/ej2-compression": "~
|
|
40
|
-
"@syncfusion/ej2-data": "~
|
|
41
|
-
"@syncfusion/ej2-file-utils": "~
|
|
42
|
-
"@syncfusion/ej2-pdf-export": "~
|
|
43
|
-
"@syncfusion/ej2-svg-base": "~
|
|
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.38",
|
|
43
|
+
"@syncfusion/ej2-svg-base": "~28.1.37"
|
|
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": "
|
|
84
|
+
"version": "28.1.39",
|
|
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(
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
511
|
-
|
|
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
|
-
|
|
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
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
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 ?
|
|
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] :
|
|
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,
|
|
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
|
*/
|
package/src/treemap/treemap.d.ts
CHANGED
|
@@ -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
|
*/
|
package/src/treemap/treemap.js
CHANGED
|
@@ -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,
|
|
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
|
|
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 ||
|
|
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
|
-
|
|
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);
|