Skip to content

Commit f1b2411

Browse files
author
pipeline
committed
v31.2.2 is released
1 parent 8ec0eec commit f1b2411

File tree

145 files changed

+1877
-262
lines changed

Some content is hidden

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

145 files changed

+1877
-262
lines changed

controls/base/CHANGELOG.md

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

33
## [Unreleased]
44

5-
## 31.1.23 (2025-10-07)
5+
## 31.2.2 (2025-10-15)
6+
7+
### Common
8+
9+
#### Bug Fixes
10+
11+
- `#768391` - Resolved the localization issue where Marathi (mr) culture was not applied correctly in Syncfusion components.
12+
13+
## 31.1.22 (2025-10-01)
614

715
### Common
816

controls/base/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-base",
3-
"version": "31.1.20",
3+
"version": "31.1.22",
44
"description": "A common package of Essential JS 2 base libraries, methods and class definitions",
55
"author": "Syncfusion Inc.",
66
"license": "SEE LICENSE IN license",

controls/base/src/intl/date-parser.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,19 @@ export class DateParser {
373373
}
374374
return null;
375375
}
376+
/**
377+
* Escapes all regex metacharacters in a string, preserving the {0} placeholder.
378+
*
379+
* @param {string} str ? - The input string to escape.
380+
* @returns {string} ? - The escaped string with {0} preserved.
381+
*/
382+
private static escapeRegex(str: string): string {
383+
const tempPlaceholder = '__TEMP__';
384+
const tempStr = str.replace('{0}', tempPlaceholder);
385+
const metaChars = /[.*+?^${}()|[\]\\]/g;
386+
const escapedStr = tempStr.replace(metaChars, '\\$&');
387+
return escapedStr.replace(tempPlaceholder, '{0}');
388+
}
376389
/**
377390
* Returns parsed time zone RegExp for provided hour format and time zone
378391
*
@@ -382,7 +395,7 @@ export class DateParser {
382395
* @returns {string} ?
383396
*/
384397
private static parseTimeZoneRegx(hourFormat: string, tZone: base.TimeZoneOptions, nRegex: string): string {
385-
const pattern: string = tZone.gmtFormat;
398+
let pattern: string = tZone.gmtFormat;
386399
let ret: string;
387400
const cRegex: string = '(' + nRegex + ')' + '(' + nRegex + ')';
388401

@@ -392,10 +405,12 @@ export class DateParser {
392405
} else {
393406
ret = ret.replace(/H|m/g, '(' + cRegex + '?)');
394407
}
408+
pattern = this.escapeRegex(pattern);
395409
const splitStr: string[] = (ret.split(';').map((str: string): string => {
396410
return pattern.replace('{0}', str);
397411
}));
398-
ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;
412+
const gmtZeroFormat: string = this.escapeRegex(tZone.gmtZeroFormat);
413+
ret = splitStr.join('|') + '|' + gmtZeroFormat;
399414
return ret;
400415
}
401416
/**

controls/calendars/CHANGELOG.md

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

33
## [Unreleased]
44

5-
## 31.1.23 (2025-10-07)
5+
## 31.2.2 (2025-10-15)
6+
7+
### DatePicker
8+
9+
#### Bug Fixes
10+
11+
- `#I765718` - Resolved an issue where the iPad keyboard would not open after selecting a date in the popup.
612

713
### DatePicker
814

controls/calendars/src/datepicker/datepicker.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,6 +1466,9 @@ export class DatePicker extends Calendar implements IInput {
14661466
});
14671467
}
14681468
}
1469+
if (Browser.isDevice && this.allowEdit && !this.readonly && Browser.isIos) {
1470+
this.inputElement.blur();
1471+
}
14691472
}, close: () => {
14701473
if (this.isDateIconClicked) {
14711474
(this.inputWrapper.container.children[this.index] as HTMLElement).focus();
@@ -1864,6 +1867,11 @@ export class DatePicker extends Calendar implements IInput {
18641867
EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);
18651868
if (Browser.isDevice && this.allowEdit && !this.readonly) {
18661869
this.inputElement.removeAttribute('readonly');
1870+
if (Browser.isIos) {
1871+
setTimeout(() => {
1872+
this.inputElement.focus();
1873+
}, 1);
1874+
}
18671875
}
18681876
this.setAllowEdit();
18691877
}

controls/charts/CHANGELOG.md

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

33
## [Unreleased]
44

5+
## 31.2.2 (2025-10-15)
6+
7+
### Chart
8+
9+
#### Bug Fixes
10+
11+
- `#FB70239` - Now data is displayed properly, while exporting the transposed column chart.
12+
- `#I773676` - DashArray is properly applied to legend for dashed line and spline series.
13+
- `#I769905` - Now the first x-axis label will no longer be removed when dragging the range using the range navigator in a date-time category axis.
14+
15+
### Accumulation Chart
16+
17+
#### Bug Fixes
18+
19+
- `#I770523` - Now the accumulation chart title is properly positioned when set to 'Bottom'.
20+
- `#I770415` - Now the trimmed legend tooltip text is displayed properly on the reversed legend.
21+
522
## 31.1.23 (2025-10-07)
623

724
### Chart

controls/charts/spec/chart/trendlines/linear.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,17 @@ describe('Chart', () => {
455455
chartObj.export('XLSX', 'Chart');
456456
chartObj.refresh();
457457
});
458+
it('Checking a XLSX export with transposed chart', (): void => {
459+
chartObj.loaded = (args: Object): void => {
460+
const element: Element = document.getElementById('container');
461+
expect(element.childElementCount).toBeGreaterThanOrEqual(1);
462+
};
463+
chartObj.isTransposed = true;
464+
chartObj.enableExport = true
465+
chartObj.export('XLSX', 'Chart');
466+
chartObj.refresh();
467+
});
468+
458469
});
459470
it('memory leak', () => {
460471
profile.sample();

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1218,6 +1218,7 @@ export class AccumulationChart extends Component<HTMLElement> implements INotify
12181218
element.style.webkitUserSelect = 'none';
12191219
element.style.position = 'relative';
12201220
element.style.display = 'block';
1221+
element.style.overflow = 'hidden';
12211222
element.style.height = (element.style.height || (this.height && this.height.indexOf('%') === -1)) ? element.style.height : 'inherit';
12221223
let tabColor: string = '';
12231224
switch (this.theme) {
@@ -2202,7 +2203,7 @@ export class AccumulationChart extends Component<HTMLElement> implements INotify
22022203
textAnchor, this.titleCollection, rotation, 'auto'
22032204
);
22042205
const space: number = (this.series[0].type === 'Pie' && this.visibleSeries[0].dataLabel.position === 'Outside' && this.visibleSeries[0].dataLabel.connectorStyle.length) ? stringToNumber(this.visibleSeries[0].dataLabel.connectorStyle.length, this.accBaseModule.radius) : 0;
2205-
if (!this.subTitle && (this.series[0].type !== 'Funnel' && this.series[0].type !== 'Pyramid')) {
2206+
if (!this.subTitle && (this.series[0].type !== 'Funnel' && this.series[0].type !== 'Pyramid') && this.titleStyle.position === 'Top') {
22062207
options.y = parseInt(this.series[0].radius, 10) >= 80 ? options.y :
22072208
(this.accBaseModule.center.y - this.accBaseModule.radius - padding
22082209
- titleHeight - legendHeight - expodeValue - space);

controls/charts/src/chart/axis/date-time-category-axis.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ export class DateTimeCategory extends Category {
109109
else {
110110
if (!this.sameInterval(axis.labels.map(Number)[i as number], axis.labels.map(Number)[i - 1], axis.actualIntervalType, i)
111111
|| axis.isIndexed) {
112-
if (withIn(i - padding, axis.visibleRange)) {
112+
if (withIn(i, axis.visibleRange)) {
113113
triggerLabelRender(
114114
this.chart, i, (axis.isIndexed ? this.getIndexedAxisLabel(axis.labels[i as number], axis.format) :
115115
<string>axis.format(new Date(axis.labels.map(Number)[i as number]))),

controls/charts/src/chart/legend/legend.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export class Legend extends BaseLegend {
114114
(this.chart as Chart).series[series.sourceIndex].trendlines[series.index].visible : series.visible),
115115
seriesType, series.legendImageUrl ? series.legendImageUrl : (series.type === 'Scatter' && series.marker.shape === 'Image' ?
116116
series.marker.imageUrl : ''),
117-
series.marker.shape, series.marker.visible, null, null
117+
series.marker.shape, series.marker.visible, null, null, series.dashArray
118118
));
119119
}
120120
} else if (this.legend.mode === 'Point') {
@@ -126,7 +126,7 @@ export class Legend extends BaseLegend {
126126
points.x.toString(), fill, series.legendShape, (series.category === 'TrendLine' ?
127127
(this.chart as Chart).series[series.sourceIndex].trendlines[series.index].visible : points.visible),
128128
seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '',
129-
series.marker.shape, series.marker.visible
129+
series.marker.shape, series.marker.visible, null, null, series.dashArray
130130
));
131131
}
132132
} else if (this.legend.mode === 'Range') {
@@ -147,7 +147,7 @@ export class Legend extends BaseLegend {
147147
legendLabel, fill, series.legendShape, (series.category === 'TrendLine' ?
148148
(this.chart as Chart).series[series.sourceIndex].trendlines[series.index].visible : points.visible),
149149
seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '',
150-
series.marker.shape, series.marker.visible
150+
series.marker.shape, series.marker.visible, null, null, series.dashArray
151151
));
152152
}
153153
}
@@ -690,3 +690,4 @@ export class Legend extends BaseLegend {
690690
}
691691

692692
}
693+

0 commit comments

Comments
 (0)