Skip to content

Commit ab66b5b

Browse files
author
pipeline
committed
v31.2.16 is released
1 parent 65268ac commit ab66b5b

File tree

129 files changed

+3136
-1509
lines changed

Some content is hidden

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

129 files changed

+3136
-1509
lines changed

controls/base/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-
## 31.2.15 (2025-11-25)
5+
## 31.2.16 (2025-12-02)
66

77
### Common
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-
## 31.2.15 (2025-11-25)
5+
## 31.2.16 (2025-12-02)
66

77
### DatePicker
88

controls/calendars/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
[![coverage](http://ej2.syncfusion.com/badges/ej2-calendars/coverage.svg)](http://ej2.syncfusion.com/badges/ej2-calendars)
2+
13
# JavaScript Calendars Controls
24

35
The [JavaScript Calendars](https://www.syncfusion.com/javascript-ui-controls/js-calendar?utm_source=npm&utm_medium=listing&utm_campaign=javascript-calendar-npm) package contains date and time components such as calendar, date picker, date range picker, date time picker, and time picker. These components come with options to disable dates, restrict selection, and show custom events.

controls/calendars/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"@syncfusion/ej2-buttons": "*",
1313
"@syncfusion/ej2-inputs": "*",
1414
"@syncfusion/ej2-lists": "*",
15-
"@syncfusion/ej2-popups": "*"
15+
"@syncfusion/ej2-popups": "*",
16+
"markdown-spellcheck": "^1.3.1"
1617
},
1718
"devDependencies": {
1819
"@syncfusion/ej2-staging": "^1.0.1",

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5243,5 +5243,33 @@ describe('Null or undefined value testing', () => {
52435243
datetimepickerObj.destroy();
52445244
});
52455245
});
5246+
describe('Masked date time code coverage improvements ', () => {
5247+
let date: DateTimePicker;
5248+
let datetimepicker: any;
5249+
beforeEach(() => {
5250+
let ele: HTMLElement = createElement('input', { id: 'date' });
5251+
document.body.appendChild(ele);
5252+
});
5253+
afterEach(() => {
5254+
if (date) {
5255+
date.destroy();
5256+
}
5257+
document.body.innerHTML = '';
5258+
});
5259+
it('Create Mask', () => {
5260+
datetimepicker = new DateTimePicker({
5261+
value: new Date('5/6/2017 10:30 AM'),
5262+
enableMask: true,
5263+
format: 'MM/dd/yyyy hh:mm'
5264+
5265+
});
5266+
let mask : MaskedDateTime = new MaskedDateTime(datetimepicker);
5267+
(<any>mask).parent = datetimepicker;
5268+
datetimepicker.appendTo('#date');
5269+
(<any>mask).normalizeTokenIndex(11 , true);
5270+
(<any>mask).normalizeTokenIndex(12 , false);
5271+
datetimepicker.destroy();
5272+
});
5273+
});
52465274
});
52475275

controls/calendars/src/maskbase/masked-date-time.ts

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,9 @@ export class MaskedDateTime {
751751

752752
private maskInputHandler(): void {
753753
let start: number = this.parent.inputElement.selectionStart;
754+
if (Browser.isDevice && (Browser.isIos || Browser.isIos7)) {
755+
start = this.normalizeTokenIndex(start);
756+
}
754757
let formatText: string = '';
755758
if (this.validCharacters.indexOf(this.hiddenMask[start as number]) !== -1) {
756759
formatText = this.hiddenMask[start as number];
@@ -770,10 +773,17 @@ export class MaskedDateTime {
770773
break;
771774
}
772775
}
773-
let scrollPositionY: number;
776+
let scrollContext: any = null;
777+
let savedScrollTop: number = 0;
774778
if (Browser.isDevice && (Browser.isIos || Browser.isIos7)) {
775779
const scrollableParent: HTMLElement | null = this.findScrollableParent(this.parent.inputElement);
776-
scrollPositionY = scrollableParent ? scrollableParent.getBoundingClientRect().top : window.scrollY;
780+
if (scrollableParent) {
781+
scrollContext = scrollableParent;
782+
savedScrollTop = scrollableParent.scrollTop;
783+
} else {
784+
scrollContext = window;
785+
savedScrollTop = window.pageYOffset || document.documentElement.scrollTop || 0;
786+
}
777787
}
778788
this.parent.inputElement.selectionStart = start;
779789
this.validCharacterCheck();
@@ -783,7 +793,12 @@ export class MaskedDateTime {
783793
this.navigateSelection(isbackward);
784794
if (Browser.isDevice && (Browser.isIos || Browser.isIos7)) {
785795
setTimeout(() => {
786-
window.scrollTo(0, scrollPositionY);
796+
if (scrollContext) {
797+
scrollContext.scrollTop = savedScrollTop;
798+
}
799+
else {
800+
window.scrollTo(0, savedScrollTop);
801+
}
787802
}, 0);
788803
}
789804
}
@@ -999,6 +1014,23 @@ export class MaskedDateTime {
9991014
this.dayTypeCount = 0;
10001015
this.monthTypeCount = 0;
10011016
}
1017+
private isMaskToken(i: number): boolean {
1018+
return i >= 0 && i < this.hiddenMask.length &&
1019+
this.validCharacters.indexOf(this.hiddenMask[i as number]) !== -1;
1020+
}
1021+
private normalizeTokenIndex(index: number, preferPrev: boolean = false): number {
1022+
if (this.isMaskToken(index)) { return index; }
1023+
const prev: number = index - 1;
1024+
const next: number = index + 1;
1025+
if (preferPrev) {
1026+
if (this.isMaskToken(prev)) { return prev; }
1027+
if (this.isMaskToken(next)) { return next; }
1028+
} else {
1029+
if (this.isMaskToken(next)) { return next; }
1030+
if (this.isMaskToken(prev)) { return prev; }
1031+
}
1032+
return index;
1033+
}
10021034

10031035
public destroy(): void {
10041036
this.removeEventListener();

controls/charts/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.2.15 (2025-11-25)
5+
## 31.2.16 (2025-12-02)
6+
7+
### Chart
8+
9+
#### Bug Fixes
10+
11+
- `#I788505` - Hovering over the scatter chart in the spreadsheet now does not throw a console error.
12+
13+
## 31.2.8 (2025-12-02)
614

715
### Chart
816

controls/charts/src/chart/user-interaction/tooltip.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,10 @@ export class Tooltip extends BaseTooltip {
122122
const isStockSvg: boolean = this.chart.stockChart && svgElement && (svgElement.firstChild.childNodes.length > 1);
123123
const isTooltip: boolean = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0 && !isStockSvg);
124124
const tooltipDiv: HTMLDivElement = this.getTooltipElement(isTooltip);
125-
if (this.chart.enableCanvas && tooltipDiv) {
125+
const tooltipSvg: HTMLElement = (document.getElementById(this.chart.element.id + '_tooltip_svg'));
126+
if (this.chart.enableCanvas && tooltipDiv && tooltipSvg) {
126127
document.getElementById(this.chart.element.id + '_Secondary_Element').appendChild(tooltipDiv);
127-
tooltipDiv.appendChild(document.getElementById(this.chart.element.id + '_tooltip_svg'));
128+
tooltipDiv.appendChild(tooltipSvg);
128129
}
129130
if (!this.chart.tooltip.shared) {
130131
this.renderSeriesTooltip(this.chart, !isTooltip, tooltipDiv);

controls/data/CHANGELOG.md

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

33
## [Unreleased]
44

5-
## 31.2.15 (2025-11-25)
5+
## 31.2.16 (2025-12-02)
6+
7+
### DataManager
8+
9+
#### Bug Fixes
10+
11+
- `#I786132` - Resolved a script error that occurred when opening the filter dialog in a grid with `enableInfiniteScrolling` enabled in filterSettings while using the `RemoteSaveAdaptor`.
12+
- `#I786004` - The issue where changing the pageSize via the pager dropdown did not update the page size correctly when the `enableCache` property was set in the `DataManager` within the grid has been resolved.
13+
14+
## 31.2.5 (2025-11-04)
615

716
### DataManager
817

controls/data/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-data",
3-
"version": "31.2.3",
3+
"version": "31.2.12",
44
"description": "Essential JS 2 DataManager",
55
"author": "Syncfusion Inc.",
66
"license": "SEE LICENSE IN license",

0 commit comments

Comments
 (0)