Skip to content

Commit 75747d3

Browse files
author
pipeline
committed
v17.2.41 is released
1 parent ce5401d commit 75747d3

File tree

531 files changed

+25873
-6310
lines changed

Some content is hidden

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

531 files changed

+25873
-6310
lines changed

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": "17.2.39",
3+
"version": "17.2.40",
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/styles/common/_core.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
#{&} .e-rtl {
2929
direction: rtl;
30+
text-align: right;
3031
}
3132

3233
#{&} .e-overlay {

controls/calendars/CHANGELOG.md

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

33
## [Unreleased]
44

5+
## 17.2.41 (2019-08-14)
6+
7+
### DateRangePicker
8+
9+
#### Bug Fixes
10+
11+
- `#F146493` - Issue with "DateRangePicker popup not opened on the second click action in iPad devices" has been resolved.
12+
513
## 17.2.36 (2019-07-24)
614

715
### DatePicker

controls/calendars/dist/ej2-calendars.umd.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controls/calendars/dist/ej2-calendars.umd.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controls/calendars/dist/es6/ej2-calendars.es2015.js

Lines changed: 137 additions & 114 deletions
Large diffs are not rendered by default.

controls/calendars/dist/es6/ej2-calendars.es2015.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controls/calendars/dist/es6/ej2-calendars.es5.js

Lines changed: 143 additions & 120 deletions
Large diffs are not rendered by default.

controls/calendars/dist/es6/ej2-calendars.es5.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controls/calendars/dist/global/ej2-calendars.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controls/calendars/dist/global/ej2-calendars.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controls/calendars/spec/datepicker/datepicker.spec.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2406,6 +2406,75 @@ describe('Datepicker', () => {
24062406
expect(datepicker.popupObj).toBe(null);
24072407
});
24082408
});
2409+
describe('HTML attribute API at inital rendering and dynamic rendering', () => {
2410+
let datePicker: any;
2411+
beforeEach((): void => {
2412+
datePicker = undefined;
2413+
let ele: HTMLInputElement = <HTMLInputElement>createElement('input', { id: 'date' });
2414+
document.body.appendChild(ele);
2415+
});
2416+
afterEach((): void => {
2417+
if (datePicker) {
2418+
datePicker.destroy();
2419+
}
2420+
document.body.innerHTML = '';
2421+
});
2422+
it('Html attributes at initial rendering', () => {
2423+
datePicker = new DatePicker({ htmlAttributes:{placeholder:"Choose the date", class: "sample" } });
2424+
datePicker.appendTo('#date');
2425+
expect(datePicker.element.getAttribute('placeholder')).toBe('Choose the date');
2426+
expect(datePicker.inputWrapper.container.classList.contains('sample')).toBe(true);
2427+
});
2428+
it('Pass multiple attributes dynamically', () => {
2429+
datePicker = new DatePicker({ value: new Date("12/12/2016") });
2430+
datePicker.appendTo('#date');
2431+
datePicker.htmlAttributes = { class:"sample", readonly: "true", disabled: "true"};
2432+
datePicker.dataBind();
2433+
expect(datePicker.element.value).toBe('12/12/2016');
2434+
expect(datePicker.inputWrapper.container.classList.contains('sample')).toBe(true);
2435+
expect(datePicker.element.hasAttribute('readonly')).toBe(true);
2436+
expect(datePicker.element.hasAttribute('disabled')).toBe(true);
2437+
});
2438+
it('Dynamically change attributes through htmlAttributes API', () => {
2439+
datePicker = new DatePicker({ value: new Date("12/12/2016") });
2440+
datePicker.appendTo('#date');
2441+
datePicker.inputElement.value = "10/12/2016";
2442+
datePicker.htmlAttributes = { class:"sample" };
2443+
datePicker.dataBind();
2444+
expect(datePicker.element.value).toBe('10/12/2016');
2445+
});
2446+
it('Dynamically change multiple attributes through htmlAttributes API', () => {
2447+
datePicker = new DatePicker({ value: new Date("12/12/2019") });
2448+
datePicker.appendTo('#date');
2449+
datePicker.htmlAttributes = { class:"sample" , max:'10/20/19', min:'10/5/19'};
2450+
datePicker.dataBind();
2451+
expect(datePicker.element.value).toBe("12/12/2019");
2452+
expect(datePicker.element.getAttribute('max')).toBe('10/20/19');
2453+
expect(datePicker.element.getAttribute('min')).toBe('10/5/19');
2454+
});
2455+
it('Pass null value in htmlAttributes', () => {
2456+
datePicker = new DatePicker({ value: new Date("12/12/2016") });
2457+
datePicker.appendTo('#date');
2458+
datePicker.htmlAttributes = { null: "null"};
2459+
datePicker.dataBind();
2460+
expect(datePicker.element.value).toBe('12/12/2016');
2461+
});
2462+
it('Pass undefined in htmlAttributes', () => {
2463+
datePicker = new DatePicker({ value: new Date("12/12/2016") });
2464+
datePicker.appendTo('#date');
2465+
datePicker.htmlAttributes = { undefined: "undefined"};
2466+
datePicker.dataBind();
2467+
expect(datePicker.element.value).toBe('12/12/2016');
2468+
});
2469+
it('Pass empty value in htmlAttributes', () => {
2470+
datePicker = new DatePicker({ value: new Date("12/12/2016") });
2471+
datePicker.appendTo('#date');
2472+
datePicker.inputElement.value = "10/12/2016";
2473+
datePicker.htmlAttributes = {};
2474+
datePicker.dataBind();
2475+
expect(datePicker.element.value).toBe('10/12/2016');
2476+
});
2477+
});
24092478
describe('keyboard events', () => {
24102479
let datePicker: any;
24112480
let keyEventArgs: any = {

controls/calendars/spec/daterangepicker/daterangepicker.spec.ts

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4695,6 +4695,76 @@ describe('DateRangePicker', () => {
46954695
});
46964696
});
46974697

4698+
describe('HTML attribute API at inital rendering and dynamic rendering', () => {
4699+
let daterangepicker: any;
4700+
beforeEach((): void => {
4701+
daterangepicker = undefined;
4702+
let ele: HTMLInputElement = <HTMLInputElement>createElement('input', { id: 'daterange' });
4703+
document.body.appendChild(ele);
4704+
});
4705+
afterEach((): void => {
4706+
if (daterangepicker) {
4707+
daterangepicker.destroy();
4708+
}
4709+
document.body.innerHTML = '';
4710+
});
4711+
it('Html attributes at initial rendering', () => {
4712+
daterangepicker = new DateRangePicker({ htmlAttributes:{placeholder:"Choose a date", class: "sample" } });
4713+
daterangepicker.appendTo('#daterange');
4714+
expect(daterangepicker.element.getAttribute('placeholder')).toBe('Choose a date');
4715+
expect(daterangepicker.inputWrapper.container.classList.contains('sample')).toBe(true);
4716+
});
4717+
it('Pass multiple attributes dynamically', () => {
4718+
daterangepicker = new DateRangePicker({ startDate: new Date('4/24/2017'), endDate: new Date('8/10/2017') });
4719+
daterangepicker.appendTo('#daterange');
4720+
daterangepicker.htmlAttributes = { class:"sample", readonly: "true", disabled: "true"};
4721+
daterangepicker.dataBind();
4722+
expect(daterangepicker.element.value).toBe('4/24/2017 - 8/10/2017');
4723+
expect(daterangepicker.inputWrapper.container.classList.contains('sample')).toBe(true);
4724+
expect(daterangepicker.element.hasAttribute('readonly')).toBe(true);
4725+
expect(daterangepicker.element.hasAttribute('disabled')).toBe(true);
4726+
});
4727+
it('Dynamically change attributes through htmlAttributes API', () => {
4728+
daterangepicker = new DateRangePicker({ startDate: new Date('4/24/2017'), endDate: new Date('8/10/2017') });
4729+
daterangepicker.appendTo('#daterange');
4730+
daterangepicker.inputElement.value = "5/5/2019 - 6/10/2019";
4731+
daterangepicker.htmlAttributes = { class:"sample" };
4732+
daterangepicker.dataBind();
4733+
expect(daterangepicker.element.value).toBe('5/5/2019 - 6/10/2019');
4734+
});
4735+
it('Dynamically change multiple attributes through htmlAttributes API', () => {
4736+
daterangepicker = new DateRangePicker({ startDate: new Date('4/24/2017'), endDate: new Date('8/10/2017') });
4737+
daterangepicker.appendTo('#daterange');
4738+
daterangepicker.htmlAttributes = { class:"sample" , max:'5/15/2019', min:'6/5/2019'};
4739+
daterangepicker.dataBind();
4740+
expect(daterangepicker.element.value).toBe('4/24/2017 - 8/10/2017');
4741+
expect(daterangepicker.element.getAttribute('max')).toBe('5/15/2019');
4742+
expect(daterangepicker.element.getAttribute('min')).toBe('6/5/2019');
4743+
});
4744+
it('Pass null value in htmlAttributes', () => {
4745+
daterangepicker = new DateRangePicker({ startDate: new Date('4/24/2017'), endDate: new Date('8/10/2017') });
4746+
daterangepicker.appendTo('#daterange');
4747+
daterangepicker.htmlAttributes = { null: "null"};
4748+
daterangepicker.dataBind();
4749+
expect(daterangepicker.element.value).toBe('4/24/2017 - 8/10/2017');
4750+
});
4751+
it('Pass undefined in htmlAttributes', () => {
4752+
daterangepicker = new DateRangePicker({ startDate: new Date('4/24/2017'), endDate: new Date('8/10/2017') });
4753+
daterangepicker.appendTo('#daterange');
4754+
daterangepicker.htmlAttributes = { undefined: "undefined"};
4755+
daterangepicker.dataBind();
4756+
expect(daterangepicker.element.value).toBe('4/24/2017 - 8/10/2017');
4757+
});
4758+
it('Pass empty value in htmlAttributes', () => {
4759+
daterangepicker = new DateRangePicker({ startDate: new Date('4/24/2017'), endDate: new Date('8/10/2017') });
4760+
daterangepicker.appendTo('#daterange');
4761+
daterangepicker.inputElement.value = "5/5/2019 - 6/10/2019";
4762+
daterangepicker.htmlAttributes = {};
4763+
daterangepicker.dataBind();
4764+
expect(daterangepicker.element.value).toBe('5/5/2019 - 6/10/2019');
4765+
});
4766+
});
4767+
46984768
describe('MinDays and MaxDays - Desktop', () => {
46994769
let daterangepicker: any;
47004770
let keyEventArgs: any = {

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

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1688,7 +1688,7 @@ describe('HTML attribute API dynamic testing', () => {
16881688
expect(datetimepicker.element.min).toBe('2/10/2018');
16891689
expect(datetimepicker.element.max).toBe('2/25/2018');
16901690
expect(datetimepicker.inputWrapper.container.getAttribute('title')).toBe('sample');
1691-
datetimepicker.htmlAttributes = { placeholder:"choose a date", readonly: "false", disabled: "", value: "4/20/2018", max: "4/25/2018", min: "4/10/2018", title:"heading"};
1691+
datetimepicker.htmlAttributes = { placeholder:"choose a date", readonly: "false", disabled: "false", value: "4/20/2018", max: "4/25/2018", min: "4/10/2018", title:"heading"};
16921692
datetimepicker.dataBind();
16931693
expect(datetimepicker.element.getAttribute('placeholder')).toBe('choose a date');
16941694
expect(datetimepicker.element.hasAttribute('readonly')).toBe(false);
@@ -1749,7 +1749,75 @@ describe('HTML attribute API dynamic testing', () => {
17491749
expect(document.querySelector('.e-float-text').innerHTML).toBe('choose a date');
17501750
});
17511751
});
1752-
1752+
describe('HTML attribute API at inital rendering and dynamic rendering', () => {
1753+
let datetimepicker: any;
1754+
beforeEach((): void => {
1755+
datetimepicker = undefined;
1756+
let ele: HTMLInputElement = <HTMLInputElement>createElement('input', { id: 'datetime' });
1757+
document.body.appendChild(ele);
1758+
});
1759+
afterEach((): void => {
1760+
if (datetimepicker) {
1761+
datetimepicker.destroy();
1762+
}
1763+
document.body.innerHTML = '';
1764+
});
1765+
it('Html attributes at initial rendering', () => {
1766+
datetimepicker = new DateTimePicker({ htmlAttributes:{placeholder:"Choose a date", class: "sample" } });
1767+
datetimepicker.appendTo('#datetime');
1768+
expect(datetimepicker.element.getAttribute('placeholder')).toBe('Choose a date');
1769+
expect(datetimepicker.inputWrapper.container.classList.contains('sample')).toBe(true);
1770+
});
1771+
it('Pass multiple attributes dynamically', () => {
1772+
datetimepicker = new DateTimePicker({ value: new Date("12/12/2016 10:00") });
1773+
datetimepicker.appendTo('#datetime');
1774+
datetimepicker.htmlAttributes = { class:"sample", readonly: "true", disabled: "true"};
1775+
datetimepicker.dataBind();
1776+
expect(datetimepicker.element.value).toBe('12/12/2016 10:00 AM');
1777+
expect(datetimepicker.inputWrapper.container.classList.contains('sample')).toBe(true);
1778+
expect(datetimepicker.element.hasAttribute('readonly')).toBe(true);
1779+
expect(datetimepicker.element.hasAttribute('disabled')).toBe(true);
1780+
});
1781+
it('Dynamically change attributes through htmlAttributes API', () => {
1782+
datetimepicker = new DateTimePicker({ value: new Date("12/12/2016 10:00") });
1783+
datetimepicker.appendTo('#datetime');
1784+
datetimepicker.inputElement.value = '10/10/2016 10:00';
1785+
datetimepicker.htmlAttributes = { class:"sample" };
1786+
datetimepicker.dataBind();
1787+
expect(datetimepicker.element.value).toBe('10/10/2016 10:00');
1788+
});
1789+
it('Dynamically change multiple attributes through htmlAttributes API', () => {
1790+
datetimepicker = new DateTimePicker({ value: new Date("12/12/2016 10:00 AM") });
1791+
datetimepicker.appendTo('#datetime');
1792+
datetimepicker.htmlAttributes = { class:"sample" , max:'10/5/2016 10:00', min:'10/20/2016 10:00'};
1793+
datetimepicker.dataBind();
1794+
expect(datetimepicker.element.value).toBe('12/12/2016 10:00 AM');
1795+
expect(datetimepicker.element.getAttribute('max')).toBe('10/5/2016 10:00');
1796+
expect(datetimepicker.element.getAttribute('min')).toBe('10/20/2016 10:00');
1797+
});
1798+
it('Pass null value in htmlAttributes', () => {
1799+
datetimepicker = new DateTimePicker({ value: new Date("12/12/2016 10:00 AM") });
1800+
datetimepicker.appendTo('#datetime');
1801+
datetimepicker.htmlAttributes = { null: "null"};
1802+
datetimepicker.dataBind();
1803+
expect(datetimepicker.element.value).toBe('12/12/2016 10:00 AM');
1804+
});
1805+
it('Pass undefined in htmlAttributes', () => {
1806+
datetimepicker = new DateTimePicker({value: new Date("12/12/2016 10:00 AM") });
1807+
datetimepicker.appendTo('#datetime');
1808+
datetimepicker.htmlAttributes = { undefined: "undefined"};
1809+
datetimepicker.dataBind();
1810+
expect(datetimepicker.element.value).toBe('12/12/2016 10:00 AM');
1811+
});
1812+
it('Pass empty value in htmlAttributes', () => {
1813+
datetimepicker = new DateTimePicker({ value: new Date("12/12/2016 10:00") });
1814+
datetimepicker.appendTo('#datetime');
1815+
datetimepicker.inputElement.value = "12/12/2016 10:00";
1816+
datetimepicker.htmlAttributes = {};
1817+
datetimepicker.dataBind();
1818+
expect(datetimepicker.element.value).toBe('12/12/2016 10:00');
1819+
});
1820+
});
17531821
describe('keyboard events', () => {
17541822
let datetimepicker: any;
17551823
let keyEventArgs: any = {

controls/calendars/spec/timepicker/timepicker.spec.ts

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2470,7 +2470,76 @@ describe('TimePicker', () => {
24702470
expect(document.querySelector('.e-float-text').innerHTML).toBe('choose a date');
24712471
});
24722472
});
2473-
2473+
describe('HTML attribute API at inital rendering and dynamic rendering', () => {
2474+
let timeObj: any;
2475+
beforeEach((): void => {
2476+
timeObj = undefined;
2477+
let ele: HTMLInputElement = <HTMLInputElement>createElement('input', { id: 'time' });
2478+
document.body.appendChild(ele);
2479+
});
2480+
afterEach((): void => {
2481+
if (timeObj) {
2482+
timeObj.destroy();
2483+
}
2484+
document.body.innerHTML = '';
2485+
});
2486+
it('Html attributes at initial rendering', () => {
2487+
timeObj = new TimePicker({ htmlAttributes:{placeholder:"Choose a time", class: "sample" } });
2488+
timeObj.appendTo('#time');
2489+
expect(timeObj.element.getAttribute('placeholder')).toBe('Choose a time');
2490+
expect(timeObj.inputWrapper.container.classList.contains('sample')).toBe(true);
2491+
});
2492+
it('Pass multiple attributes dynamically', () => {
2493+
timeObj = new TimePicker({ value: new Date("12/12/2016 1:00 AM") });
2494+
timeObj.appendTo('#time');
2495+
timeObj.htmlAttributes = { class:"sample", readonly: "true", disabled: "true"};
2496+
timeObj.dataBind();
2497+
expect(timeObj.element.value).toBe('1:00 AM');
2498+
expect(timeObj.inputWrapper.container.classList.contains('sample')).toBe(true);
2499+
expect(timeObj.element.hasAttribute('readonly')).toBe(true);
2500+
expect(timeObj.element.hasAttribute('disabled')).toBe(true);
2501+
});
2502+
it('Dynamically change attributes through htmlAttributes API', () => {
2503+
timeObj = new TimePicker({ value: new Date("12/12/2016 1:00 AM") });
2504+
timeObj.appendTo('#time');
2505+
timeObj.inputElement.value = "10/10/2016 1:00 AM";
2506+
timeObj.htmlAttributes = { class:"sample" };
2507+
timeObj.dataBind();
2508+
expect(timeObj.element.value).toBe('10/10/2016 1:00 AM');
2509+
});
2510+
it('Dynamically change multiple attributes through htmlAttributes API', () => {
2511+
timeObj = new TimePicker({ value: new Date("12/12/2016 1:00 AM") });
2512+
timeObj.appendTo('#time');
2513+
timeObj.element.value = "10/10/2016 1:00 AM";
2514+
timeObj.htmlAttributes = { class:"sample" , max:'10/20/2019', min:'10/5/2019'};
2515+
timeObj.dataBind();
2516+
expect(timeObj.element.value).toBe("10/10/2016 1:00 AM");
2517+
expect(timeObj.element.getAttribute('max')).toBe('10/20/2019');
2518+
expect(timeObj.element.getAttribute('min')).toBe('10/5/2019');
2519+
});
2520+
it('Pass null value in htmlAttributes', () => {
2521+
timeObj = new TimePicker({ value: new Date("12/12/2016 1:00 AM") });
2522+
timeObj.appendTo('#time');
2523+
timeObj.htmlAttributes = { null: "null"};
2524+
timeObj.dataBind();
2525+
expect(timeObj.element.value).toBe('1:00 AM');
2526+
});
2527+
it('Pass undefined in htmlAttributes', () => {
2528+
timeObj = new TimePicker({ value: new Date("12/12/2016 1:00 AM") });
2529+
timeObj.appendTo('#time');
2530+
timeObj.htmlAttributes = { undefined: "undefined"};
2531+
timeObj.dataBind();
2532+
expect(timeObj.element.value).toBe('1:00 AM');
2533+
});
2534+
it('Pass empty value in htmlAttributes', () => {
2535+
timeObj = new TimePicker({ value: new Date("12/12/2016 1:00 AM") });
2536+
timeObj.appendTo('#time');
2537+
timeObj.inputElement.value = "12/12/2016 1:00 AM";
2538+
timeObj.htmlAttributes = {};
2539+
timeObj.dataBind();
2540+
expect(timeObj.element.value).toBe('12/12/2016 1:00 AM');
2541+
});
2542+
});
24742543

24752544
describe('mobile layout testing', () => {
24762545
let ele: HTMLElement = createElement('input', { id: 'timepicker31' });

0 commit comments

Comments
 (0)