@syncfusion/ej2-schedule 31.2.15 → 32.1.20

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 (259) hide show
  1. package/dist/ej2-schedule.min.js +2 -2
  2. package/dist/ej2-schedule.umd.min.js +2 -2
  3. package/dist/ej2-schedule.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-schedule.es2015.js +65 -37
  5. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  6. package/dist/es6/ej2-schedule.es5.js +80 -52
  7. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  8. package/dist/global/ej2-schedule.min.js +2 -2
  9. package/dist/global/ej2-schedule.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +11 -11
  12. package/src/recurrence-editor/date-generator.js +0 -4
  13. package/src/schedule/actions/action-base.d.ts +1 -0
  14. package/src/schedule/actions/action-base.js +11 -8
  15. package/src/schedule/actions/drag.js +1 -5
  16. package/src/schedule/actions/keyboard.js +1 -0
  17. package/src/schedule/actions/resize.js +23 -10
  18. package/src/schedule/base/interface.d.ts +2 -0
  19. package/src/schedule/base/resource.js +24 -12
  20. package/src/schedule/base/schedule.d.ts +2 -2
  21. package/src/schedule/base/schedule.js +3 -3
  22. package/src/schedule/event-renderer/agenda-base.js +3 -2
  23. package/src/schedule/event-renderer/month.js +2 -1
  24. package/src/schedule/event-renderer/timeline-view.js +2 -1
  25. package/src/schedule/event-renderer/vertical-view.js +1 -1
  26. package/src/schedule/event-renderer/year.js +2 -2
  27. package/src/schedule/renderer/view-base.js +7 -3
  28. package/styles/bds-lite.css +45 -8
  29. package/styles/bds-lite.scss +18 -18
  30. package/styles/bds.css +45 -8
  31. package/styles/bds.scss +20 -20
  32. package/styles/bootstrap-dark-lite.css +8 -8
  33. package/styles/bootstrap-dark-lite.scss +18 -18
  34. package/styles/bootstrap-dark.css +8 -8
  35. package/styles/bootstrap-dark.scss +20 -20
  36. package/styles/bootstrap-lite.css +8 -8
  37. package/styles/bootstrap-lite.scss +18 -18
  38. package/styles/bootstrap.css +8 -8
  39. package/styles/bootstrap.scss +20 -20
  40. package/styles/bootstrap4-lite.css +10 -10
  41. package/styles/bootstrap4-lite.scss +18 -18
  42. package/styles/bootstrap4.css +10 -10
  43. package/styles/bootstrap4.scss +20 -20
  44. package/styles/bootstrap5-dark-lite.css +8 -8
  45. package/styles/bootstrap5-dark-lite.scss +18 -18
  46. package/styles/bootstrap5-dark.css +8 -8
  47. package/styles/bootstrap5-dark.scss +20 -20
  48. package/styles/bootstrap5-lite.css +8 -8
  49. package/styles/bootstrap5-lite.scss +19 -18
  50. package/styles/bootstrap5.3-lite.css +112 -32
  51. package/styles/bootstrap5.3-lite.scss +19 -18
  52. package/styles/bootstrap5.3.css +114 -34
  53. package/styles/bootstrap5.3.scss +21 -20
  54. package/styles/bootstrap5.css +8 -8
  55. package/styles/bootstrap5.scss +21 -20
  56. package/styles/fabric-dark-lite.css +8 -8
  57. package/styles/fabric-dark-lite.scss +19 -18
  58. package/styles/fabric-dark.css +8 -8
  59. package/styles/fabric-dark.scss +21 -20
  60. package/styles/fabric-lite.css +8 -8
  61. package/styles/fabric-lite.scss +19 -18
  62. package/styles/fabric.css +8 -8
  63. package/styles/fabric.scss +21 -20
  64. package/styles/fluent-dark-lite.css +10 -10
  65. package/styles/fluent-dark-lite.scss +19 -18
  66. package/styles/fluent-dark.css +10 -10
  67. package/styles/fluent-dark.scss +21 -20
  68. package/styles/fluent-lite.css +10 -10
  69. package/styles/fluent-lite.scss +19 -18
  70. package/styles/fluent.css +10 -10
  71. package/styles/fluent.scss +21 -20
  72. package/styles/fluent2-lite.css +267 -34
  73. package/styles/fluent2-lite.scss +19 -18
  74. package/styles/fluent2.css +270 -37
  75. package/styles/fluent2.scss +21 -20
  76. package/styles/highcontrast-light-lite.css +8 -8
  77. package/styles/highcontrast-light-lite.scss +19 -18
  78. package/styles/highcontrast-light.css +8 -8
  79. package/styles/highcontrast-light.scss +21 -20
  80. package/styles/highcontrast-lite.css +8 -8
  81. package/styles/highcontrast-lite.scss +19 -18
  82. package/styles/highcontrast.css +8 -8
  83. package/styles/highcontrast.scss +21 -20
  84. package/styles/material-dark-lite.css +10 -10
  85. package/styles/material-dark-lite.scss +19 -18
  86. package/styles/material-dark.css +10 -10
  87. package/styles/material-dark.scss +21 -20
  88. package/styles/material-lite.css +12 -10
  89. package/styles/material-lite.scss +18 -18
  90. package/styles/material.css +12 -10
  91. package/styles/material.scss +20 -20
  92. package/styles/material3-dark-lite.css +432 -9
  93. package/styles/material3-dark-lite.scss +19 -18
  94. package/styles/material3-dark.css +432 -9
  95. package/styles/material3-dark.scss +21 -22
  96. package/styles/material3-lite.css +449 -26
  97. package/styles/material3-lite.scss +19 -18
  98. package/styles/material3.css +451 -28
  99. package/styles/material3.scss +21 -22
  100. package/styles/recurrence-editor/_all.scss +2 -2
  101. package/styles/recurrence-editor/_bds-definition.scss +27 -1
  102. package/styles/recurrence-editor/_bigger.scss +21 -19
  103. package/styles/recurrence-editor/_bootstrap-dark-definition.scss +27 -1
  104. package/styles/recurrence-editor/_bootstrap-definition.scss +27 -1
  105. package/styles/recurrence-editor/_bootstrap4-definition.scss +27 -1
  106. package/styles/recurrence-editor/_bootstrap5-dark-definition.scss +41 -1
  107. package/styles/recurrence-editor/_bootstrap5-definition.scss +27 -1
  108. package/styles/recurrence-editor/_bootstrap5.3-definition.scss +27 -1
  109. package/styles/recurrence-editor/_fabric-dark-definition.scss +27 -1
  110. package/styles/recurrence-editor/_fabric-definition.scss +27 -1
  111. package/styles/recurrence-editor/_fluent-dark-definition.scss +41 -1
  112. package/styles/recurrence-editor/_fluent-definition.scss +27 -1
  113. package/styles/recurrence-editor/_fluent2-definition.scss +27 -1
  114. package/styles/recurrence-editor/_fusionnew-definition.scss +27 -1
  115. package/styles/recurrence-editor/_highcontrast-definition.scss +27 -1
  116. package/styles/recurrence-editor/_highcontrast-light-definition.scss +27 -1
  117. package/styles/recurrence-editor/_layout.scss +60 -58
  118. package/styles/recurrence-editor/_material-dark-definition.scss +27 -1
  119. package/styles/recurrence-editor/_material-definition.scss +27 -1
  120. package/styles/recurrence-editor/_material3-dark-definition.scss +41 -1
  121. package/styles/recurrence-editor/_material3-definition.scss +27 -1
  122. package/styles/recurrence-editor/_tailwind-dark-definition.scss +41 -1
  123. package/styles/recurrence-editor/_tailwind-definition.scss +27 -1
  124. package/styles/recurrence-editor/_tailwind3-definition.scss +27 -1
  125. package/styles/recurrence-editor/_theme-variables.scss +1 -0
  126. package/styles/recurrence-editor/bds.scss +9 -9
  127. package/styles/recurrence-editor/bootstrap-dark.scss +9 -9
  128. package/styles/recurrence-editor/bootstrap.scss +9 -9
  129. package/styles/recurrence-editor/bootstrap4.css +2 -2
  130. package/styles/recurrence-editor/bootstrap4.scss +9 -9
  131. package/styles/recurrence-editor/bootstrap5-dark.scss +9 -9
  132. package/styles/recurrence-editor/bootstrap5.3.css +81 -1
  133. package/styles/recurrence-editor/bootstrap5.3.scss +9 -9
  134. package/styles/recurrence-editor/bootstrap5.scss +9 -9
  135. package/styles/recurrence-editor/fabric-dark.scss +9 -9
  136. package/styles/recurrence-editor/fabric.scss +9 -9
  137. package/styles/recurrence-editor/fluent-dark.css +2 -2
  138. package/styles/recurrence-editor/fluent-dark.scss +9 -9
  139. package/styles/recurrence-editor/fluent.css +2 -2
  140. package/styles/recurrence-editor/fluent.scss +9 -9
  141. package/styles/recurrence-editor/fluent2.css +334 -6
  142. package/styles/recurrence-editor/fluent2.scss +9 -9
  143. package/styles/recurrence-editor/highcontrast-light.scss +9 -9
  144. package/styles/recurrence-editor/highcontrast.scss +9 -9
  145. package/styles/recurrence-editor/material-dark.css +2 -2
  146. package/styles/recurrence-editor/material-dark.scss +9 -9
  147. package/styles/recurrence-editor/material.css +2 -2
  148. package/styles/recurrence-editor/material.scss +9 -9
  149. package/styles/recurrence-editor/material3-dark.css +140 -1
  150. package/styles/recurrence-editor/material3-dark.scss +9 -10
  151. package/styles/recurrence-editor/material3.css +140 -1
  152. package/styles/recurrence-editor/material3.scss +9 -10
  153. package/styles/recurrence-editor/tailwind-dark.scss +9 -9
  154. package/styles/recurrence-editor/tailwind.scss +9 -9
  155. package/styles/recurrence-editor/tailwind3.css +71 -1
  156. package/styles/recurrence-editor/tailwind3.scss +9 -9
  157. package/styles/schedule/_all.scss +2 -2
  158. package/styles/schedule/_bds-definition.scss +105 -0
  159. package/styles/schedule/_bigger.scss +88 -86
  160. package/styles/schedule/_bootstrap-dark-definition.scss +105 -0
  161. package/styles/schedule/_bootstrap-definition.scss +105 -0
  162. package/styles/schedule/_bootstrap4-definition.scss +105 -0
  163. package/styles/schedule/_bootstrap5-dark-definition.scss +385 -1
  164. package/styles/schedule/_bootstrap5-definition.scss +105 -0
  165. package/styles/schedule/_bootstrap5.3-definition.scss +113 -8
  166. package/styles/schedule/_fabric-dark-definition.scss +105 -0
  167. package/styles/schedule/_fabric-definition.scss +105 -0
  168. package/styles/schedule/_fluent-dark-definition.scss +385 -1
  169. package/styles/schedule/_fluent-definition.scss +105 -0
  170. package/styles/schedule/_fluent2-definition.scss +111 -6
  171. package/styles/schedule/_fusionnew-definition.scss +103 -0
  172. package/styles/schedule/_highcontrast-definition.scss +105 -0
  173. package/styles/schedule/_highcontrast-light-definition.scss +105 -0
  174. package/styles/schedule/_layout.scss +395 -391
  175. package/styles/schedule/_material-dark-definition.scss +105 -0
  176. package/styles/schedule/_material-definition.scss +105 -0
  177. package/styles/schedule/_material3-dark-definition.scss +384 -1
  178. package/styles/schedule/_material3-definition.scss +111 -6
  179. package/styles/schedule/_tailwind-dark-definition.scss +380 -1
  180. package/styles/schedule/_tailwind-definition.scss +105 -0
  181. package/styles/schedule/_tailwind3-definition.scss +112 -7
  182. package/styles/schedule/_theme-variables.scss +1 -0
  183. package/styles/schedule/_theme.scss +34 -32
  184. package/styles/schedule/bds.css +45 -8
  185. package/styles/schedule/bds.scss +18 -17
  186. package/styles/schedule/bootstrap-dark.css +8 -8
  187. package/styles/schedule/bootstrap-dark.scss +18 -17
  188. package/styles/schedule/bootstrap.css +8 -8
  189. package/styles/schedule/bootstrap.scss +18 -17
  190. package/styles/schedule/bootstrap4.css +8 -8
  191. package/styles/schedule/bootstrap4.scss +18 -17
  192. package/styles/schedule/bootstrap5-dark.css +8 -8
  193. package/styles/schedule/bootstrap5-dark.scss +18 -16
  194. package/styles/schedule/bootstrap5.3.css +114 -34
  195. package/styles/schedule/bootstrap5.3.scss +18 -17
  196. package/styles/schedule/bootstrap5.css +8 -8
  197. package/styles/schedule/bootstrap5.scss +18 -17
  198. package/styles/schedule/fabric-dark.css +8 -8
  199. package/styles/schedule/fabric-dark.scss +18 -17
  200. package/styles/schedule/fabric.css +8 -8
  201. package/styles/schedule/fabric.scss +18 -17
  202. package/styles/schedule/fluent-dark.css +8 -8
  203. package/styles/schedule/fluent-dark.scss +18 -16
  204. package/styles/schedule/fluent.css +8 -8
  205. package/styles/schedule/fluent.scss +18 -17
  206. package/styles/schedule/fluent2.css +266 -33
  207. package/styles/schedule/fluent2.scss +18 -17
  208. package/styles/schedule/highcontrast-light.css +8 -8
  209. package/styles/schedule/highcontrast-light.scss +18 -17
  210. package/styles/schedule/highcontrast.css +8 -8
  211. package/styles/schedule/highcontrast.scss +18 -17
  212. package/styles/schedule/icons/_bds.scss +1 -0
  213. package/styles/schedule/icons/_bootstrap-dark.scss +1 -0
  214. package/styles/schedule/icons/_bootstrap.scss +1 -0
  215. package/styles/schedule/icons/_bootstrap4.scss +1 -0
  216. package/styles/schedule/icons/_bootstrap5-dark.scss +1 -1
  217. package/styles/schedule/icons/_bootstrap5.3.scss +1 -0
  218. package/styles/schedule/icons/_bootstrap5.scss +1 -0
  219. package/styles/schedule/icons/_fabric-dark.scss +1 -0
  220. package/styles/schedule/icons/_fabric.scss +1 -0
  221. package/styles/schedule/icons/_fluent-dark.scss +1 -1
  222. package/styles/schedule/icons/_fluent.scss +1 -0
  223. package/styles/schedule/icons/_fluent2.scss +1 -0
  224. package/styles/schedule/icons/_fusionnew.scss +1 -0
  225. package/styles/schedule/icons/_highcontrast-light.scss +1 -0
  226. package/styles/schedule/icons/_highcontrast.scss +1 -0
  227. package/styles/schedule/icons/_material-dark.scss +1 -0
  228. package/styles/schedule/icons/_material.scss +1 -0
  229. package/styles/schedule/icons/_material3-dark.scss +1 -1
  230. package/styles/schedule/icons/_material3.scss +1 -0
  231. package/styles/schedule/icons/_tailwind-dark.scss +1 -1
  232. package/styles/schedule/icons/_tailwind.scss +1 -0
  233. package/styles/schedule/icons/_tailwind3.scss +1 -0
  234. package/styles/schedule/material-dark.css +8 -8
  235. package/styles/schedule/material-dark.scss +18 -17
  236. package/styles/schedule/material.css +10 -8
  237. package/styles/schedule/material.scss +18 -17
  238. package/styles/schedule/material3-dark.css +432 -9
  239. package/styles/schedule/material3-dark.scss +18 -17
  240. package/styles/schedule/material3.css +451 -28
  241. package/styles/schedule/material3.scss +18 -18
  242. package/styles/schedule/tailwind-dark.css +8 -8
  243. package/styles/schedule/tailwind-dark.scss +18 -16
  244. package/styles/schedule/tailwind.css +8 -8
  245. package/styles/schedule/tailwind.scss +18 -17
  246. package/styles/schedule/tailwind3.css +151 -33
  247. package/styles/schedule/tailwind3.scss +18 -17
  248. package/styles/tailwind-dark-lite.css +8 -8
  249. package/styles/tailwind-dark-lite.scss +19 -18
  250. package/styles/tailwind-dark.css +8 -8
  251. package/styles/tailwind-dark.scss +21 -20
  252. package/styles/tailwind-lite.css +8 -8
  253. package/styles/tailwind-lite.scss +19 -18
  254. package/styles/tailwind.css +8 -8
  255. package/styles/tailwind.scss +21 -20
  256. package/styles/tailwind3-lite.css +149 -31
  257. package/styles/tailwind3-lite.scss +19 -18
  258. package/styles/tailwind3.css +151 -33
  259. package/styles/tailwind3.scss +21 -20
@@ -3371,6 +3371,7 @@ class KeyboardInteraction {
3371
3371
  navigator.clipboard.writeText(this.clipBoardTextArea.value)
3372
3372
  .then(() => {
3373
3373
  this.clipBoardTextArea.blur();
3374
+ this.clipBoardTextArea.selectionStart = this.clipBoardTextArea.selectionEnd;
3374
3375
  window.getSelection().removeAllRanges();
3375
3376
  if (e) {
3376
3377
  const closestAppointment = e.target.closest('.' + APPOINTMENT_CLASS);
@@ -4323,10 +4324,6 @@ function generate(startDate, rule, excludeDate, startDayOfWeek, maximumCount = M
4323
4324
  maxOccurrence = maximumCount;
4324
4325
  startDayOfWeek = startDayOfWeek || 0;
4325
4326
  setFirstDayOfWeek(DAYINDEX[parseInt(startDayOfWeek.toString(), 10)]);
4326
- if (ruleObject.until) {
4327
- const end = resetTime(ruleObject.until);
4328
- ruleObject.until = new Date(end.getFullYear(), end.getMonth(), end.getDate(), 23, 59, 59);
4329
- }
4330
4327
  switch (ruleObject.freq) {
4331
4328
  case 'DAILY':
4332
4329
  dailyType(modifiedDate, ruleObject.until, data, ruleObject);
@@ -7428,7 +7425,7 @@ class VerticalEvent extends EventBase {
7428
7425
  const appWidth = eventObj.IsBlock ? '99%' : '100%';
7429
7426
  setStyleAttribute(appointmentElement, { 'width': appWidth, 'height': blockHeight, 'top': blockTop });
7430
7427
  const index = this.getDayIndex(dayIndex, resource, dayCount);
7431
- const appLeft = eventObj.IsBlock ? '0.5px' : '0px';
7428
+ const appLeft = eventObj.IsBlock ? '1px' : '0px';
7432
7429
  this.appendEvent(eventObj, appointmentElement, index, appLeft);
7433
7430
  }
7434
7431
  }
@@ -8646,8 +8643,9 @@ class MonthEvent extends EventBase {
8646
8643
  if (!isNullOrUndefined(groupIndex)) {
8647
8644
  moreIndicatorElement.setAttribute('data-group-index', groupIndex);
8648
8645
  }
8649
- moreIndicatorElement.style.top = (this.cellHeight - this.monthHeaderHeight - this.moreIndicatorHeight) + 'px';
8646
+ moreIndicatorElement.style.top = (this.cellHeight - this.monthHeaderHeight) + 'px';
8650
8647
  moreIndicatorElement.style.width = this.cellWidth - 2 + 'px';
8648
+ moreIndicatorElement.style.transform = 'translateY(-100%)';
8651
8649
  this.renderElement(this.workCells[day + i], moreIndicatorElement);
8652
8650
  EventHandler.add(moreIndicatorElement, 'click', this.moreIndicatorClick, this);
8653
8651
  }
@@ -9125,10 +9123,11 @@ class TimelineEvent extends MonthEvent {
9125
9123
  if (!isNullOrUndefined(groupIndex)) {
9126
9124
  moreIndicatorElement.setAttribute('data-group-index', groupIndex);
9127
9125
  }
9128
- moreIndicatorElement.style.top = top + appArea + 'px';
9126
+ moreIndicatorElement.style.top = top + this.cellHeight + 'px';
9129
9127
  moreIndicatorElement.style.width = this.cellWidth + 'px';
9130
9128
  moreIndicatorElement.style.left = (Math.floor(appLeft / this.cellWidth) * this.cellWidth) + 'px';
9131
9129
  moreIndicatorElement.style.right = (Math.floor(appRight / this.cellWidth) * this.cellWidth) + 'px';
9130
+ moreIndicatorElement.style.transform = 'translateY(-100%)';
9132
9131
  this.renderElement(cellTd, moreIndicatorElement);
9133
9132
  EventHandler.add(moreIndicatorElement, 'click', this.moreIndicatorClick, this);
9134
9133
  }
@@ -16845,14 +16844,16 @@ class ResourceBase {
16845
16844
  resourceId: levelId,
16846
16845
  resourceName: treeLevel.resourceData[resource.textField],
16847
16846
  resource: treeLevel.resource,
16848
- resourceData: treeLevel.resourceData
16847
+ resourceData: treeLevel.resourceData,
16848
+ date: this.parent.selectedDate
16849
16849
  };
16850
16850
  }
16851
16851
  else {
16852
16852
  resObj = {
16853
16853
  type: 'resourceHeader', resource: treeLevel.resource,
16854
16854
  resourceData: treeLevel.resourceData, groupIndex: groupIndex,
16855
- groupOrder: treeLevel.groupOrder
16855
+ groupOrder: treeLevel.groupOrder,
16856
+ date: this.parent.selectedDate
16856
16857
  };
16857
16858
  resTreeColl.push(resObj);
16858
16859
  groupIndex++;
@@ -17156,6 +17157,11 @@ class ResourceBase {
17156
17157
  }
17157
17158
  this.lastResourceLevel = headerLevels.slice(-1)[0] || [];
17158
17159
  if (!this.parent.activeViewOptions.group.byDate) {
17160
+ for (let levelIndex = 0; levelIndex < headerLevels.length; levelIndex++) {
17161
+ for (const levelItem of headerLevels[parseInt(levelIndex.toString(), 10)]) {
17162
+ levelItem.date = this.parent.selectedDate;
17163
+ }
17164
+ }
17159
17165
  let index = 0;
17160
17166
  for (const lastLevelResource of this.lastResourceLevel) {
17161
17167
  for (let i = 0; i < lastLevelResource.colSpan; i++) {
@@ -17248,6 +17254,9 @@ class ResourceBase {
17248
17254
  datesColumn.push(headerDate);
17249
17255
  const resGroup = extend([], levels, null, true);
17250
17256
  for (let k = 0, length = resGroup.length; k < length; k++) {
17257
+ for (const resTd of resGroup[parseInt(k.toString(), 10)]) {
17258
+ resTd.date = headerDate.date;
17259
+ }
17251
17260
  if (k === resGroup.length - 1) {
17252
17261
  for (const resTd of resGroup[parseInt(k.toString(), 10)]) {
17253
17262
  resTd.date = headerDate.date;
@@ -18440,7 +18449,7 @@ let Schedule = class Schedule extends Component {
18440
18449
  addClass(cells, SELECTED_CELL_CLASS);
18441
18450
  if (focusCell) {
18442
18451
  focusCell.setAttribute('tabindex', '0');
18443
- focusCell.focus({ preventScroll: isPreventScroll || false });
18452
+ focusCell.focus({ preventScroll: isPreventScroll || focusCell.classList.contains('e-all-day-cells') && this.enableAllDayScroll });
18444
18453
  }
18445
18454
  }
18446
18455
  /**
@@ -19687,8 +19696,8 @@ let Schedule = class Schedule extends Component {
19687
19696
  * Scrolls the Schedule content area to the specified time.
19688
19697
  *
19689
19698
  * @function scrollTo
19690
- * @param {string} hour Accepts the time value in the skeleton format of 'Hm'.
19691
- * @param {Date} scrollDate Accepts the date object value.
19699
+ * @param {string} hour Accepts the time value in the skeleton format of 'Hm'. This parameter specifies the hour and minute to scroll to within the schedule.
19700
+ * @param {Date} scrollDate Accepts a Date object value that represents the specific date to scroll to in the schedule.
19692
19701
  * @returns {void}
19693
19702
  */
19694
19703
  scrollTo(hour, scrollDate) {
@@ -20933,7 +20942,7 @@ class ActionBase {
20933
20942
  const startHour = this.parent.activeView.getStartHour();
20934
20943
  const intervalInMS = MS_PER_MINUTE * this.actionObj.interval;
20935
20944
  dateInMS += (startHour.getHours() * 60 + startHour.getMinutes()) * MS_PER_MINUTE + startHour.getSeconds() * 1000;
20936
- dateInMS = dateInMS + Math.floor((date.getTime() - dateInMS) / intervalInMS) * intervalInMS;
20945
+ dateInMS = dateInMS + ((date.getTime() - dateInMS) / intervalInMS) * intervalInMS;
20937
20946
  return new Date(dateInMS);
20938
20947
  }
20939
20948
  getContentAreaDimension() {
@@ -21085,6 +21094,12 @@ class ActionBase {
21085
21094
  remove(timeIndicator);
21086
21095
  }
21087
21096
  }
21097
+ removeDragResizeClones() {
21098
+ const eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + CLONE_ELEMENT_CLASS));
21099
+ for (const wrapper of eventWrappers) {
21100
+ remove(wrapper);
21101
+ }
21102
+ }
21088
21103
  getCursorElement(e) {
21089
21104
  const pages = this.parent.eventBase.getPageCoordinates(e);
21090
21105
  return document.elementFromPoint(pages.clientX, pages.clientY);
@@ -21267,10 +21282,7 @@ class ActionBase {
21267
21282
  this.monthEvent.dateRender = dateRender;
21268
21283
  this.monthEvent.getSlotDates(workDays);
21269
21284
  if (this.resizeEdges.left || this.resizeEdges.right) {
21270
- const eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + CLONE_ELEMENT_CLASS));
21271
- for (const wrapper of eventWrappers) {
21272
- remove(wrapper);
21273
- }
21285
+ this.removeDragResizeClones();
21274
21286
  }
21275
21287
  const spannedEvents = this.monthEvent.splitEvent(event, dateRender);
21276
21288
  for (const event of spannedEvents) {
@@ -21541,10 +21553,7 @@ class Resize extends ActionBase {
21541
21553
  }
21542
21554
  }
21543
21555
  yearEventsRendering(event) {
21544
- const eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + CLONE_ELEMENT_CLASS));
21545
- for (const wrapper of eventWrappers) {
21546
- remove(wrapper);
21547
- }
21556
+ this.removeDragResizeClones();
21548
21557
  let endDate = new Date(event[this.parent.eventFields.endTime]);
21549
21558
  let monthDiff = 0;
21550
21559
  if (this.parent.activeViewOptions.group.resources.length === 0) {
@@ -21598,6 +21607,7 @@ class Resize extends ActionBase {
21598
21607
  this.actionObj.action = null;
21599
21608
  this.removeCloneElementClasses();
21600
21609
  this.removeCloneElement();
21610
+ this.removeDragResizeClones();
21601
21611
  this.actionClass('removeClass');
21602
21612
  this.parent.uiStateValues.action = this.parent.uiStateValues.isTapHold = false;
21603
21613
  const resizeArgs = { cancel: false, data: this.getChangedData(), element: this.actionObj.element, event: e };
@@ -21622,7 +21632,7 @@ class Resize extends ActionBase {
21622
21632
  if (!isTop) {
21623
21633
  offsetValue += this.actionObj.clone.offsetHeight;
21624
21634
  }
21625
- const minutes = (offsetValue / Math.round(this.actionObj.cellHeight)) * this.actionObj.slotInterval;
21635
+ const minutes = Math.round((offsetValue / Math.round(this.actionObj.cellHeight)) * this.actionObj.slotInterval);
21626
21636
  const element = this.actionObj.clone.offsetParent;
21627
21637
  if (isNullOrUndefined(element)) {
21628
21638
  return;
@@ -21687,7 +21697,7 @@ class Resize extends ActionBase {
21687
21697
  const offsetWidth = (Math.round(offset / this.actionObj.cellWidth) *
21688
21698
  this.actionObj.cellWidth) + (isLeft ? 0 : (this.parent.getElementWidth(this.actionObj.clone) -
21689
21699
  this.actionObj.cellWidth));
21690
- cellIndex = Math.floor(offsetWidth / this.actionObj.cellWidth);
21700
+ cellIndex = Math.ceil(offsetWidth / this.actionObj.cellWidth);
21691
21701
  }
21692
21702
  isLastCell = cellIndex === tdCollections.length;
21693
21703
  cellIndex = this.getIndex(cellIndex);
@@ -21705,13 +21715,29 @@ class Resize extends ActionBase {
21705
21715
  }
21706
21716
  else {
21707
21717
  if (!isLeft) {
21708
- offset += this.parent.getElementWidth(this.actionObj.clone);
21709
- }
21710
- let spanMinutes = Math.floor((this.actionObj.slotInterval / this.actionObj.cellWidth) *
21718
+ let cloneWidth = this.parent.getElementWidth(this.actionObj.clone);
21719
+ const pixelsPerInterval = this.actionObj.cellWidth /
21720
+ (this.actionObj.slotInterval / this.actionObj.interval);
21721
+ const numIntervals = Math.round(cloneWidth / pixelsPerInterval);
21722
+ cloneWidth = numIntervals * pixelsPerInterval;
21723
+ offset = offset + cloneWidth;
21724
+ }
21725
+ let spanMinutes = Math.ceil((this.actionObj.slotInterval / this.actionObj.cellWidth) *
21711
21726
  (offset - Math.floor(offset / this.actionObj.cellWidth) * this.actionObj.cellWidth));
21712
21727
  spanMinutes = (isLastCell || (!isLeft && spanMinutes === 0)) ? this.actionObj.slotInterval : spanMinutes;
21713
21728
  resizeTime = new Date(resizeDate.getTime());
21714
21729
  resizeTime = new Date(resizeDate.getTime() + (spanMinutes * MS_PER_MINUTE));
21730
+ const isCustomResizeInterval = this.actionObj.interval !== this.actionObj.slotInterval;
21731
+ const initialCellTime = new Date(resizeTime.getTime());
21732
+ const intervalInMS = this.actionObj.interval * 60000;
21733
+ if (intervalInMS > 0 && isCustomResizeInterval) {
21734
+ if (this.resizeEdges.right || this.resizeEdges.left) {
21735
+ const eventTime = this.resizeEdges.right ? eventEnd : eventStart;
21736
+ const timeDifferenceMs = initialCellTime.getTime() - eventTime.getTime();
21737
+ const intervalCount = Math.round(timeDifferenceMs / intervalInMS);
21738
+ resizeTime = new Date(eventTime.getTime() + intervalCount * intervalInMS);
21739
+ }
21740
+ }
21715
21741
  this.updateTimePosition(resizeTime);
21716
21742
  }
21717
21743
  }
@@ -22315,10 +22341,10 @@ class YearEvent extends TimelineEvent {
22315
22341
  }
22316
22342
  const moreIndicator = this.getMoreIndicatorElement(count, startDate, endDate);
22317
22343
  const rowTr = this.parent.element.querySelector(`.e-content-wrap tr:nth-child(${row + 1})`);
22318
- const top = rowTr.offsetTop + (this.cellHeight - this.moreIndicatorHeight);
22344
+ const top = rowTr.offsetTop + this.cellHeight;
22319
22345
  left = (Math.floor(left / this.cellWidth) * this.cellWidth);
22320
22346
  right = (Math.floor(right / this.cellWidth) * this.cellWidth);
22321
- setStyleAttribute(moreIndicator, { 'width': this.cellWidth + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px' });
22347
+ setStyleAttribute(moreIndicator, { 'width': this.cellWidth + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px', 'transform': 'translateY(-100%)' });
22322
22348
  if (!isNullOrUndefined(index)) {
22323
22349
  moreIndicator.setAttribute('data-group-index', index.toString());
22324
22350
  }
@@ -23499,10 +23525,7 @@ class DragAndDrop extends ActionBase {
23499
23525
  }
23500
23526
  const event = this.getUpdatedEvent(this.actionObj.start, this.actionObj.end, this.actionObj.event);
23501
23527
  if (isNullOrUndefined(this.parent.eventDragArea)) {
23502
- const eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + CLONE_ELEMENT_CLASS));
23503
- for (const wrapper of eventWrappers) {
23504
- remove(wrapper);
23505
- }
23528
+ this.removeDragResizeClones();
23506
23529
  }
23507
23530
  if (this.multiData && this.multiData.length > 0) {
23508
23531
  const startTime = resetTime(new Date(event[this.parent.eventFields.startTime]));
@@ -24045,14 +24068,18 @@ class ViewBase {
24045
24068
  }
24046
24069
  }
24047
24070
  getHeaderBarHeight() {
24048
- let headerBarHeight = 2;
24071
+ const computedStyle = getComputedStyle(this.parent.element);
24072
+ const borderTop = parseFloat(computedStyle.borderTopWidth) || 1;
24073
+ const borderBottom = parseFloat(computedStyle.borderBottomWidth) || 1;
24074
+ const border = Math.round(borderTop + borderBottom);
24075
+ let headerBarHeight = border;
24049
24076
  if (this.parent.headerModule) {
24050
24077
  headerBarHeight += getOuterHeight(this.parent.headerModule.getHeaderElement());
24051
24078
  }
24052
24079
  if (this.parent.uiStateValues.isGroupAdaptive) {
24053
24080
  const resHeader = this.parent.element.querySelector('.' + RESOURCE_HEADER_TOOLBAR);
24054
24081
  if (resHeader) {
24055
- headerBarHeight += resHeader.offsetHeight;
24082
+ headerBarHeight += getOuterHeight(resHeader);
24056
24083
  }
24057
24084
  }
24058
24085
  return headerBarHeight;
@@ -24335,7 +24362,7 @@ class ViewBase {
24335
24362
  }
24336
24363
  setResourceHeaderContent(tdElement, tdData, className = TEXT_ELLIPSIS) {
24337
24364
  if (this.parent.activeViewOptions.resourceHeaderTemplate) {
24338
- const data = { resource: tdData.resource, resourceData: tdData.resourceData };
24365
+ const data = { resource: tdData.resource, resourceData: tdData.resourceData, date: tdData.date };
24339
24366
  const scheduleId = this.parent.element.id + '_';
24340
24367
  const viewName = this.parent.activeViewOptions.resourceHeaderTemplateName;
24341
24368
  const templateId = scheduleId + viewName + 'resourceHeaderTemplate';
@@ -26832,7 +26859,7 @@ class AgendaBase extends ViewBase {
26832
26859
  groupOrder: resData[parseInt(res.toString(), 10)].groupOrder.slice(0, -1),
26833
26860
  resourceData: resData[parseInt(res.toString(), 10)].resourceData,
26834
26861
  groupIndex: (lastLevelInfo.length - data.length), className: [RESOURCE_NAME],
26835
- date: agendaDate
26862
+ date: this.parent.activeViewOptions.group.byDate ? firstDate : agendaDate
26836
26863
  };
26837
26864
  lastLevelInfo[parseInt((lastLevelInfo.length - data.length).toString(), 10)].push(tempObj);
26838
26865
  tempLastLevelInfo.push(extend({}, tempObj, null, true));
@@ -26860,7 +26887,8 @@ class AgendaBase extends ViewBase {
26860
26887
  tempGroupedData[0].type = 'parentColumnLevel_' + (y + 1);
26861
26888
  tempGroupedData[0].resource = topResources[topResources.length - (y + 1)];
26862
26889
  tempGroupedData[0].resourceData = data[parseInt(x.toString(), 10)];
26863
- tempGroupedData[0].date = agendaDate;
26890
+ tempGroupedData[0].date = this.parent.activeViewOptions.group.byDate ?
26891
+ tempLastLevelInfo[parseInt(u.toString(), 10)].date : agendaDate;
26864
26892
  lastLevelInfo[tempGroupedData[0].groupIndex].push(tempGroupedData[0]);
26865
26893
  tempGroupedData = [];
26866
26894
  totalRowSpan = 0;