Skip to content

Commit fc0bec9

Browse files
author
pipeline
committed
v28.1.37 is released
1 parent ba98486 commit fc0bec9

File tree

172 files changed

+2496
-655
lines changed

Some content is hidden

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

172 files changed

+2496
-655
lines changed

controls/barcodegenerator/CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 28.1.36 (2024-12-24)
5+
## 28.1.37 (2024-12-31)
66

77
### Barcode
88

controls/buttons/CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 28.1.36 (2024-12-24)
5+
## 28.1.37 (2024-12-31)
66

77
### Switch
88

controls/calendars/CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 28.1.36 (2024-12-24)
5+
## 28.1.37 (2024-12-31)
66

77
### DateRangePicker
88

controls/charts/CHANGELOG.md

+10-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,16 @@
22

33
## [Unreleased]
44

5-
## 28.1.36 (2024-12-24)
5+
## 28.1.37 (2024-12-31)
6+
7+
### Chart
8+
9+
#### Bug Fixes
10+
11+
- `#I667080` - The column series now renders properly when the width is set in pixels and `enableSideBySidePlacement` is set to false.
12+
- `#I654525` - The y-axis now dynamically adjusts to accommodate negative ranges when the negative error bar exceeds the minimum value.
13+
14+
## 28.1.36
615

716
### Chart
817

controls/charts/spec/chart/series/waterfall-series.spec.ts

+20
Original file line numberDiff line numberDiff line change
@@ -1224,6 +1224,26 @@ describe('Waterfall Series', () => {
12241224
chart.series[0].intermediateSumIndexes = [4, 7];
12251225
chart.refresh();
12261226
});
1227+
it('Checking with sum index', (done: Function) => {
1228+
loaded = (args: ILoadedEventArgs): void => {
1229+
let point: number = args.chart.visibleSeries[0].points[8].y as number;
1230+
expect(point).toBe(3685);
1231+
done();
1232+
};
1233+
chart.loaded = loaded;
1234+
chart.series[0].dataSource = [ { x: 'Income', y: 4711 },
1235+
{ x: 'Sales', y: -1015 },
1236+
{ x: 'Development', y: -688 },
1237+
{ x: 'Revenue', y: 1030 },
1238+
{ x: 'Balance' },
1239+
{ x: 'Administrative', y: -780 },
1240+
{ x: 'Expense', y: -261 },
1241+
{ x: 'Tax', y: 0 },
1242+
{ x: 'Net Profit' },];
1243+
chart.series[0].sumIndexes = [8];
1244+
chart.series[0].intermediateSumIndexes = [2, 4, 7];
1245+
chart.refresh();
1246+
});
12271247
});
12281248
it('memory leak', () => {
12291249
profile.sample();

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

+7-1
Original file line numberDiff line numberDiff line change
@@ -1206,19 +1206,25 @@ export class SeriesBase extends ChildProperty<SeriesBase> {
12061206
if (this instanceof Series) {
12071207
if (this.chart.errorBarModule) {
12081208
let maxVerticalError: number;
1209+
let minVerticalError: number;
12091210
if (this.errorBar.verticalError) {
12101211
for (let i: number = 0; i < this.points.length; i++) {
12111212
const verticalErrors: number[] = [];
1213+
const minVerticalErrorValue: number[] = [];
12121214
for (let i: number = 0; i < this.points.length; i++) {
12131215
const point: Points = this.points[i as number];
12141216
if (point.verticalError) {
12151217
verticalErrors.push(point.verticalError);
1218+
minVerticalErrorValue.push(point.yValue - point.verticalError);
12161219
}
12171220
}
12181221
maxVerticalError = verticalErrors && verticalErrors.length > 0 ? Math.max(...verticalErrors) : 0;
1222+
minVerticalError = verticalErrors && verticalErrors.length > 0 ? Math.min(...minVerticalErrorValue) : 0;
12191223
}
12201224
}
1221-
this.yMax += !isNaN(maxVerticalError) ? maxVerticalError : 0;
1225+
this.yMax += !isNaN(maxVerticalError) && isNullOrUndefined(this.yAxis.maximum) ? maxVerticalError : 0;
1226+
this.yMin = !isNaN(minVerticalError) && minVerticalError < this.yMin && isNullOrUndefined(this.yAxis.minimum) ?
1227+
minVerticalError : this.yMin;
12221228
}
12231229
}
12241230
}

controls/charts/src/chart/series/column-base.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export class ColumnBase {
3131
public element: HTMLElement;
3232
protected getSideBySideInfo(series: Series): DoubleRange {
3333
series.isRectSeries = true;
34-
if (series.chart.enableSideBySidePlacement && !series.position) {
34+
if ((series.chart.enableSideBySidePlacement && !series.position) || !isNullOrUndefined(series.columnWidthInPixel)) {
3535
this.getSideBySidePositions(series);
3636
}
3737
if (series.columnWidthInPixel) {

controls/charts/src/chart/series/waterfall-series.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Series, Points } from './chart-series';
55
import { DoubleRange } from '../utils/double-range';
66
import { ColumnBase } from './column-base';
77
import { IPointRenderEventArgs } from '../../chart/model/chart-interface';
8-
import { animationMode } from '@syncfusion/ej2-base';
8+
import { animationMode, isNullOrUndefined } from '@syncfusion/ej2-base';
99

1010
/**
1111
* The `WaterfallSeries` module is used to render the waterfall series.
@@ -214,8 +214,10 @@ export class WaterfallSeries extends ColumnBase {
214214
*/
215215
public processInternalData(json: Object[], series: Series): Object[] {
216216
const data: Object[] = json; let index: number; let sumValue : number = 0;
217-
const intermediateSum: number[] = series.intermediateSumIndexes;
218-
const sumIndex: number[] = series.sumIndexes;
217+
const intermediateSum: number[] = (!isNullOrUndefined(series.intermediateSumIndexes) && series.intermediateSumIndexes.length > 0) ?
218+
series.intermediateSumIndexes.sort() : series.intermediateSumIndexes;
219+
const sumIndex: number[] = (!isNullOrUndefined(series.sumIndexes) && series.sumIndexes.length > 0) ? series.sumIndexes.sort() :
220+
series.sumIndexes;
219221
let cumulativeSum: number = 0;
220222
for (let i: number = 0; i < data.length; i++) {
221223
cumulativeSum += data[i as number][series.yName] !== undefined ? data[i as number][series.yName] : 0;
@@ -241,15 +243,16 @@ export class WaterfallSeries extends ColumnBase {
241243
for (let j: number = 0; j < data.length; j++) {
242244
if (j === sumIndex[k as number]) {
243245
if (intermediateSum !== undefined && intermediateSum.length > intermediateSumCount &&
244-
intermediateSum[k as number] !== sumIndex[k as number]) {
246+
intermediateSum[k as number] !== sumIndex[k as number] && intermediateSum[k as number] <
247+
sumIndex[k as number]) {
245248
index = subArraySum(data, intermediateSum.length <= 1 ? intermediateSum[0] - 1 :
246249
intermediateSum[k as number] - 1, sumIndex[k as number], sumIndex, series);
247250
intermediateSumCount += 1;
248251
} else {
249252
if (k === 0) {
250253
index = subArraySum(data, -1, sumIndex[k as number], null, series);
251254
} else {
252-
index = subArraySum(data, sumIndex[k - 1], sumIndex[k as number], null, series);
255+
index = subArraySum(data, sumIndex[k as number - 1], sumIndex[k as number], null, series);
253256
}
254257
}
255258
sumValue += index;

controls/charts/src/common/utils/helper.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,8 @@ export function subArraySum(values: Object[], first: number, last: number, index
333333
let isFirst: boolean = true;
334334
if (index !== null) {
335335
for (let i: number = (first + 1); i < last; i++) {
336-
if (index.indexOf(i) === -1 && (i !== series.intermediateSumIndexes[sumIndex as number] ||
337-
(i === series.intermediateSumIndexes[sumIndex as number] && isFirst))) {
336+
if (index.indexOf(i) === -1 && (i === series.intermediateSumIndexes[sumIndex as number] ||
337+
series.intermediateSumIndexes[series.intermediateSumIndexes.length - 1] < i)) {
338338
sum += values[i as number][series.yName] as number;
339339
if (i === series.intermediateSumIndexes[sumIndex as number]) {
340340
isFirst = false;
@@ -343,9 +343,9 @@ export function subArraySum(values: Object[], first: number, last: number, index
343343
}
344344
}
345345
} else {
346-
347346
for (let i: number = (first + 1); i < last; i++) {
348-
if (!isNullOrUndefined(values[i as number][series.yName])) {
347+
if (!isNullOrUndefined(values[i as number][series.yName]) && !isNullOrUndefined(series.sumIndexes) &&
348+
series.sumIndexes.indexOf(i) === -1) {
349349
sum += values[i as number][series.yName] as number;
350350
}
351351
}

controls/data/CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 28.1.36 (2024-12-24)
5+
## 28.1.37 (2024-12-31)
66

77
### DataManager
88

controls/diagrams/CHANGELOG.md

+10
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
## [Unreleased]
44

5+
## 28.1.37 (2024-12-31)
6+
7+
### Diagram
8+
9+
#### Bug Fixes
10+
11+
- `#I664086` - Bezier settings are now applied to freehand connectors during the drawing process.
12+
- `#I664088` - Segment points are now draggable even when the pointer is positioned on the outer part of an increased segment thumb size.
13+
514
## 28.1.36 (2024-12-24)
615

716
### Diagram
@@ -12,6 +21,7 @@
1221
- `#I662735` - The undo/redo functionality now restores intermediate connector segments.
1322
- `#I663194` - Connectors now retain their previous state after undoing runtime source and target ID changes.
1423
- `#I663672` - The `elementType` in the `elementDraw` event now correctly updates for `Polyline` and `Freehand` in the completed state.
24+
- `#I663175` - The diagram page no longer flickers during pinch zoom.
1525

1626
## 28.1.35 (2024-12-18)
1727

controls/diagrams/src/diagram/interaction/actions.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { canShowCorner, canResizeCorner } from '../utility/diagram-util';
1414
import { Point } from '../primitives/point';
1515
import { ITouches } from '../objects/interface/interfaces';
1616
import { TextElement } from '../core/elements/text-element';
17-
import { PortConstraints, DiagramTools, PortVisibility, ThumbsConstraints } from '../enum/enum';
17+
import { PortConstraints, DiagramTools, PortVisibility, ThumbsConstraints, ConnectorConstraints } from '../enum/enum';
1818
import { Selector } from '../objects/node';
1919
import { SelectorModel } from '../objects/node-model';
2020
import { PointPortModel, PortModel } from './../objects/port-model';
@@ -215,12 +215,17 @@ function checkForConnectorSegment(conn: Connector, handle: SelectorModel, positi
215215
}
216216
}
217217
if (diagram.connectorEditingToolModule && canDragSegmentThumb(conn as Connector)) {
218+
// 927583: Segment points cannot be dragged when the pointer is in the outer part of the segmentThumb
219+
const inheritSegmentThumbSize: number = (conn.constraints & ConnectorConstraints.InheritSegmentThumbSize);
220+
const segmentThumbSize: number = inheritSegmentThumbSize ? diagram.segmentThumbSize : conn.segmentThumbSize;
221+
let padding: number = (segmentThumbSize > 20) && conn.type !== 'Straight' ? segmentThumbSize / 2 : 10;
222+
padding = padding / diagram.scrollSettings.currentZoom;
218223
if (conn.type === 'Straight' || conn.type === 'Bezier') {
219224
for (let i: number = 0; i < conn.segments.length; i++) {
220225
//let segment: StraightSegmentModel | BezierSegmentModel;
221226
const segment: StraightSegmentModel | BezierSegmentModel
222227
= (conn.segments)[parseInt(i.toString(), 10)] as StraightSegmentModel | BezierSegmentModel;
223-
if (contains(position, segment.point, 10)) {
228+
if (contains(position, segment.point, padding)) {
224229
return 'SegmentEnd';
225230
}
226231
}
@@ -236,7 +241,7 @@ function checkForConnectorSegment(conn: Connector, handle: SelectorModel, positi
236241
segPoint.y = ((segment.points[parseInt(j.toString(), 10)].y + segment.points[j + 1].y) / 2);
237242
//Bug 857928: Issue in connector selection while enabling segment thumb.
238243
//Instead of setting static value 30, we have set the hit padding of connector.
239-
const padding: number = conn.hitPadding ? conn.hitPadding : 10;
244+
// 927583: Segment points cannot be dragged when the pointer is in the outer part of the segmentThumb
240245
if (contains(position, segPoint, padding)) {
241246
return 'OrthoThumb';
242247
}

controls/diagrams/src/diagram/interaction/connector-editing.ts

+9-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Rect } from '../primitives/rect';
77
import { intersect3, cloneBlazorObject } from '../utility/diagram-util';
88
import { cloneObject } from '../utility/base-util';
99
import { HistoryEntry } from '../diagram/history';
10-
import { Direction, DiagramEvent } from './../enum/enum';
10+
import { Direction, DiagramEvent, ConnectorConstraints } from './../enum/enum';
1111
import { contains } from './actions';
1212
import { SelectorModel } from '../objects/node-model';
1313
import { MouseEventArgs } from './event-handlers';
@@ -54,6 +54,12 @@ export class ConnectorEditing extends ToolBase {
5454
this.inAction = true;
5555
this.undoElement = cloneObject(args.source);
5656
super.mouseDown(args);
57+
// 927583: Segment points cannot be dragged when the pointer is in the outer part of the segmentThumb
58+
const inheritSegmentThumbSize: number = (connectors.constraints & ConnectorConstraints.InheritSegmentThumbSize);
59+
const segmentThumbSize: number = inheritSegmentThumbSize ?
60+
this.commandHandler.diagram.segmentThumbSize : connectors.segmentThumbSize;
61+
let padding: number = (segmentThumbSize > 20) && connectors.type !== 'Straight' ? segmentThumbSize / 2 : 10;
62+
padding = padding / this.commandHandler.diagram.scrollSettings.currentZoom;
5763
// Sets the selected segment
5864
for (let i: number = 0; i < connectors.segments.length; i++) {
5965
const segment: BezierSegment = connectors.segments[parseInt(i.toString(), 10)] as BezierSegment;
@@ -62,13 +68,13 @@ export class ConnectorEditing extends ToolBase {
6268
const segPoint: PointModel = { x: 0, y: 0 };
6369
segPoint.x = ((segment.points[parseInt(j.toString(), 10)].x + segment.points[j + 1].x) / 2);
6470
segPoint.y = ((segment.points[parseInt(j.toString(), 10)].y + segment.points[j + 1].y) / 2);
65-
if (contains(this.currentPosition, segPoint, 30)) {
71+
if (contains(this.currentPosition, segPoint, padding)) {
6672
this.selectedSegment = segment;
6773
this.segmentIndex = j;
6874
}
6975
}
7076
} else {
71-
if (contains(this.currentPosition, segment.point, 10)) {
77+
if (contains(this.currentPosition, segment.point, padding)) {
7278
this.selectedSegment = segment;
7379
}
7480
}

controls/diagrams/src/diagram/interaction/tool.ts

+14-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { PointModel } from '../primitives/point-model';
77
import { Node, DiagramShape } from '../objects/node';
88
import { Connector, BezierSegment, StraightSegment } from '../objects/connector';
99
import { NodeModel, BasicShapeModel, SwimLaneModel, PathModel } from '../objects/node-model';
10-
import { BezierSegmentModel, ConnectorModel, StraightSegmentModel } from '../objects/connector-model';
10+
import { BezierSegmentModel, ConnectorModel, StraightSegmentModel, BezierSettingsModel } from '../objects/connector-model';
1111
import { Point } from '../primitives/point';
1212
import { BpmnSubEvent } from '../objects/node';
1313
import { PointPort } from '../objects/port';
@@ -2038,7 +2038,10 @@ export class ZoomPanTool extends ToolBase {
20382038
const moveTouch1: ITouches = args.moveTouches[1];
20392039
const scale: number = this.getDistance(moveTouch0, moveTouch1) / this.getDistance(startTouch0, startTouch1);
20402040
const focusPoint: PointModel = args.position;
2041-
this.commandHandler.zoom(scale, 0, 0, focusPoint);
2041+
// 927527: Diagram flickers while performing pinch zoom
2042+
if (scale !== 1) {
2043+
this.commandHandler.zoom(scale, 0, 0, focusPoint);
2044+
}
20422045
this.updateTouch(startTouch0, moveTouch0);
20432046
this.updateTouch(startTouch1, moveTouch1);
20442047
}
@@ -2605,12 +2608,20 @@ export class FreeHandTool extends ToolBase {
26052608
let prevObj = this.commandHandler.diagram.nameTable[`${prevId}`];
26062609
this.commandHandler.diagram.remove(prevObj);
26072610
points = this.pointReduction(points, tolerance);
2611+
// 927557: controlPointsVisibility Property values not considered in Freehand drawing
2612+
let bezierSettings: BezierSettingsModel = {};
2613+
if ((this.commandHandler.diagram.drawingObject as ConnectorModel).bezierSettings) {
2614+
bezierSettings = (this.commandHandler.diagram.drawingObject as ConnectorModel).bezierSettings;
2615+
}
2616+
if (bezierSettings.allowSegmentsReset === undefined) {
2617+
bezierSettings.allowSegmentsReset = false;
2618+
}
26082619
//EJ2-69816 - Added below code to set the allow segment reset as false to avoid the unwanted segment reset.
26092620
const newObj: ConnectorModel = {
26102621
id: 'newConnector' + randomId(), type: 'Bezier',
26112622
sourcePoint: { x: points[0].x, y: points[0].y }, targetPoint: { x: points[points.length - 1].x, y: points[points.length - 1].y },
26122623
//EJ2-873504[BUG]- Source and target decorator for free hand connector is not rendered.
2613-
segments: [], bezierSettings: { allowSegmentsReset: false }
2624+
segments: [], bezierSettings: bezierSettings
26142625
};
26152626
this.drawingObject = this.commandHandler.drawObject(newObj as Connector);
26162627
this.drawingObject = this.bezierCurveSmoothness(points, smoothValue, this.drawingObject, obj);

controls/documenteditor/CHANGELOG.md

+14
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
22

33
## [Unreleased]
44

5+
## 28.1.37 (2024-12-31)
6+
7+
### DocumentEditor
8+
9+
#### Bug Fixes
10+
11+
- `#I646103` - Fixed the rendering issue of dot and circle bullets in the Ubuntu environment.
12+
- `#I664612` - Fixed the application hanging issue when searching for text within a split cell widget using the find option.
13+
- `#I665316` - Fixed the layout issue during editing actions caused by field start and end tags being in different paragraphs.
14+
- `#I656347` - Fixed the issue where an empty cell was not added in a split row widget.
15+
- `#I662866` - Fixed a script error that occurred when opening a document with block content controls inside a cell with revisions.
16+
- `#I660441` - Fixed the issue where a table became corrupt after merging cells.
17+
- `#I660453` - Fixed the issue where the replace API was not working when using a pattern to find and replace text.
18+
519
## 28.1.36 (2024-12-24)
620

721
### DocumentEditor

controls/documenteditor/src/document-editor/implementation/editor-history/base-history-info.ts

+1
Original file line numberDiff line numberDiff line change
@@ -2497,6 +2497,7 @@ export class BaseHistoryInfo {
24972497
break;
24982498
case 'ClearRevisions':
24992499
case 'TrackingPageBreak':
2500+
case 'AcceptTOC':
25002501
if (this.editorHistory.isUndoing || this.editorHistory.isRedoing) {
25012502
if (this.removedNodes.length > 0) {
25022503
let deleteOperation: Operation = this.getDeleteOperation(action);

0 commit comments

Comments
 (0)