Skip to content

Commit 5330ec0

Browse files
author
pipeline
committed
v28.2.11 is released
1 parent 556c642 commit 5330ec0

File tree

189 files changed

+3283
-832
lines changed

Some content is hidden

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

189 files changed

+3283
-832
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-
## 28.2.9 (2025-03-04)
5+
## 28.2.11 (2025-03-11)
66

77
### Barcode
88

controls/barcodegenerator/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ npm install @syncfusion/ej2-barcode-generator
3333

3434
Barcode control is also offered in the following list of frameworks.
3535

36-
| [<img src="https://ej2.syncfusion.com/github/images/angular.svg" height="50" />](https://www.syncfusion.com/angular-ui-components?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Angular](https://www.syncfusion.com/angular-ui-components?utm_medium=listing&utm_source=github)&nbsp;&nbsp;&nbsp;&nbsp; | [<img src="https://ej2.syncfusion.com/github/images/react.svg" height="50" />](https://www.syncfusion.com/react-ui-components?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[React](https://www.syncfusion.com/react-ui-components?utm_medium=listing&utm_source=github)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | [<img src="https://ej2.syncfusion.com/github/images/vue.svg" height="50" />](https://www.syncfusion.com/vue-ui-components?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Vue](https://www.syncfusion.com/vue-ui-components?utm_medium=listing&utm_source=github)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | [<img src="https://ej2.syncfusion.com/github/images/netcore.svg" height="50" />](https://www.syncfusion.com/aspnet-core-ui-controls?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;[ASP.NET&nbsp;Core](https://www.syncfusion.com/aspnet-core-ui-controls?utm_medium=listing&utm_source=github)&nbsp;&nbsp; | [<img src="https://ej2.syncfusion.com/github/images/netmvc.svg" height="50" />](https://www.syncfusion.com/aspnet-mvc-ui-controls?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;[ASP.NET&nbsp;MVC](https://www.syncfusion.com/aspnet-mvc-ui-controls?utm_medium=listing&utm_source=github)&nbsp;&nbsp; |
36+
| [<img src="https://ej2.syncfusion.com/github/images/angular-new.svg" height="50" />](https://www.syncfusion.com/angular-ui-components?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Angular](https://www.syncfusion.com/angular-ui-components?utm_medium=listing&utm_source=github)&nbsp;&nbsp;&nbsp;&nbsp; | [<img src="https://ej2.syncfusion.com/github/images/react.svg" height="50" />](https://www.syncfusion.com/react-ui-components?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[React](https://www.syncfusion.com/react-ui-components?utm_medium=listing&utm_source=github)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | [<img src="https://ej2.syncfusion.com/github/images/vue.svg" height="50" />](https://www.syncfusion.com/vue-ui-components?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Vue](https://www.syncfusion.com/vue-ui-components?utm_medium=listing&utm_source=github)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | [<img src="https://ej2.syncfusion.com/github/images/netcore.svg" height="50" />](https://www.syncfusion.com/aspnet-core-ui-controls?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;[ASP.NET&nbsp;Core](https://www.syncfusion.com/aspnet-core-ui-controls?utm_medium=listing&utm_source=github)&nbsp;&nbsp; | [<img src="https://ej2.syncfusion.com/github/images/netmvc.svg" height="50" />](https://www.syncfusion.com/aspnet-mvc-ui-controls?utm_medium=listing&utm_source=github)<br/>&nbsp;&nbsp;[ASP.NET&nbsp;MVC](https://www.syncfusion.com/aspnet-mvc-ui-controls?utm_medium=listing&utm_source=github)&nbsp;&nbsp; |
3737
| :-----: | :-----: | :-----: | :-----: | :-----: |
3838

3939
## Showcase samples

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-
## 28.2.9 (2025-03-04)
5+
## 28.2.11 (2025-03-11)
66

77
### Common
88

controls/buttons/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-
## 28.2.9 (2025-03-04)
5+
## 28.2.11 (2025-03-11)
66

77
### Button
88

controls/calendars/CHANGELOG.md

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

33
## [Unreleased]
44

5+
## 28.2.11 (2025-03-11)
6+
7+
### TimePicker
8+
9+
#### Bug Fixes
10+
11+
- `#F196127` - Fixed an issue where the change event was not triggered correctly upon the second update of time using the keyboard.
12+
13+
### DatePicker
14+
15+
#### Bug Fixes
16+
17+
- `#FD65170` - Fixed an issue where the day of the week value was not displayed correctly when using `ccc` in the date format.
18+
19+
### DateTimePicker
20+
21+
#### Bug Fixes
22+
23+
- `#FD65170` - Fixed an issue where the day of the week value was not displayed correctly when using `ccc` in the date format.
24+
525
## 28.2.9 (2025-03-04)
626

727
### DateRangePicker

controls/calendars/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-calendars",
3-
"version": "28.2.7",
3+
"version": "28.2.9",
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/datepicker/datepicker.spec.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4430,6 +4430,22 @@ describe('Masked DatePicker', () => {
44304430
expect(datepicker.element.value).toBe('day/month/year day of the week');
44314431
expect(datepicker.value).toBe(null);
44324432
});
4433+
it('with format property - 6', () => {
4434+
let inputEle: HTMLElement = createElement('input', { id: 'datepicker' });
4435+
document.body.appendChild(inputEle);
4436+
datepicker = new DatePicker({enableMask: true , format: "dd'.'ccc'.'MMM'.'yyyy"});
4437+
datepicker.appendTo('#datepicker');
4438+
expect(datepicker.element.value).toBe('day.day of the week.month.year');
4439+
expect(datepicker.value).toBe(null);
4440+
});
4441+
it('with format property - 7', () => {
4442+
let inputEle: HTMLElement = createElement('input', { id: 'datepicker' });
4443+
document.body.appendChild(inputEle);
4444+
datepicker = new DatePicker({enableMask: true , format: "dd'.'cccc'.'MMM'.'yyyy"});
4445+
datepicker.appendTo('#datepicker');
4446+
expect(datepicker.element.value).toBe('day.day of the week.month.year');
4447+
expect(datepicker.value).toBe(null);
4448+
});
44334449
it('Focusing the component', () => {
44344450
let inputEle: HTMLElement = createElement('input', { id: 'datepicker' });
44354451
document.body.appendChild(inputEle);
@@ -5600,4 +5616,4 @@ describe('Null or undefined value testing', () => {
56005616
datepickerObj.destroy();
56015617
});
56025618
});
5603-
});
5619+
});

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3506,6 +3506,22 @@ describe('Datetimepicker', () => {
35063506
expect(datetimepicker.element.value).toBe('day/month/year day of the week');
35073507
expect(datetimepicker.value).toBe(null);
35083508
});
3509+
it('With format property - 6 ', () => {
3510+
let inputEle: HTMLElement = createElement('input', { id: 'datetimepicker' });
3511+
document.body.appendChild(inputEle);
3512+
datetimepicker = new DateTimePicker({enableMask: true , format: "dd'.'ccc'.'MMM'.'yyyy' 'HH':'mm':'ss"});
3513+
datetimepicker.appendTo('#datetimepicker');
3514+
expect(datetimepicker.element.value).toBe('day.day of the week.month.year hour:minute:second');
3515+
expect(datetimepicker.value).toBe(null);
3516+
});
3517+
it('with format property - 7', () => {
3518+
let inputEle: HTMLElement = createElement('input', { id: 'datetimepicker' });
3519+
document.body.appendChild(inputEle);
3520+
datetimepicker = new DateTimePicker({enableMask: true , format: "dd'.'cccc'.'MMM'.'yyyy' 'HH':'mm':'ss"});
3521+
datetimepicker.appendTo('#datetimepicker');
3522+
expect(datetimepicker.element.value).toBe('day.day of the week.month.year hour:minute:second');
3523+
expect(datetimepicker.value).toBe(null);
3524+
});
35093525
// it('Clear button', () => {
35103526
// let inputEle: HTMLElement = createElement('input', { id: 'datetimepicker' });
35113527
// document.body.appendChild(inputEle);

controls/calendars/src/daterangepicker/daterangepicker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1621,7 +1621,7 @@ export class DateRangePicker extends CalendarBase {
16211621
}
16221622

16231623
private getStartEndDate(date: Date, isEnd: boolean): Date {
1624-
if (this.currentView() === 'Year' && !isNullOrUndefined(date)) {
1624+
if ((this.currentView() === 'Year' && !isNullOrUndefined(date)) || this.depth === 'Year') {
16251625
return new Date(date.getFullYear(), date.getMonth() + (isEnd ? 1 : 0), isEnd ? 0 : 1);
16261626
} else if (this.currentView() === 'Decade' && !isNullOrUndefined(date)) {
16271627
return new Date(date.getFullYear(), isEnd ? 11 : 0, isEnd ? 31 : 1);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class MaskedDateTime {
4848
private isNavigate : boolean = false;
4949
private navigated : boolean = false;
5050
private isBlur : boolean = false;
51-
private formatRegex : RegExp = /EEEEE|EEEE|EEE|EE|E|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;
51+
private formatRegex : RegExp = /EEEEE|EEEE|EEE|EE|E|cccc|ccc|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;
5252
private isDeletion: boolean = false;
5353
private isShortYear: boolean = false;
5454
private isDeleteKey: boolean = false;
@@ -576,9 +576,11 @@ export class MaskedDateTime {
576576
case 'E' :
577577
case 'EE':
578578
case 'EEE':
579+
case 'ccc':
579580
result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysAbbreviated[dayKeyAbbreviated[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();
580581
break;
581582
case 'EEEE':
583+
case 'cccc':
582584
result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysWide[dayKeyWide[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();
583585
break;
584586
case 'EEEEE':

0 commit comments

Comments
 (0)