Skip to content

Commit b5b81f1

Browse files
author
pipeline
committed
v24.2.9 is released
1 parent 543d88e commit b5b81f1

File tree

161 files changed

+3762
-314
lines changed

Some content is hidden

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

161 files changed

+3762
-314
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-
## 24.2.8 (2024-02-27)
5+
## 24.2.9 (2024-03-05)
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-
## 24.2.8 (2024-02-27)
5+
## 24.2.9 (2024-03-05)
66

77
### Button
88

controls/calendars/CHANGELOG.md

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

33
## [Unreleased]
44

5+
## 24.2.9 (2024-03-05)
6+
7+
### DateTimePicker
8+
9+
#### Bug Fixes
10+
11+
- `#FB50296` - Fixed an issue where the date format `MMM/YYYY` was displaying the wrong date value in languages other than English.
12+
513
## 24.2.8 (2024-02-27)
614

715
### DateRangePicker

controls/calendars/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@syncfusion/ej2-calendars",
3-
"version": "24.2.5",
3+
"version": "24.2.8",
44
"description": "A complete package of date or time components with built-in features such as date formatting, inline editing, multiple (range) selection, range restriction, month and year selection, strict mode, and globalization.",
55
"author": "Syncfusion Inc.",
66
"license": "SEE LICENSE IN license",

controls/calendars/spec/datetimepicker/datetimepicker.spec.ts

+28
Original file line numberDiff line numberDiff line change
@@ -4169,6 +4169,34 @@ describe('EJ2-56658:change event is not triggered while remove the selected time
41694169
});
41704170

41714171
});
4172+
describe('869555 : Meridian Value Checking', () => {
4173+
let datetimepicker: any;
4174+
beforeEach(() => {
4175+
let ele: HTMLElement = createElement('input', { id: 'dateTime' });
4176+
document.body.appendChild(ele);
4177+
});
4178+
afterEach(() => {
4179+
if (datetimepicker) {
4180+
datetimepicker.destroy();
4181+
}
4182+
document.body.innerHTML = '';
4183+
});
4184+
it('Meridian Value Checking', () => {
4185+
datetimepicker = new DateTimePicker({
4186+
format: "dd/MMM/yyy hh:mm:a",
4187+
value: new Date('23/May/2024 12:30:pm')
4188+
});
4189+
datetimepicker.appendTo('#dateTime');
4190+
datetimepicker.inputElement.value = '25/Mar/2024 12:30:am';
4191+
datetimepicker.dataBind();
4192+
datetimepicker.inputBlurHandler();
4193+
expect(datetimepicker.inputElement.value).toBe('25/Mar/2024 12:30:AM');
4194+
datetimepicker.inputElement.value = '27/Feb/2024 01:00:pm';
4195+
datetimepicker.dataBind();
4196+
datetimepicker.inputBlurHandler();
4197+
expect(datetimepicker.inputElement.value).toBe('27/Feb/2024 01:00:PM');
4198+
});
4199+
});
41724200
describe('EJ2-59142', () => {
41734201
let datetimepicker: any;
41744202
let keyEventArgs: any = {

controls/calendars/src/datepicker/datepicker.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1296,7 +1296,8 @@ export class DatePicker extends Calendar implements IInput {
12961296
}
12971297
if ((this.getModuleName() === 'datetimepicker')) {
12981298
if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {
1299-
date = this.globalize.parseDate(this.inputElement.value.toLocaleUpperCase(), dateOptions);
1299+
const modifiedValue: string = this.inputElement.value.replace(/(am|pm|Am|aM|pM|Pm)/g, (match) => match.toLocaleUpperCase());
1300+
date = this.globalize.parseDate(modifiedValue, dateOptions);
13001301
} else {
13011302
if (this.calendarMode === 'Gregorian') {
13021303
formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };

controls/calendars/src/timepicker/timepicker.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -2490,10 +2490,6 @@ export class TimePicker extends Component<HTMLElement> implements IInput {
24902490
}
24912491
}
24922492
removeClass([this.inputWrapper.container], [FOCUS]);
2493-
const blurArguments: BlurEventArgs = {
2494-
model: this
2495-
};
2496-
this.trigger('blur', blurArguments);
24972493
if (this.getText() !== this.inputElement.value) {
24982494
this.updateValue((this.inputElement).value, e);
24992495
} else if (this.inputElement.value.trim().length === 0) {
@@ -2505,6 +2501,10 @@ export class TimePicker extends Component<HTMLElement> implements IInput {
25052501
if (this.inputElement.value === '') {
25062502
this.invalidValueString = null;
25072503
}
2504+
const blurArguments: BlurEventArgs = {
2505+
model: this
2506+
};
2507+
this.trigger('blur', blurArguments);
25082508

25092509
}
25102510
/**

controls/charts/CHANGELOG.md

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

33
## [Unreleased]
44

5+
## 24.2.9 (2024-03-05)
6+
7+
### Chart
8+
9+
#### Bug Fixes
10+
11+
- `#I558392` - Now the line color of the Pareto chart is stable when toggling the legend.
12+
- `#I558247` - Now sorting is working in the Pareto chart.
13+
- `#I557017` - Now the column is rendered properly when a corner radius is used.
14+
515
## 24.2.8 (2024-02-27)
616

717
### Chart

controls/charts/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@syncfusion/ej2-charts",
3-
"version": "24.2.7",
3+
"version": "24.2.8",
44
"description": "Feature-rich chart control with built-in support for over 25 chart types, technical indictors, trendline, zooming, tooltip, selection, crosshair and trackball.",
55
"author": "Syncfusion Inc.",
66
"license": "SEE LICENSE IN license",

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ describe('chart control', () => {
131131
it('Showing default data label', (done: Function) => {
132132
loaded = (args: Object): void => {
133133
let element = document.getElementById('container_Series_0_Point_3_Text_0');
134-
expect((+element.textContent) == 26).toBe(true);
134+
expect((+element.textContent) == 36).toBe(true);
135135
expect(document.getElementById('containerShapeGroup0').childNodes.length == 0).toBe(true);
136136
done();
137137
};
@@ -223,7 +223,7 @@ describe('chart control', () => {
223223
loaded = (args: Object): void => {
224224
let element1: HTMLElement = document.getElementById('container_Series_0_Point_3_Text_0');
225225
let element2: HTMLElement = document.getElementById('container_Series_0_Point_4_Text_0');
226-
expect(parseFloat(element1.getAttribute('y')) <
226+
expect(parseFloat(element1.getAttribute('y')) >
227227
parseFloat(element2.getAttribute('y'))).toBe(true);
228228
done();
229229
}
@@ -236,7 +236,7 @@ describe('chart control', () => {
236236
loaded = (args: Object): void => {
237237
let element1: HTMLElement = document.getElementById('container_Series_1_Point_0_Text_0');
238238
let element2: HTMLElement = document.getElementById('container_Series_1_Point_1_Text_0');
239-
expect(parseFloat(element1.getAttribute('y')) >
239+
expect(parseFloat(element1.getAttribute('y')) >=
240240
parseFloat(element2.getAttribute('y'))).toBe(true);
241241
done();
242242
}

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

-1
Original file line numberDiff line numberDiff line change
@@ -1116,7 +1116,6 @@ export class SeriesBase extends ChildProperty<SeriesBase> {
11161116
processInternalData(extend([], this.currentViewData, null, true) as Object[], this);
11171117
}
11181118
if (this.category === 'Pareto') {
1119-
this.currentViewData = sort(extend([], this.currentViewData, null, true) as Object[], [this.yName], true);
11201119
if (this.type === 'Line') {
11211120
this.currentViewData = this.chart.paretoSeriesModule.performCumulativeCalculation(
11221121
this.currentViewData, this);

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

+7-2
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ export class ColumnBase {
472472
} else {
473473
direction = this.calculateRoundedRectPath(
474474
rect, series.cornerRadius.topLeft, series.cornerRadius.topRight, series.cornerRadius.bottomLeft,
475-
series.cornerRadius.bottomRight);
475+
series.cornerRadius.bottomRight, chart.requireInvertedAxis);
476476
}
477477
const name: string = series.category === 'Indicator' ? chart.element.id + '_Indicator_' + series.index + '_' + series.name +
478478
'_Point_' + point.index : chart.element.id + '_Series_' + series.index + '_Point_' + point.index;
@@ -613,8 +613,13 @@ export class ColumnBase {
613613
*/
614614
private calculateRoundedRectPath(
615615
rect: Rect, topLeft: number, topRight: number,
616-
bottomLeft: number, bottomRight: number
616+
bottomLeft: number, bottomRight: number, inverted: boolean = false
617617
): string {
618+
const halfValue: number = inverted ? rect.width / 2 : rect.height / 2;
619+
topLeft = Math.min(topLeft, halfValue);
620+
topRight = Math.min(topRight, halfValue);
621+
bottomLeft = Math.min(bottomLeft, halfValue);
622+
bottomRight = Math.min(bottomRight, halfValue);
618623
return 'M' + ' ' + rect.x + ' ' + (topLeft + rect.y) +
619624
' Q ' + rect.x + ' ' + rect.y + ' ' + (rect.x + topLeft) + ' ' +
620625
rect.y + ' ' + 'L' + ' ' + (rect.x + rect.width - topRight) + ' ' + rect.y +

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export class ParetoSeries extends ColumnBase {
2828
targetSeries.category = 'Pareto';
2929
series.index = targetSeries.index + chart.series.length;
3030
series.type = 'Line';
31-
series.interior = series.paretoOptions.fill ? series.paretoOptions.fill : colors[series.index % count];
31+
series.interior = series.fill = series.paretoOptions.fill ? series.paretoOptions.fill : colors[series.index % count];
3232
series.width = series.paretoOptions.width;
3333
series.dashArray = series.paretoOptions.dashArray;
3434
series.marker = series.paretoOptions.marker;

controls/data/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"@syncfusion/ej2-base": "*"
1212
},
1313
"devDependencies": {
14+
"@syncfusion/ej2-staging": "^1.0.1",
1415
"@types/chai": "^3.4.28",
1516
"@types/es6-promise": "0.0.28",
1617
"@types/jasmine": "2.8.9",

controls/data/src/manager.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ export class DataManager {
647647

648648
private successFunc(record: string | Object, request: Fetch): void {
649649
if (this.isGraphQLAdaptor(this.adaptor)) {
650-
const data: Object = JSON.parse(record as string);
650+
const data: Object = typeof record === 'object' ? record : JSON.parse(record as string);
651651
// tslint:disable-next-line:no-string-literal
652652
if (!isNullOrUndefined(data['errors'])) {
653653
// tslint:disable-next-line:no-string-literal

controls/diagrams/CHANGELOG.md

+16
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,28 @@
22

33
## [Unreleased]
44

5+
## 24.2.9 (2024-03-05)
6+
7+
### Diagram
8+
9+
#### Bug Fixes
10+
11+
- `#I557035` - Now, the layers object gets cleared when we call clear method.
12+
513
## 24.2.8 (2024-02-27)
614

715
### Diagram
816

917
#### Bug Fixes
1018

19+
- `#I555649` - Now, the scaling of the BPMN symbols with description is properly rendered.
20+
21+
## 24.2.7 (2024-02-20)
22+
23+
### Diagram
24+
25+
#### Bug Fixes
26+
1127
- `#I549018` - Now, the bridging is not enabled while connector visibility is false.
1228
- `#I542327` - Now, the sendBackward and sendForward commands works fine.
1329
- `#I527474` - Now, drawing connector from source port to target port with port id underscore works fine.

controls/diagrams/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@syncfusion/ej2-diagrams",
3-
"version": "24.2.5",
3+
"version": "24.2.8",
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",
@@ -17,6 +17,7 @@
1717
"@syncfusion/ej2-popups": "*"
1818
},
1919
"devDependencies": {
20+
"@syncfusion/ej2-staging": "^1.0.1",
2021
"@types/chai": "^3.4.28",
2122
"@types/es6-promise": "0.0.28",
2223
"@types/jasmine": "2.8.9",

controls/diagrams/spec/diagram/interaction/layer.spec.ts

+80-1
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ describe('Diagram Control', () => {
809809
diagram.dataBind();
810810
let ele = document.getElementById("N1_groupElement");
811811
console.log("ele"+ele);
812-
expect(ele !== null).toBe(true);
812+
expect(ele === null).toBe(true);
813813
done();
814814
});
815815

@@ -1094,3 +1094,82 @@ describe('Diagram-Layers - sendToBack Not functioning correctly for single node
10941094
});
10951095

10961096
});
1097+
1098+
describe('872106: Layer object in diagram doesnot removed in clear method', () => {
1099+
let diagram: Diagram;
1100+
let ele: HTMLElement;
1101+
beforeAll((): void => {
1102+
ele = createElement('div', { id: 'diagram_Layers' });
1103+
document.body.appendChild(ele);
1104+
let nodes: NodeModel[] = [
1105+
1106+
{
1107+
id: 'node1', height: 75, width: 75, offsetX: 100, offsetY: 100, annotations: [{ content: 'Layer1' }]
1108+
},
1109+
{
1110+
id: 'node2', height: 75, width: 75, offsetX: 400, offsetY: 100, annotations: [{ content: 'Layer2' }]
1111+
},
1112+
{
1113+
id: 'node3', height: 75, width: 75, offsetX: 150, offsetY: 150, annotations: [{ content: 'Layer3' }]
1114+
},
1115+
{
1116+
id: 'node4', height: 75, width: 75, offsetX: 450, offsetY: 150, annotations: [{ content: 'Layer4' }]
1117+
},
1118+
1119+
];
1120+
let layers: LayerModel[] = [
1121+
{
1122+
id: 'Layer1',
1123+
visible: true,
1124+
objects: ['node1'],
1125+
lock: false,
1126+
zIndex: 0
1127+
},
1128+
{
1129+
id: 'Layer2',
1130+
visible: true,
1131+
objects: ['node2'],
1132+
lock: false,
1133+
zIndex: 1
1134+
},
1135+
{
1136+
id: 'Layer3',
1137+
visible: true,
1138+
objects: ['node3'],
1139+
lock: false,
1140+
},
1141+
{
1142+
id: 'Layer4',
1143+
visible: true,
1144+
objects: ['node4'],
1145+
lock: false,
1146+
}
1147+
];
1148+
1149+
diagram = new Diagram({
1150+
width: '1000px', height: '600px',
1151+
nodes: nodes,
1152+
layers: layers,
1153+
});
1154+
diagram.appendTo("#diagram_Layers");
1155+
});
1156+
afterAll((): void => {
1157+
diagram.destroy();
1158+
ele.remove();
1159+
});
1160+
it('Checking layer length after clearing diagram', (done: Function) => {
1161+
let prevLayerCount = diagram.layers.length;
1162+
diagram.clear();
1163+
let currLayerCount = diagram.layers.length;
1164+
expect(prevLayerCount === 4 && currLayerCount === 1).toBe(true);
1165+
done();
1166+
});
1167+
it('Checking layer length after adding node dynamically', (done: Function) => {
1168+
let node:NodeModel = {id:'newNode',offsetX:100,offsetY:300,width:100,height:50,style:{fill:'green'}};
1169+
diagram.add(node);
1170+
let currLayerCount = diagram.layers.length;
1171+
let nodeCount = diagram.nodes.length;
1172+
expect(currLayerCount === 1 && nodeCount === 1).toBe(true);
1173+
done();
1174+
});
1175+
});

controls/diagrams/spec/diagram/objects/node.spec.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,8 @@ describe('Diagram Control', () => {
211211
mouseEvents.mouseMoveEvent(diagramCanvas, 200, 210);
212212
mouseEvents.mouseMoveEvent(diagramCanvas, 458, 208);
213213
mouseEvents.mouseUpEvent(diagramCanvas, 458, 208);
214-
expect(diagram.nodes[0].ports[0].outEdges.length === 1).toBe(true);
214+
console.log("Ports len "+ diagram.nodes[0].ports[0].outEdges.length);
215+
expect(diagram.nodes[0].ports[0].outEdges.length === 0).toBe(true);
215216
done();
216217
});
217218
});

0 commit comments

Comments
 (0)