Skip to content

Commit a5fa0a5

Browse files
author
pipeline
committed
v32.2.8 is released
1 parent 80b964d commit a5fa0a5

File tree

119 files changed

+4373
-294
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+4373
-294
lines changed

controls/barcodegenerator/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 32.2.7 (2026-02-24)
5+
## 32.2.8 (2025-12-22)
66

77
### Barcode
88

controls/blockeditor/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 32.2.7 (2026-02-24)
5+
## 32.2.8 (2025-12-22)
66

77
### Block Editor
88

controls/calendars/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 32.2.7 (2026-02-24)
5+
## 32.2.8 (2025-12-22)
66

77
### DatePicker
88

controls/charts/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 32.2.7 (2026-02-24)
5+
## 32.2.8 (2025-12-22)
66

77
### Chart
88

controls/charts/src/chart/series/data-label.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ export class DataLabel {
204204
this.isDataLabelShape(argsData);
205205
this.markerHeight = series.type === 'Bubble' ? (point.regions[0].height / 2) : this.markerHeight;
206206
if (argsData.template !== null) {
207-
this.createDataLabelTemplate(element, series, dataLabel, point, argsData, i, this.chart.redraw);
207+
this.createDataLabelTemplate(element, series, dataLabel, point, argsData, i, this.chart.redraw, angle);
208208
} else {
209209
if (dataLabel.enableRotation) {
210210
textSize = rotateTextSize(dataLabel.font, argsData.text, angle, this.chart,
@@ -213,7 +213,7 @@ export class DataLabel {
213213
else {
214214
textSize = measureText(argsData.text, dataLabel.font, this.chart.themeStyle.datalabelFont);
215215
}
216-
const rect: Rect = this.calculateTextPosition(point, series, textSize, dataLabel, i);
216+
const rect: Rect = this.calculateTextPosition(point, series, textSize, dataLabel, i, angle);
217217
const actualRect: Rect = new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height);
218218
//let notOverlapping: boolean;
219219
if (dataLabel.enableRotation) {
@@ -600,12 +600,13 @@ export class DataLabel {
600600
* @param {ITextRenderEventArgs} data - The event data associated with rendering the data label.
601601
* @param {number} labelIndex - The index of the data label.
602602
* @param {boolean} redraw - Specifies whether to redraw the template.
603+
* @param {number} angle - Specifies the angle of rotation.
603604
* @returns {void}
604605
*/
605606
private createDataLabelTemplate(
606607
parentElement: HTMLElement, series: Series,
607608
dataLabel: DataLabelSettingsModel, point: Points, data: ITextRenderEventArgs, labelIndex: number,
608-
redraw: boolean
609+
redraw: boolean, angle: number
609610
): void {
610611
this.margin = { left: 0, right: 0, bottom: 0, top: 0 };
611612
const clip: Rect = series.clipRect;
@@ -617,16 +618,16 @@ export class DataLabel {
617618
getFontStyle(dataLabel.font, this.chart.themeStyle.datalabelFont) + ';border:' + data.border.width + 'px solid ' + data.border.color + ';'
618619
}),
619620
point.index, (this.chart.enableHtmlSanitizer ? this.chart.sanitize(data.template as string) : data.template), this.chart, point, series, this.chart.element.id + '_DataLabel', labelIndex);
620-
this.calculateTemplateLabelSize(parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw);
621+
this.calculateTemplateLabelSize(parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw, null, angle);
621622
}
622623
public calculateTemplateLabelSize(
623624
parentElement: HTMLElement, childElement: HTMLElement, point: Points, series: Series, dataLabel: DataLabelSettingsModel,
624-
labelIndex: number, clip: Rect, redraw: boolean, isReactCallback?: boolean
625+
labelIndex: number, clip: Rect, redraw: boolean, isReactCallback?: boolean, angle?: number
625626
): void {
626627
const elementRect: ClientRect = measureElementRect(childElement, redraw, isReactCallback);
627628
const rect: Rect = this.calculateTextPosition(
628629
point, series, { width: elementRect.width, height: elementRect.height },
629-
dataLabel, labelIndex
630+
dataLabel, labelIndex, angle
630631
);
631632
const clipWidth: number = 0;
632633
const clipHeight: number = 0;
@@ -663,7 +664,7 @@ export class DataLabel {
663664
}
664665
private calculateTextPosition(
665666
point: Points, series: Series, textSize: Size,
666-
dataLabel: DataLabelSettingsModel, labelIndex: number
667+
dataLabel: DataLabelSettingsModel, labelIndex: number, angle: number
667668
): Rect {
668669
let labelRegion: Rect = labelIndex > 1 ? (series.type === 'Candle') ? point.regions[1] : point.regions[0] : point.regions[0];
669670
if (labelIndex > 1 && series.type === 'HiloOpenClose') {
@@ -708,7 +709,7 @@ export class DataLabel {
708709
}
709710
const rect: Rect = calculateRect(location, textSize, this.margin);
710711
// Checking the condition whether data Label has been exist the clip rect
711-
if (!(dataLabel.enableRotation === true && dataLabel.angle !== 0) &&
712+
if (!(dataLabel.enableRotation === true && (angle !== 0)) &&
712713
!((rect.y > (clipRect.y + clipRect.height)) || (rect.x > (clipRect.x + clipRect.width)) ||
713714
(rect.x + rect.width < 0) || (rect.y + rect.height < 0))) {
714715
rect.x = rect.x < 0 ? (series.type === 'StackingColumn' && !this.inverted ? 0 : padding) : rect.x;

controls/data/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 32.2.7 (2026-02-24)
5+
## 32.2.8 (2025-12-22)
66

77
### DataManager
88

controls/diagrams/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
## [Unreleased]
44

5+
## 32.2.8 (2025-12-22)
6+
7+
### Diagram
8+
9+
#### Bug Fixes
10+
11+
- `#I810414` - Resolved the difference in scroll speed between Chrome and Firefox browser.
12+
513
## 32.2.7 (2026-02-24)
614

715
### Diagram

controls/diagrams/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@syncfusion/ej2-diagrams",
3-
"version": "32.2.4",
3+
"version": "32.2.7",
44
"description": "Feature-rich diagram control to create diagrams like flow charts, organizational charts, mind maps, and BPMN diagrams. Its rich feature set includes built-in shapes, editing, serializing, exporting, printing, overview, data binding, and automatic layouts.",
55
"author": "Syncfusion Inc.",
66
"license": "SEE LICENSE IN license",

controls/diagrams/src/diagram/interaction/event-handlers.ts

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1726,7 +1726,17 @@ export class DiagramEventHandler {
17261726
} else {
17271727
const horizontalOffset: number = this.diagram.scroller.horizontalOffset;
17281728
const verticalOffset: number = this.diagram.scroller.verticalOffset;
1729-
const change: number = up ? 10 : -10;
1729+
let change: number = up ? 10 : -10;
1730+
//1010829: Different scroll speed between Chrome and Firefox in Diagram
1731+
// Normalize Firefox wheel delta (DOMMouseWheel / detail) so scroll speed matches other browsers. Map Firefox "detail" to a uniform step
1732+
if (Browser && Browser.info && Browser.info.name === 'mozilla') {
1733+
// prefer legacy detail
1734+
const detail: number = (evt as any).detail || 0;
1735+
if (detail) {
1736+
// Treat any non-zero detail as one wheel "click" and map to ±10
1737+
change = detail > 0 ? -10 : 10;
1738+
}
1739+
}
17301740
if (this.tool && (this.tool instanceof PolygonDrawingTool || this.tool instanceof PolyLineDrawingTool)) {
17311741
this.eventArgs = {};
17321742
this.getMouseEventArgs(mousePosition, this.eventArgs);
@@ -1735,38 +1745,61 @@ export class DiagramEventHandler {
17351745
}
17361746
this.diagram.scrollActions |= ScrollActions.Interaction;
17371747
const canMouseWheel: boolean = true;
1748+
// Normalize delta values so browsers that don't provide deltaX/deltaY (eg. Firefox's DOMMouseWheel).
1749+
let normalizedDeltaX: number = (evt as any).deltaX !== undefined ? (evt as any).deltaX : 0;
1750+
let normalizedDeltaY: number = (evt as any).deltaY !== undefined ? (evt as any).deltaY : 0;
1751+
if (Browser && Browser.info && Browser.info.name === 'mozilla') {
1752+
const detail: number = (evt as any).detail || 0;
1753+
// Handle legacy horizontal wheel events in Firefox by checking `axis` when available.
1754+
if (detail) {
1755+
if ((evt as any).axis !== undefined) {
1756+
// In old DOMMouseScroll, axis === 1 indicates horizontal scroll.
1757+
if ((evt as any).axis === 1) {
1758+
normalizedDeltaX = -detail;
1759+
normalizedDeltaY = 0;
1760+
} else {
1761+
normalizedDeltaY = -detail;
1762+
normalizedDeltaX = 0;
1763+
}
1764+
} else {
1765+
// Fallback: treat detail as vertical delta
1766+
normalizedDeltaY = -detail;
1767+
normalizedDeltaX = 0;
1768+
}
1769+
}
1770+
}
17381771
if (evt.isTrusted) {
17391772
// Bug 829925: Scroll bar flickers on scrolling the diagram using touchpad.
17401773
// Added the below condition to check whether the mouse wheel is from trackpad or not.
17411774
let isTrackpadScroll: boolean = false;
17421775
// 878719: Resolve ESLint errors
17431776
// eslint-disable-next-line no-compare-neg-zero
1744-
if ((Math.abs(evt.deltaY) < 100 && Math.abs(evt.deltaX) === -0) ||
1777+
if ((Math.abs(normalizedDeltaY) < 100 && Math.abs(normalizedDeltaX) === -0) ||
17451778
// 878719: Resolve ESLint errors
17461779
// eslint-disable-next-line no-compare-neg-zero
1747-
(Math.abs(evt.deltaX) < 100 && Math.abs(evt.deltaY) === -0)) {
1780+
(Math.abs(normalizedDeltaX) < 100 && Math.abs(normalizedDeltaY) === -0)) {
17481781
isTrackpadScroll = true;
17491782
}
17501783
//Bug 892441: Infinite scroll not working in vertical axis of diagram.
17511784
//Due to the prevention of zoom method trigger in vertical scroll, the infinite scroll is not working in vertical axis.
17521785
//So added the below condition to check macOS and allowed the zoom method trigger in vertical scroll for non-MacOs.
17531786
let isMacOS: boolean = false;
1754-
if (evt.deltaX !== 0 || evt.deltaY !== 0) {
1787+
if (normalizedDeltaX !== 0 || normalizedDeltaY !== 0) {
17551788
// Perform macOS detection
17561789
isMacOS = navigator.userAgent.includes('Macintosh');
17571790
}
17581791
//898867: Diagram scrolling is not smooth while scrolling with Track Pad in Mac.
17591792
if (isMacOS) {
1760-
const isHorizontalScroll: boolean = Math.abs(evt.deltaX) > Math.abs(evt.deltaY);
1793+
const isHorizontalScroll: boolean = Math.abs(normalizedDeltaX) > Math.abs(normalizedDeltaY);
17611794
if (isHorizontalScroll) {
17621795
// eslint-disable-next-line no-compare-neg-zero
1763-
if (evt.shiftKey || (evt.deltaX && evt.deltaX !== -0 && (isTrackpadScroll || !isMacOS))) {
1796+
if (evt.shiftKey || (normalizedDeltaX && normalizedDeltaX !== -0 && (isTrackpadScroll || !isMacOS))) {
17641797
this.diagram.scroller.zoom(1, change, 0, mousePosition, canMouseWheel, undefined, isTrackpadScroll);
17651798
}
17661799
}
17671800
else {
17681801
// eslint-disable-next-line no-compare-neg-zero
1769-
if ((evt.deltaY && evt.deltaY !== -0 && (isTrackpadScroll || !isMacOS))) {
1802+
if ((normalizedDeltaY && normalizedDeltaY !== -0 && (isTrackpadScroll || !isMacOS))) {
17701803
this.diagram.scroller.zoom(1, 0, change, mousePosition, canMouseWheel, undefined, isTrackpadScroll);
17711804
}
17721805
}
@@ -1775,19 +1808,19 @@ export class DiagramEventHandler {
17751808
else {
17761809
// 878719: Resolve ESLint errors
17771810
// eslint-disable-next-line no-compare-neg-zero
1778-
if (evt.shiftKey || (evt.deltaX && evt.deltaX !== -0 && (isTrackpadScroll || !isMacOS))) {
1811+
if (evt.shiftKey || (normalizedDeltaX && normalizedDeltaX !== -0 && (isTrackpadScroll || !isMacOS))) {
17791812
this.diagram.scroller.zoom(1, change, 0, mousePosition, canMouseWheel, undefined, isTrackpadScroll);
17801813
}
17811814
// eslint-disable-next-line no-compare-neg-zero
1782-
else if ((evt.deltaY && evt.deltaY !== -0 && (isTrackpadScroll || !isMacOS))) {
1815+
else if ((normalizedDeltaY && normalizedDeltaY !== -0 && (isTrackpadScroll || !isMacOS))) {
17831816
this.diagram.scroller.zoom(1, 0, change, mousePosition, canMouseWheel, undefined, isTrackpadScroll);
17841817
}
17851818
}
17861819
}
17871820
else {
17881821
// 878719: Resolve ESLint errors
17891822
// eslint-disable-next-line no-compare-neg-zero
1790-
if (evt.shiftKey || (evt.deltaX && evt.deltaX !== -0)) {
1823+
if (evt.shiftKey || (normalizedDeltaX && normalizedDeltaX !== -0)) {
17911824
this.diagram.scroller.zoom(1, change, 0, mousePosition, canMouseWheel);
17921825
}
17931826
else {

controls/documenteditor/CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,24 @@
22

33
## [Unreleased]
44

5+
## 32.2.8 (2025-12-22)
6+
7+
### DocumentEditor
8+
9+
#### Bug Fixes
10+
11+
`#I813615` - Fixed an error that occurred when deleting a table column containing embedded content controls.
12+
`#I810273` - Resolved an issue where entering a space caused the cursor to jump after the next character.
13+
`#I812200` - Fixed a problem where the document jumped to the following page when deleting a table.
14+
`#I810311` - Corrected the behaviour where Bold/Italic formatting was incorrectly applied to bullet symbols.
15+
`#I807767` - Resolved an issue where the Document Editor became unresponsive while loading the attached document.
16+
`#I799682` - Fixed list formatting being lost when the exported document was opened in online Microsoft Word.
17+
`#I787996` - Fixed an RTL issue where highlighting Arabic text caused the words to split.
18+
`#I800024` - Corrected footnote positioning issues when moving content across pages.
19+
`#I810289` - Fixed localization not updating properly in the Drop down Form Field dialog.
20+
`#I796649` - Resolved an issue where the first list number or bullet outside a content control could not be edited.
21+
`#I797591` - Fixed an issue where newton soft version 13.0.1.0 could not be loaded in the MVC project.
22+
523
## 32.2.7 (2026-02-24)
624

725
### DocumentEditor

0 commit comments

Comments
 (0)