@syncfusion/ej2-calendars 20.2.50 → 20.3.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/CHANGELOG.md +0 -6
  2. package/dist/ej2-calendars.min.js +10 -0
  3. package/dist/ej2-calendars.umd.min.js +2 -2
  4. package/dist/ej2-calendars.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-calendars.es2015.js +73 -57
  6. package/dist/es6/ej2-calendars.es2015.js.map +1 -1
  7. package/dist/es6/ej2-calendars.es5.js +73 -57
  8. package/dist/es6/ej2-calendars.es5.js.map +1 -1
  9. package/dist/global/ej2-calendars.min.js +2 -2
  10. package/dist/global/ej2-calendars.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +11 -11
  13. package/src/calendar/calendar.js +4 -5
  14. package/src/calendar/islamic.js +4 -4
  15. package/src/datepicker/datepicker.js +12 -10
  16. package/src/daterangepicker/daterangepicker.d.ts +1 -0
  17. package/src/daterangepicker/daterangepicker.js +30 -18
  18. package/src/datetimepicker/datetimepicker.js +7 -8
  19. package/src/timepicker/timepicker.js +16 -12
  20. package/styles/bootstrap-dark.css +13 -184
  21. package/styles/bootstrap.css +13 -184
  22. package/styles/bootstrap4.css +13 -184
  23. package/styles/bootstrap5-dark.css +18 -186
  24. package/styles/bootstrap5.css +18 -186
  25. package/styles/calendar/_all.scss +1 -1
  26. package/styles/calendar/_bootstrap-dark-definition.scss +8 -7
  27. package/styles/calendar/_bootstrap-definition.scss +6 -6
  28. package/styles/calendar/_bootstrap4-definition.scss +6 -5
  29. package/styles/calendar/_bootstrap5-definition.scss +29 -3
  30. package/styles/calendar/_fabric-dark-definition.scss +4 -1
  31. package/styles/calendar/_fabric-definition.scss +1 -0
  32. package/styles/calendar/_fluent-definition.scss +30 -4
  33. package/styles/calendar/_fusionnew-definition.scss +29 -3
  34. package/styles/calendar/_highcontrast-light-definition.scss +3 -1
  35. package/styles/calendar/_layout.scss +153 -95
  36. package/styles/calendar/_material-dark-definition.scss +3 -1
  37. package/styles/calendar/_material3-definition.scss +29 -3
  38. package/styles/calendar/_tailwind-definition.scss +27 -5
  39. package/styles/calendar/_theme.scss +111 -66
  40. package/styles/calendar/bootstrap-dark.css +1 -0
  41. package/styles/calendar/bootstrap.css +1 -0
  42. package/styles/calendar/bootstrap4.css +1 -0
  43. package/styles/calendar/bootstrap5-dark.css +1 -0
  44. package/styles/calendar/bootstrap5.css +1 -0
  45. package/styles/calendar/fabric-dark.css +1 -0
  46. package/styles/calendar/fabric.css +1 -0
  47. package/styles/calendar/fluent-dark.css +1 -0
  48. package/styles/calendar/fluent.css +1 -0
  49. package/styles/calendar/highcontrast-light.css +1 -0
  50. package/styles/calendar/highcontrast.css +1 -0
  51. package/styles/calendar/icons/_bootstrap-dark.scss +2 -1
  52. package/styles/calendar/icons/_bootstrap.scss +2 -1
  53. package/styles/calendar/icons/_bootstrap4.scss +2 -1
  54. package/styles/calendar/icons/_bootstrap5.scss +2 -1
  55. package/styles/calendar/icons/_fabric-dark.scss +2 -1
  56. package/styles/calendar/icons/_fabric.scss +2 -1
  57. package/styles/calendar/icons/_fluent.scss +2 -1
  58. package/styles/calendar/icons/_fusionnew.scss +2 -1
  59. package/styles/calendar/icons/_highcontrast-light.scss +2 -1
  60. package/styles/calendar/icons/_highcontrast.scss +2 -1
  61. package/styles/calendar/icons/_material-dark.scss +2 -1
  62. package/styles/calendar/icons/_material.scss +2 -1
  63. package/styles/calendar/icons/_material3.scss +2 -1
  64. package/styles/calendar/icons/_tailwind.scss +2 -1
  65. package/styles/calendar/material-dark.css +1 -0
  66. package/styles/calendar/material.css +1 -0
  67. package/styles/calendar/tailwind-dark.css +2 -0
  68. package/styles/calendar/tailwind.css +2 -0
  69. package/styles/datepicker/_all.scss +1 -1
  70. package/styles/datepicker/_bootstrap-dark-definition.scss +4 -1
  71. package/styles/datepicker/_bootstrap-definition.scss +2 -0
  72. package/styles/datepicker/_bootstrap4-definition.scss +2 -0
  73. package/styles/datepicker/_bootstrap5-definition.scss +5 -1
  74. package/styles/datepicker/_fabric-dark-definition.scss +3 -0
  75. package/styles/datepicker/_fabric-definition.scss +2 -0
  76. package/styles/datepicker/_fluent-definition.scss +4 -1
  77. package/styles/datepicker/_fusionnew-definition.scss +5 -1
  78. package/styles/datepicker/_highcontrast-definition.scss +2 -0
  79. package/styles/datepicker/_highcontrast-light-definition.scss +4 -1
  80. package/styles/datepicker/_layout.scss +23 -18
  81. package/styles/datepicker/_material-dark-definition.scss +4 -1
  82. package/styles/datepicker/_material-definition.scss +2 -0
  83. package/styles/datepicker/_material3-definition.scss +5 -1
  84. package/styles/datepicker/_tailwind-definition.scss +5 -1
  85. package/styles/datepicker/_theme.scss +7 -7
  86. package/styles/datepicker/bootstrap-dark.css +3 -80
  87. package/styles/datepicker/bootstrap.css +3 -80
  88. package/styles/datepicker/bootstrap4.css +3 -80
  89. package/styles/datepicker/bootstrap5-dark.css +4 -81
  90. package/styles/datepicker/bootstrap5.css +4 -81
  91. package/styles/datepicker/fabric-dark.css +3 -80
  92. package/styles/datepicker/fabric.css +3 -80
  93. package/styles/datepicker/fluent-dark.css +4 -81
  94. package/styles/datepicker/fluent.css +4 -81
  95. package/styles/datepicker/highcontrast-light.css +3 -80
  96. package/styles/datepicker/highcontrast.css +3 -80
  97. package/styles/datepicker/icons/_bootstrap-dark.scss +7 -6
  98. package/styles/datepicker/icons/_bootstrap.scss +7 -6
  99. package/styles/datepicker/icons/_bootstrap4.scss +7 -6
  100. package/styles/datepicker/icons/_bootstrap5.scss +7 -6
  101. package/styles/datepicker/icons/_fabric-dark.scss +6 -5
  102. package/styles/datepicker/icons/_fabric.scss +7 -6
  103. package/styles/datepicker/icons/_fluent.scss +7 -6
  104. package/styles/datepicker/icons/_fusionnew.scss +7 -6
  105. package/styles/datepicker/icons/_highcontrast-light.scss +7 -6
  106. package/styles/datepicker/icons/_highcontrast.scss +7 -7
  107. package/styles/datepicker/icons/_material-dark.scss +7 -6
  108. package/styles/datepicker/icons/_material.scss +7 -6
  109. package/styles/datepicker/icons/_material3.scss +7 -6
  110. package/styles/datepicker/icons/_tailwind.scss +7 -6
  111. package/styles/datepicker/material-dark.css +3 -80
  112. package/styles/datepicker/material.css +9 -3
  113. package/styles/datepicker/tailwind-dark.css +4 -81
  114. package/styles/datepicker/tailwind.css +4 -81
  115. package/styles/daterangepicker/_all.scss +1 -1
  116. package/styles/daterangepicker/_bootstrap-dark-definition.scss +4 -0
  117. package/styles/daterangepicker/_bootstrap-definition.scss +5 -1
  118. package/styles/daterangepicker/_bootstrap4-definition.scss +4 -0
  119. package/styles/daterangepicker/_bootstrap5-definition.scss +7 -0
  120. package/styles/daterangepicker/_fabric-dark-definition.scss +7 -2
  121. package/styles/daterangepicker/_fabric-definition.scss +5 -1
  122. package/styles/daterangepicker/_fluent-definition.scss +6 -1
  123. package/styles/daterangepicker/_fusionnew-definition.scss +6 -0
  124. package/styles/daterangepicker/_highcontrast-definition.scss +6 -2
  125. package/styles/daterangepicker/_highcontrast-light-definition.scss +8 -3
  126. package/styles/daterangepicker/_layout.scss +144 -71
  127. package/styles/daterangepicker/_material-dark-definition.scss +7 -2
  128. package/styles/daterangepicker/_material-definition.scss +6 -1
  129. package/styles/daterangepicker/_material3-definition.scss +6 -0
  130. package/styles/daterangepicker/_tailwind-definition.scss +5 -0
  131. package/styles/daterangepicker/_theme.scss +55 -27
  132. package/styles/daterangepicker/bootstrap-dark.css +3 -104
  133. package/styles/daterangepicker/bootstrap.css +3 -104
  134. package/styles/daterangepicker/bootstrap4.css +3 -104
  135. package/styles/daterangepicker/bootstrap5-dark.css +5 -105
  136. package/styles/daterangepicker/bootstrap5.css +5 -105
  137. package/styles/daterangepicker/fabric-dark.css +3 -104
  138. package/styles/daterangepicker/fabric.css +3 -104
  139. package/styles/daterangepicker/fluent-dark.css +4 -105
  140. package/styles/daterangepicker/fluent.css +4 -105
  141. package/styles/daterangepicker/highcontrast-light.css +3 -104
  142. package/styles/daterangepicker/highcontrast.css +3 -104
  143. package/styles/daterangepicker/icons/_bootstrap-dark.scss +13 -8
  144. package/styles/daterangepicker/icons/_bootstrap.scss +13 -8
  145. package/styles/daterangepicker/icons/_bootstrap4.scss +13 -8
  146. package/styles/daterangepicker/icons/_bootstrap5.scss +13 -8
  147. package/styles/daterangepicker/icons/_fabric-dark.scss +13 -8
  148. package/styles/daterangepicker/icons/_fabric.scss +13 -8
  149. package/styles/daterangepicker/icons/_fluent.scss +13 -8
  150. package/styles/daterangepicker/icons/_fusionnew.scss +13 -8
  151. package/styles/daterangepicker/icons/_highcontrast-light.scss +13 -8
  152. package/styles/daterangepicker/icons/_highcontrast.scss +13 -8
  153. package/styles/daterangepicker/icons/_material-dark.scss +13 -7
  154. package/styles/daterangepicker/icons/_material.scss +13 -7
  155. package/styles/daterangepicker/icons/_material3.scss +13 -8
  156. package/styles/daterangepicker/icons/_tailwind.scss +13 -8
  157. package/styles/daterangepicker/material-dark.css +5 -106
  158. package/styles/daterangepicker/material.css +12 -0
  159. package/styles/daterangepicker/tailwind-dark.css +5 -105
  160. package/styles/daterangepicker/tailwind.css +5 -105
  161. package/styles/datetimepicker/_all.scss +1 -1
  162. package/styles/datetimepicker/_bootstrap-dark-definition.scss +7 -3
  163. package/styles/datetimepicker/_bootstrap-definition.scss +6 -1
  164. package/styles/datetimepicker/_bootstrap4-definition.scss +6 -1
  165. package/styles/datetimepicker/_bootstrap5-definition.scss +5 -0
  166. package/styles/datetimepicker/_fabric-dark-definition.scss +5 -0
  167. package/styles/datetimepicker/_fabric-definition.scss +4 -0
  168. package/styles/datetimepicker/_fluent-definition.scss +8 -3
  169. package/styles/datetimepicker/_fusionnew-definition.scss +5 -0
  170. package/styles/datetimepicker/_highcontrast-definition.scss +4 -0
  171. package/styles/datetimepicker/_highcontrast-light-definition.scss +6 -1
  172. package/styles/datetimepicker/_layout.scss +2 -3
  173. package/styles/datetimepicker/_material-dark-definition.scss +6 -1
  174. package/styles/datetimepicker/_material-definition.scss +4 -0
  175. package/styles/datetimepicker/_material3-definition.scss +5 -0
  176. package/styles/datetimepicker/_tailwind-definition.scss +5 -0
  177. package/styles/datetimepicker/_theme.scss +2 -1
  178. package/styles/datetimepicker/bootstrap-dark.css +2 -0
  179. package/styles/datetimepicker/bootstrap.css +2 -0
  180. package/styles/datetimepicker/bootstrap4.css +2 -0
  181. package/styles/datetimepicker/bootstrap5-dark.css +3 -0
  182. package/styles/datetimepicker/bootstrap5.css +3 -0
  183. package/styles/datetimepicker/fabric-dark.css +2 -0
  184. package/styles/datetimepicker/fabric.css +2 -0
  185. package/styles/datetimepicker/fluent-dark.css +3 -0
  186. package/styles/datetimepicker/fluent.css +3 -0
  187. package/styles/datetimepicker/highcontrast-light.css +2 -0
  188. package/styles/datetimepicker/highcontrast.css +2 -0
  189. package/styles/datetimepicker/icons/_bootstrap-dark.scss +1 -1
  190. package/styles/datetimepicker/icons/_bootstrap.scss +1 -1
  191. package/styles/datetimepicker/icons/_bootstrap4.scss +1 -1
  192. package/styles/datetimepicker/icons/_bootstrap5.scss +1 -1
  193. package/styles/datetimepicker/icons/_fabric-dark.scss +1 -1
  194. package/styles/datetimepicker/icons/_fabric.scss +1 -1
  195. package/styles/datetimepicker/icons/_fluent.scss +1 -1
  196. package/styles/datetimepicker/icons/_fusionnew.scss +1 -1
  197. package/styles/datetimepicker/icons/_highcontrast-light.scss +1 -0
  198. package/styles/datetimepicker/icons/_highcontrast.scss +1 -1
  199. package/styles/datetimepicker/icons/_material-dark.scss +1 -1
  200. package/styles/datetimepicker/icons/_material.scss +1 -0
  201. package/styles/datetimepicker/icons/_material3.scss +1 -1
  202. package/styles/datetimepicker/icons/_tailwind.scss +1 -1
  203. package/styles/datetimepicker/material-dark.css +2 -0
  204. package/styles/datetimepicker/material.css +2 -0
  205. package/styles/datetimepicker/tailwind-dark.css +3 -0
  206. package/styles/datetimepicker/tailwind.css +3 -0
  207. package/styles/fabric-dark.css +13 -184
  208. package/styles/fabric.css +13 -186
  209. package/styles/fluent-dark.css +17 -186
  210. package/styles/fluent.css +17 -186
  211. package/styles/highcontrast-light.css +13 -184
  212. package/styles/highcontrast.css +13 -184
  213. package/styles/material-dark.css +15 -186
  214. package/styles/material.css +28 -3
  215. package/styles/tailwind-dark.css +19 -186
  216. package/styles/tailwind.css +19 -186
  217. package/styles/timepicker/_all.scss +1 -1
  218. package/styles/timepicker/_bootstrap-dark-definition.scss +6 -1
  219. package/styles/timepicker/_bootstrap-definition.scss +4 -0
  220. package/styles/timepicker/_bootstrap4-definition.scss +5 -0
  221. package/styles/timepicker/_bootstrap5-definition.scss +5 -0
  222. package/styles/timepicker/_fabric-dark-definition.scss +6 -1
  223. package/styles/timepicker/_fabric-definition.scss +4 -0
  224. package/styles/timepicker/_fluent-definition.scss +5 -0
  225. package/styles/timepicker/_fusionnew-definition.scss +5 -0
  226. package/styles/timepicker/_highcontrast-definition.scss +4 -0
  227. package/styles/timepicker/_highcontrast-light-definition.scss +6 -1
  228. package/styles/timepicker/_layout.scss +4 -5
  229. package/styles/timepicker/_material-dark-definition.scss +6 -1
  230. package/styles/timepicker/_material-definition.scss +4 -0
  231. package/styles/timepicker/_material3-definition.scss +5 -0
  232. package/styles/timepicker/_tailwind-definition.scss +5 -0
  233. package/styles/timepicker/_theme.scss +2 -1
  234. package/styles/timepicker/bootstrap-dark.css +4 -0
  235. package/styles/timepicker/bootstrap.css +4 -0
  236. package/styles/timepicker/bootstrap4.css +4 -0
  237. package/styles/timepicker/bootstrap5-dark.css +5 -0
  238. package/styles/timepicker/bootstrap5.css +5 -0
  239. package/styles/timepicker/fabric-dark.css +4 -0
  240. package/styles/timepicker/fabric.css +4 -0
  241. package/styles/timepicker/fluent-dark.css +5 -0
  242. package/styles/timepicker/fluent.css +5 -0
  243. package/styles/timepicker/highcontrast-light.css +4 -0
  244. package/styles/timepicker/highcontrast.css +4 -0
  245. package/styles/timepicker/icons/_bootstrap-dark.scss +1 -2
  246. package/styles/timepicker/icons/_bootstrap.scss +1 -2
  247. package/styles/timepicker/icons/_bootstrap4.scss +1 -2
  248. package/styles/timepicker/icons/_bootstrap5.scss +1 -2
  249. package/styles/timepicker/icons/_fabric-dark.scss +1 -2
  250. package/styles/timepicker/icons/_fabric.scss +1 -2
  251. package/styles/timepicker/icons/_fluent.scss +1 -2
  252. package/styles/timepicker/icons/_fusionnew.scss +1 -2
  253. package/styles/timepicker/icons/_highcontrast-light.scss +1 -2
  254. package/styles/timepicker/icons/_highcontrast.scss +1 -2
  255. package/styles/timepicker/icons/_material-dark.scss +1 -2
  256. package/styles/timepicker/icons/_material.scss +1 -1
  257. package/styles/timepicker/icons/_material3.scss +1 -2
  258. package/styles/timepicker/icons/_tailwind.scss +1 -2
  259. package/styles/timepicker/material-dark.css +4 -0
  260. package/styles/timepicker/material.css +4 -0
  261. package/styles/timepicker/tailwind-dark.css +5 -0
  262. package/styles/timepicker/tailwind.css +5 -0
@@ -118,7 +118,7 @@ let CalendarBase = class CalendarBase extends Component {
118
118
  this.calendarElement.classList.add(DEVICE);
119
119
  }
120
120
  attributes(this.calendarElement, {
121
- 'role': 'calendar'
121
+ 'data-role': 'calendar'
122
122
  });
123
123
  }
124
124
  this.createHeader();
@@ -246,7 +246,7 @@ let CalendarBase = class CalendarBase extends Component {
246
246
  }
247
247
  createContent() {
248
248
  this.contentElement = this.createElement('div', { className: CONTENT });
249
- this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '' } });
249
+ this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });
250
250
  if (this.getModuleName() === 'calendar') {
251
251
  this.element.appendChild(this.contentElement);
252
252
  }
@@ -876,7 +876,6 @@ let CalendarBase = class CalendarBase extends Component {
876
876
  const year = startYear + rowIterator;
877
877
  localDate.setFullYear(year);
878
878
  const tdEle = this.dayCell(localDate);
879
- attributes(tdEle, { 'role': 'gridcell' });
880
879
  const dayLink = this.createElement('span');
881
880
  dayLink.textContent = this.globalize.formatDate(localDate, {
882
881
  format: null, type: 'dateTime', skeleton: 'y'
@@ -917,7 +916,7 @@ let CalendarBase = class CalendarBase extends Component {
917
916
  const date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);
918
917
  const value = date.valueOf();
919
918
  const attrs = {
920
- className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false', 'role': 'gridcell' }
919
+ className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }
921
920
  };
922
921
  return this.createElement('td', attrs);
923
922
  }
@@ -991,7 +990,7 @@ let CalendarBase = class CalendarBase extends Component {
991
990
  let row = count;
992
991
  let rowIterator = 0;
993
992
  for (let dayCell = 0; dayCell < elements.length / count; ++dayCell) {
994
- trEle = this.createElement('tr', { attrs: { 'role': 'row' } });
993
+ trEle = this.createElement('tr');
995
994
  for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {
996
995
  if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {
997
996
  addClass([elements[rowIterator].children[0]], [LINK]);
@@ -2902,14 +2901,14 @@ class Islamic {
2902
2901
  dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'dateTime', format: 'y', calendar: 'islamic' });
2903
2902
  if (islamicDate.year === parseInt(startHdrYr) - 1 || (year < startFullYr) || (year > endFullYr) && islamicDate.year !== parseInt(endHdrYr)) {
2904
2903
  addClass([tdEle], OTHERMONTH$1);
2905
- if (year < new Date(this.islamicInValue(this.calendarInstance.min)).getFullYear()
2906
- || year > new Date(this.islamicInValue(this.calendarInstance.max)).getFullYear()) {
2907
- addClass([tdEle], DISABLED$1);
2908
- }
2909
2904
  }
2910
2905
  else if (year < new Date(this.islamicInValue(this.calendarInstance.min)).getFullYear()
2911
2906
  || year > new Date(this.islamicInValue(this.calendarInstance.max)).getFullYear()) {
2912
2907
  addClass([tdEle], DISABLED$1);
2908
+ if (year < new Date(this.islamicInValue(this.calendarInstance.min)).getFullYear()
2909
+ || year > new Date(this.islamicInValue(this.calendarInstance.max)).getFullYear()) {
2910
+ addClass([tdEle], DISABLED$1);
2911
+ }
2913
2912
  }
2914
2913
  else if (!isNullOrUndefined(value) &&
2915
2914
  (this.getIslamicDate(localDate)).year ===
@@ -3210,10 +3209,9 @@ let DatePicker = class DatePicker extends Calendar {
3210
3209
  }
3211
3210
  createInput() {
3212
3211
  const ariaAttrs = {
3213
- 'aria-live': 'assertive', 'aria-atomic': 'true',
3214
- 'aria-haspopup': 'true', 'aria-activedescendant': 'null',
3215
- 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',
3216
- 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'
3212
+ 'aria-live': 'off', 'aria-atomic': 'true', 'aria-expanded': 'false',
3213
+ 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',
3214
+ 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'
3217
3215
  };
3218
3216
  if (this.getModuleName() === 'datepicker') {
3219
3217
  const l10nLocale = { placeholder: this.placeholder };
@@ -4410,9 +4408,8 @@ let DatePicker = class DatePicker extends Calendar {
4410
4408
  super.destroy();
4411
4409
  }
4412
4410
  const ariaAttrs = {
4413
- 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-disabled': 'true',
4414
- 'aria-haspopup': 'true', 'aria-activedescendant': 'null',
4415
- 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',
4411
+ 'aria-live': 'off', 'aria-atomic': 'true', 'aria-disabled': 'true',
4412
+ 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',
4416
4413
  'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'
4417
4414
  };
4418
4415
  if (this.inputElement) {
@@ -4736,11 +4733,15 @@ let DatePicker = class DatePicker extends Calendar {
4736
4733
  setAriaAttributes() {
4737
4734
  if (this.isCalendar()) {
4738
4735
  Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);
4739
- attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });
4736
+ attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });
4737
+ if (this.value) {
4738
+ attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });
4739
+ }
4740
4740
  }
4741
4741
  else {
4742
4742
  Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);
4743
- attributes(this.inputElement, { 'aria-activedescendant': 'null' });
4743
+ this.inputElement.removeAttribute('aria-owns');
4744
+ this.inputElement.removeAttribute('aria-activedescendant');
4744
4745
  }
4745
4746
  }
4746
4747
  errorClass() {
@@ -4896,7 +4897,7 @@ let DatePicker = class DatePicker extends Calendar {
4896
4897
  }
4897
4898
  break;
4898
4899
  }
4899
- if (!this.isDynamicValueChanged) {
4900
+ if (!this.isDynamicValueChanged && !this.isIconClicked) {
4900
4901
  this.hide(null);
4901
4902
  }
4902
4903
  this.isDynamicValueChanged = false;
@@ -5115,6 +5116,7 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
5115
5116
  this.invalidValueString = null;
5116
5117
  this.isAngular = false;
5117
5118
  this.preventChange = false;
5119
+ this.isPropChanged = false;
5118
5120
  this.dateRangeOptions = options;
5119
5121
  }
5120
5122
  /**
@@ -5763,10 +5765,12 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
5763
5765
  this.updateHeader();
5764
5766
  }
5765
5767
  clearCalendarEvents() {
5766
- EventHandler.clearEvents(this.leftCalPrevIcon);
5767
- EventHandler.clearEvents(this.leftCalNextIcon);
5768
- EventHandler.clearEvents(this.rightCalPrevIcon);
5769
- EventHandler.clearEvents(this.rightCalNextIcon);
5768
+ if (this.leftCalPrevIcon && this.leftCalNextIcon && this.rightCalPrevIcon && this.rightCalNextIcon) {
5769
+ EventHandler.clearEvents(this.leftCalPrevIcon);
5770
+ EventHandler.clearEvents(this.leftCalNextIcon);
5771
+ EventHandler.clearEvents(this.rightCalPrevIcon);
5772
+ EventHandler.clearEvents(this.rightCalNextIcon);
5773
+ }
5770
5774
  }
5771
5775
  updateNavIcons() {
5772
5776
  super.iconHandler();
@@ -6785,6 +6789,7 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
6785
6789
  }
6786
6790
  }
6787
6791
  addClass([ele], SELECTED$3);
6792
+ this.calendarIconEvent();
6788
6793
  this.updateHeader();
6789
6794
  this.removeFocusedDate();
6790
6795
  }
@@ -7281,7 +7286,7 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
7281
7286
  if (this.enableRtl) {
7282
7287
  this.calendarElement.classList.add(RTL$1);
7283
7288
  }
7284
- attributes(this.calendarElement, { 'role': 'calendar' });
7289
+ attributes(this.calendarElement, { 'data-role': 'calendar' });
7285
7290
  super.createHeader();
7286
7291
  super.createContent();
7287
7292
  }
@@ -7839,7 +7844,7 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
7839
7844
  if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {
7840
7845
  this.presetElement = this.createElement('div', { className: PRESETS, attrs: { 'tabindex': '0' } });
7841
7846
  const listTag = ListBase.createList(this.createElement, this.presetsItem, null, true);
7842
- attributes(listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });
7847
+ attributes(listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });
7843
7848
  this.presetElement.appendChild(listTag);
7844
7849
  this.popupWrapper.appendChild(this.presetElement);
7845
7850
  const customElement = this.presetElement.querySelector('#custom_range');
@@ -7899,7 +7904,13 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
7899
7904
  enableRtl: this.enableRtl,
7900
7905
  zIndex: this.zIndex,
7901
7906
  open: () => {
7902
- attributes(this.inputElement, { 'aria-expanded': 'true' });
7907
+ attributes(this.inputElement, { 'aria-expanded': 'true', 'aria-owns': this.inputElement.id + '_options' });
7908
+ if (this.value) {
7909
+ attributes(this.inputElement, { 'aria-activedescendant': this.inputElement.id });
7910
+ }
7911
+ else {
7912
+ this.inputElement.removeAttribute('aria-activedescendant');
7913
+ }
7903
7914
  addClass([this.inputWrapper.buttons[0]], ACTIVE$1);
7904
7915
  if (!this.isMobile) {
7905
7916
  if (this.cancelButton) {
@@ -7947,6 +7958,8 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
7947
7958
  },
7948
7959
  close: () => {
7949
7960
  attributes(this.inputElement, { 'aria-expanded': 'false' });
7961
+ this.inputElement.removeAttribute('aria-owns');
7962
+ this.inputElement.removeAttribute('aria-activedescendant');
7950
7963
  removeClass([this.inputWrapper.buttons[0]], ACTIVE$1);
7951
7964
  if (this.isRangeIconClicked) {
7952
7965
  this.inputWrapper.container.children[1].focus();
@@ -8213,7 +8226,7 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
8213
8226
  }
8214
8227
  const target = e.target;
8215
8228
  if (!this.inputWrapper.container.contains(target) ||
8216
- (!isNullOrUndefined(this.popupObj) && !closest(target, '[id="' + this.popupWrapper.id + '"]') && e.type === 'mousedown')) {
8229
+ (!isNullOrUndefined(this.popupObj) && !closest(target, '[id="' + this.popupWrapper.id + '"]') && e.type !== 'mousedown')) {
8217
8230
  if (e.type !== 'touchstart' && ((e.type === 'mousedown') ||
8218
8231
  this.closeEventArgs && !this.closeEventArgs.cancel)) {
8219
8232
  e.preventDefault();
@@ -8252,9 +8265,8 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
8252
8265
  buttons: [DATERANGEICON]
8253
8266
  }, this.createElement);
8254
8267
  attributes(this.inputElement, {
8255
- 'aria-readonly': this.readonly ? 'true' : 'false', 'tabindex': '0', 'aria-haspopup': 'true',
8256
- 'aria-activedescendant': 'null', 'aria-owns': this.element.id + '_popup', 'aria-expanded': 'false',
8257
- 'role': 'combobox', 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',
8268
+ 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',
8269
+ 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',
8258
8270
  'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'
8259
8271
  });
8260
8272
  Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);
@@ -8685,9 +8697,8 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
8685
8697
  this.unBindEvents();
8686
8698
  this.hide(null);
8687
8699
  const ariaAttrs = {
8688
- 'aria-readonly': this.readonly ? 'true' : 'false', 'tabindex': '0', 'aria-haspopup': 'true',
8689
- 'aria-activedescendant': 'null', 'aria-owns': this.element.id + '_popup', 'aria-expanded': 'false',
8690
- 'role': 'combobox', 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',
8700
+ 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',
8701
+ 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',
8691
8702
  'autocorrect': 'off', 'autocapitalize': 'off', 'aria-invalid': 'false', 'spellcheck': 'false'
8692
8703
  };
8693
8704
  if (this.inputElement) {
@@ -9043,9 +9054,6 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
9043
9054
  const format = { format: this.formatString, type: 'date', skeleton: 'yMd' };
9044
9055
  for (const prop of Object.keys(newProp)) {
9045
9056
  const openPopup = ['maxDays', 'minDays', 'value'];
9046
- if (openPopup.indexOf(prop) < 0) {
9047
- this.hide(null);
9048
- }
9049
9057
  switch (prop) {
9050
9058
  case 'width':
9051
9059
  this.setEleWidth(this.width);
@@ -9066,7 +9074,6 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
9066
9074
  break;
9067
9075
  case 'readonly':
9068
9076
  Input.setReadonly(this.readonly, this.inputElement);
9069
- this.inputElement.setAttribute('aria-readonly', '' + this.readonly);
9070
9077
  this.setRangeAllowEdit();
9071
9078
  break;
9072
9079
  case 'cssClass':
@@ -9256,7 +9263,13 @@ let DateRangePicker = class DateRangePicker extends CalendarBase {
9256
9263
  this.setProperties({ depth: newProp.depth }, true);
9257
9264
  this.refreshChange();
9258
9265
  break;
9266
+ default:
9267
+ this.isPropChanged = true;
9268
+ }
9269
+ if (openPopup.indexOf(prop) < 0 && !this.isPropChanged) {
9270
+ this.hide(null);
9259
9271
  }
9272
+ this.isPropChanged = false;
9260
9273
  }
9261
9274
  }
9262
9275
  };
@@ -9709,9 +9722,10 @@ let TimePicker = class TimePicker extends Component {
9709
9722
  }, this.createElement);
9710
9723
  this.inputWrapper.container.style.width = this.setWidth(this.width);
9711
9724
  attributes(this.inputElement, {
9712
- 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',
9713
- 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',
9714
- 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'false', 'aria-invalid': 'false'
9725
+ 'aria-autocomplete': 'list', 'tabindex': '0',
9726
+ 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',
9727
+ 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',
9728
+ 'aria-disabled': 'false', 'aria-invalid': 'false'
9715
9729
  });
9716
9730
  if (!this.isNullOrEmpty(this.inputStyle)) {
9717
9731
  Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);
@@ -9812,9 +9826,10 @@ let TimePicker = class TimePicker extends Component {
9812
9826
  this.hide();
9813
9827
  this.unBindEvents();
9814
9828
  const ariaAttribute = {
9815
- 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',
9816
- 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',
9817
- 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'true', 'aria-invalid': 'false'
9829
+ 'aria-autocomplete': 'list', 'tabindex': '0',
9830
+ 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',
9831
+ 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',
9832
+ 'aria-disabled': 'true', 'aria-invalid': 'false'
9818
9833
  };
9819
9834
  if (this.inputElement) {
9820
9835
  Input.removeAttributes(ariaAttribute, this.inputElement);
@@ -9914,7 +9929,7 @@ let TimePicker = class TimePicker extends Component {
9914
9929
  }, close: () => {
9915
9930
  removeClass([this.inputWrapper.buttons[0]], SELECTED$4);
9916
9931
  this.unWireListEvents();
9917
- this.inputElement.setAttribute('aria-activedescendant', 'null');
9932
+ this.inputElement.removeAttribute('aria-activedescendant');
9918
9933
  remove(this.popupObj.element);
9919
9934
  this.popupObj.destroy();
9920
9935
  this.popupWrapper.innerHTML = '';
@@ -10403,6 +10418,8 @@ let TimePicker = class TimePicker extends Component {
10403
10418
  this.popupObj.hide(new Animation(animModel));
10404
10419
  removeClass([this.inputWrapper.container], [ICONANIMATION]);
10405
10420
  attributes(this.inputElement, { 'aria-expanded': 'false' });
10421
+ this.inputElement.removeAttribute('aria-owns');
10422
+ this.inputElement.removeAttribute('aria-activedescendant');
10406
10423
  EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);
10407
10424
  }
10408
10425
  if (Browser.isDevice && this.modal) {
@@ -11165,11 +11182,11 @@ let TimePicker = class TimePicker extends Component {
11165
11182
  this.clearIconState();
11166
11183
  }
11167
11184
  setActiveDescendant() {
11168
- if (!isNullOrUndefined(this.selectedElement)) {
11185
+ if (!isNullOrUndefined(this.selectedElement) && this.value) {
11169
11186
  attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });
11170
11187
  }
11171
11188
  else {
11172
- attributes(this.inputElement, { 'aria-activedescendant': 'null' });
11189
+ this.inputElement.removeAttribute('aria-activedescendant');
11173
11190
  }
11174
11191
  }
11175
11192
  removeSelection() {
@@ -11258,7 +11275,7 @@ let TimePicker = class TimePicker extends Component {
11258
11275
  return value;
11259
11276
  }
11260
11277
  createListItems() {
11261
- this.listWrapper = this.createElement('div', { className: CONTENT$2, attrs: { 'tabindex': '0' } });
11278
+ this.listWrapper = this.createElement('div', { className: CONTENT$2, attrs: { 'tabindex': '-1' } });
11262
11279
  let start;
11263
11280
  const interval = this.step * 60000;
11264
11281
  const listItems = [];
@@ -11288,7 +11305,7 @@ let TimePicker = class TimePicker extends Component {
11288
11305
  }
11289
11306
  };
11290
11307
  this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);
11291
- attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });
11308
+ attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });
11292
11309
  append([this.listTag], this.listWrapper);
11293
11310
  }
11294
11311
  documentClickHandler(event) {
@@ -11500,6 +11517,7 @@ let TimePicker = class TimePicker extends Component {
11500
11517
  }
11501
11518
  this.setActiveDescendant();
11502
11519
  attributes(this.inputElement, { 'aria-expanded': 'true' });
11520
+ attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });
11503
11521
  addClass([this.inputWrapper.container], FOCUS);
11504
11522
  EventHandler.add(document, 'mousedown touchstart', this.documentClickHandler, this);
11505
11523
  this.setOverlayIndex(this.mobileTimePopupWrap, this.popupObj.element, this.modal, Browser.isDevice);
@@ -11612,7 +11630,6 @@ let TimePicker = class TimePicker extends Component {
11612
11630
  switch (prop) {
11613
11631
  case 'placeholder':
11614
11632
  Input.setPlaceholder(newProp.placeholder, this.inputElement);
11615
- this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);
11616
11633
  break;
11617
11634
  case 'readonly':
11618
11635
  Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);
@@ -11999,13 +12016,11 @@ let DateTimePicker = class DateTimePicker extends DatePicker {
11999
12016
  }
12000
12017
  const ariaAttribute = {
12001
12018
  'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',
12002
- 'aria-haspopup': 'true', 'aria-activedescendant': 'null',
12003
12019
  'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',
12004
- 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'
12020
+ 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'
12005
12021
  };
12006
12022
  if (this.inputElement) {
12007
12023
  Input.removeAttributes(ariaAttribute, this.inputElement);
12008
- this.inputElement.removeAttribute('aria-placeholder');
12009
12024
  }
12010
12025
  if (this.isCalendar()) {
12011
12026
  if (this.popupWrapper) {
@@ -12419,6 +12434,7 @@ let DateTimePicker = class DateTimePicker extends DatePicker {
12419
12434
  }
12420
12435
  addClass([this.inputWrapper.container], [ICONANIMATION$1]);
12421
12436
  attributes(this.inputElement, { 'aria-expanded': 'true' });
12437
+ attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });
12422
12438
  EventHandler.add(document, 'mousedown touchstart', this.documentClickHandler, this);
12423
12439
  }
12424
12440
  });
@@ -12482,7 +12498,7 @@ let DateTimePicker = class DateTimePicker extends DatePicker {
12482
12498
  }, close: () => {
12483
12499
  removeClass([this.timeIcon], ACTIVE$2);
12484
12500
  this.unWireTimeListEvents();
12485
- this.inputElement.setAttribute('aria-activedescendant', 'null');
12501
+ this.inputElement.removeAttribute('aria-activedescendant');
12486
12502
  remove(this.popupObject.element);
12487
12503
  this.popupObject.destroy();
12488
12504
  this.dateTimeWrapper.innerHTML = '';
@@ -12698,11 +12714,11 @@ let DateTimePicker = class DateTimePicker extends DatePicker {
12698
12714
  }
12699
12715
  }
12700
12716
  setTimeActiveDescendant() {
12701
- if (!isNullOrUndefined(this.selectedElement)) {
12717
+ if (!isNullOrUndefined(this.selectedElement) && this.value) {
12702
12718
  attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });
12703
12719
  }
12704
12720
  else {
12705
- attributes(this.inputElement, { 'aria-activedescendant': 'null' });
12721
+ this.inputElement.removeAttribute('aria-activedescendant');
12706
12722
  }
12707
12723
  }
12708
12724
  addTimeSelection() {
@@ -12860,6 +12876,7 @@ let DateTimePicker = class DateTimePicker extends DatePicker {
12860
12876
  this.popupObject.hide(new Animation(animModel));
12861
12877
  this.inputWrapper.container.classList.remove(ICONANIMATION$1);
12862
12878
  attributes(this.inputElement, { 'aria-expanded': 'false' });
12879
+ this.inputElement.removeAttribute('aria-owns');
12863
12880
  EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);
12864
12881
  }
12865
12882
  }
@@ -13245,7 +13262,6 @@ let DateTimePicker = class DateTimePicker extends DatePicker {
13245
13262
  break;
13246
13263
  case 'placeholder':
13247
13264
  Input.setPlaceholder(newProp.placeholder, this.inputElement);
13248
- this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);
13249
13265
  break;
13250
13266
  case 'enabled':
13251
13267
  Input.setEnabled(this.enabled, this.inputElement);
@@ -13304,7 +13320,7 @@ let DateTimePicker = class DateTimePicker extends DatePicker {
13304
13320
  super.onPropertyChanged(newProp, oldProp);
13305
13321
  break;
13306
13322
  }
13307
- if (!this.isDynamicValueChanged) {
13323
+ if (!this.isDynamicValueChanged && !this.isIconClicked) {
13308
13324
  this.hide(null);
13309
13325
  }
13310
13326
  this.isDynamicValueChanged = false;