@syncfusion/ej2-schedule 25.2.3 → 25.2.6

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.
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 25.2.3
3
+ * version : 25.2.6
4
4
  * Copyright Syncfusion Inc. 2001 - 2023. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-schedule@*",
3
- "_id": "@syncfusion/ej2-schedule@25.1.41",
3
+ "_id": "@syncfusion/ej2-schedule@25.2.4",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-x3Khw66fTcmx7VXjVMNa2WbK4NWN/OqnZgN1Lo+nm5cRYkvhws5hzOzO8hXNrnSntgtsoK76wgd8Dkrh0JuStw==",
5
+ "_integrity": "sha512-GotTq1HrcT++YmcD8AsfKhcdJtUYrCa0DLNCTe2vYuPOHHPiJbNyJuXqVGIhENXl9OsDqa3D2RwyddA0Ntd7kA==",
6
6
  "_location": "/@syncfusion/ej2-schedule",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -23,8 +23,8 @@
23
23
  "/@syncfusion/ej2-react-schedule",
24
24
  "/@syncfusion/ej2-vue-schedule"
25
25
  ],
26
- "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-schedule/-/ej2-schedule-25.1.41.tgz",
27
- "_shasum": "95bd07234dfcb99dc0b971588cc75a1a1c8254a3",
26
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-schedule/-/ej2-schedule-25.2.4.tgz",
27
+ "_shasum": "e8ed70e9296b26f48063202ea4729c9917b27076",
28
28
  "_spec": "@syncfusion/ej2-schedule@*",
29
29
  "_where": "/jenkins/workspace/elease-automation_release_25.1.1/packages/included",
30
30
  "author": {
@@ -35,16 +35,16 @@
35
35
  },
36
36
  "bundleDependencies": false,
37
37
  "dependencies": {
38
- "@syncfusion/ej2-base": "~25.2.3",
39
- "@syncfusion/ej2-buttons": "~25.2.3",
40
- "@syncfusion/ej2-calendars": "~25.2.3",
38
+ "@syncfusion/ej2-base": "~25.2.5",
39
+ "@syncfusion/ej2-buttons": "~25.2.6",
40
+ "@syncfusion/ej2-calendars": "~25.2.5",
41
41
  "@syncfusion/ej2-data": "~25.2.3",
42
- "@syncfusion/ej2-dropdowns": "~25.2.3",
42
+ "@syncfusion/ej2-dropdowns": "~25.2.6",
43
43
  "@syncfusion/ej2-excel-export": "~25.2.3",
44
- "@syncfusion/ej2-inputs": "~25.2.3",
44
+ "@syncfusion/ej2-inputs": "~25.2.6",
45
45
  "@syncfusion/ej2-lists": "~25.2.3",
46
- "@syncfusion/ej2-navigations": "~25.2.3",
47
- "@syncfusion/ej2-popups": "~25.2.3"
46
+ "@syncfusion/ej2-navigations": "~25.2.6",
47
+ "@syncfusion/ej2-popups": "~25.2.6"
48
48
  },
49
49
  "deprecated": false,
50
50
  "description": "Flexible scheduling library with more built-in features and enhanced customization options similar to outlook and google calendar, allowing the users to plan and manage their appointments with efficient data-binding support.",
@@ -73,6 +73,6 @@
73
73
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
74
74
  },
75
75
  "typings": "index.d.ts",
76
- "version": "25.2.3",
76
+ "version": "25.2.6",
77
77
  "sideEffects": false
78
78
  }
@@ -56,7 +56,6 @@ var DragAndDrop = /** @class */ (function (_super) {
56
56
  abort: '.' + cls.EVENT_RESIZE_CLASS,
57
57
  clone: true,
58
58
  isDragScroll: true,
59
- enableTapHold: this.parent.isAdaptive,
60
59
  enableTailMode: (this.parent.eventDragArea) ? true : false,
61
60
  cursorAt: (this.parent.eventDragArea) ? { left: -20, top: -20 } : { left: 0, top: 0 },
62
61
  dragArea: this.dragArea,
@@ -75,6 +74,10 @@ var DragAndDrop = /** @class */ (function (_super) {
75
74
  };
76
75
  DragAndDrop.prototype.dragHelper = function (e) {
77
76
  var _this = this;
77
+ if (e.sender && e.sender.type === 'touchmove' && (!this.parent.uiStateValues.isTapHold ||
78
+ !e.element.classList.contains(cls.APPOINTMENT_BORDER))) {
79
+ return null;
80
+ }
78
81
  this.setDragActionDefaultValues();
79
82
  this.actionObj.element = e.element;
80
83
  this.actionObj.action = 'drag';
@@ -285,6 +288,9 @@ var DragAndDrop = /** @class */ (function (_super) {
285
288
  return this.multiData;
286
289
  };
287
290
  DragAndDrop.prototype.drag = function (e) {
291
+ if (e.event && e.event.type === 'touchmove') {
292
+ e.event.preventDefault();
293
+ }
288
294
  if (this.parent.quickPopup) {
289
295
  this.parent.quickPopup.quickPopupHide(true);
290
296
  }
@@ -375,7 +381,7 @@ var DragAndDrop = /** @class */ (function (_super) {
375
381
  clearInterval(this.actionObj.scrollInterval);
376
382
  this.actionObj.scrollInterval = null;
377
383
  this.actionClass('removeClass');
378
- this.parent.uiStateValues.action = false;
384
+ this.parent.uiStateValues.action = this.parent.uiStateValues.isTapHold = false;
379
385
  if (this.isAllowDrop(e)) {
380
386
  return;
381
387
  }
@@ -5,7 +5,7 @@ import { ActionBase } from '../actions/action-base';
5
5
  export declare class Resize extends ActionBase {
6
6
  wireResizeEvent(element: HTMLElement): void;
7
7
  private resizeHelper;
8
- private resizeStart;
8
+ resizeStart(e: MouseEvent & TouchEvent): void;
9
9
  private resizing;
10
10
  updateResizingDirection(e: MouseEvent & TouchEvent): void;
11
11
  private monthResizing;
@@ -53,6 +53,10 @@ var Resize = /** @class */ (function (_super) {
53
53
  };
54
54
  Resize.prototype.resizeStart = function (e) {
55
55
  var _this = this;
56
+ if (e && e.type === 'touchstart' && (!this.parent.uiStateValues.isTapHold ||
57
+ !closest(e.target, '.' + cls.APPOINTMENT_BORDER))) {
58
+ return;
59
+ }
56
60
  this.actionObj.action = 'resize';
57
61
  this.actionObj.slotInterval = this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;
58
62
  this.actionObj.interval = this.actionObj.slotInterval;
@@ -117,6 +121,9 @@ var Resize = /** @class */ (function (_super) {
117
121
  });
118
122
  };
119
123
  Resize.prototype.resizing = function (e) {
124
+ if (e && e.type === 'touchmove') {
125
+ e.preventDefault();
126
+ }
120
127
  if (this.parent.quickPopup) {
121
128
  this.parent.quickPopup.quickPopupHide();
122
129
  }
@@ -312,7 +319,7 @@ var Resize = /** @class */ (function (_super) {
312
319
  this.removeCloneElementClasses();
313
320
  this.removeCloneElement();
314
321
  this.actionClass('removeClass');
315
- this.parent.uiStateValues.action = false;
322
+ this.parent.uiStateValues.action = this.parent.uiStateValues.isTapHold = false;
316
323
  var resizeArgs = { cancel: false, data: this.getChangedData(), element: this.actionObj.element, event: e };
317
324
  this.parent.trigger(event.resizeStop, resizeArgs, function (resizeEventArgs) {
318
325
  if (resizeEventArgs.cancel) {
@@ -17,6 +17,7 @@ export declare class ScheduleTouch {
17
17
  private scrollHandler;
18
18
  private swipeHandler;
19
19
  private tapHoldHandler;
20
+ private preventEventClick;
20
21
  private renderPanel;
21
22
  private swapPanels;
22
23
  private confirmSwipe;
@@ -21,10 +21,11 @@ var ScheduleTouch = /** @class */ (function () {
21
21
  this.touchRightDirection = this.parent.enableRtl ? 'Left' : 'Right';
22
22
  }
23
23
  ScheduleTouch.prototype.scrollHandler = function (e) {
24
- if (this.parent.currentView === 'Agenda' || this.parent.uiStateValues.action || !this.parent.allowSwiping ||
25
- (e.originalEvent && e.originalEvent.target &&
26
- (e.originalEvent.target.classList.contains(cls.APPOINTMENT_CLASS) ||
27
- closest(e.originalEvent.target, '.' + cls.APPOINTMENT_CLASS)) && !this.parent.isAdaptive)) {
24
+ var blockSwipe = !this.parent.isAdaptive && e.originalEvent && e.originalEvent.target &&
25
+ !isNullOrUndefined(closest(e.originalEvent.target, '.' + cls.APPOINTMENT_CLASS));
26
+ this.parent.uiStateValues.isTouchScroll = blockSwipe && e.originalEvent.type === 'touchmove' && !this.parent.uiStateValues.action;
27
+ if (blockSwipe || this.parent.currentView === 'Agenda' || this.parent.uiStateValues.action || !this.parent.allowSwiping ||
28
+ this.parent.uiStateValues.isTapHold) {
28
29
  return;
29
30
  }
30
31
  if (!this.timeStampStart) {
@@ -81,7 +82,8 @@ var ScheduleTouch = /** @class */ (function () {
81
82
  }
82
83
  };
83
84
  ScheduleTouch.prototype.swipeHandler = function (e) {
84
- if (!this.isScrollTriggered || this.parent.uiStateValues.action || !this.parent.allowSwiping) {
85
+ if (!this.isScrollTriggered || this.parent.uiStateValues.action || !this.parent.allowSwiping ||
86
+ this.parent.uiStateValues.isTapHold) {
85
87
  return;
86
88
  }
87
89
  this.isScrollTriggered = false;
@@ -111,11 +113,27 @@ var ScheduleTouch = /** @class */ (function () {
111
113
  };
112
114
  ScheduleTouch.prototype.tapHoldHandler = function (e) {
113
115
  var target = closest(e.originalEvent.target, '.' + cls.APPOINTMENT_CLASS);
114
- if (!isNullOrUndefined(target) && this.parent.isAdaptive) {
115
- this.parent.quickPopup.tapHoldEventPopup(e.originalEvent);
116
- return;
116
+ if (!isNullOrUndefined(target)) {
117
+ this.parent.uiStateValues.isTapHold = true;
118
+ if (this.parent.isAdaptive) {
119
+ if (Browser.isIos) {
120
+ EventHandler.add(this.element, 'touchend', this.preventEventClick, this);
121
+ }
122
+ this.parent.quickPopup.tapHoldEventPopup(e.originalEvent);
123
+ }
124
+ else if (['Agenda', 'MonthAgenda', 'Year'].indexOf(this.parent.currentView) < 0) {
125
+ this.parent.selectedElements = [];
126
+ this.parent.eventBase.getSelectedEventElements(target);
127
+ if (this.parent.resizeModule && closest(e.originalEvent.target, '.' + cls.EVENT_RESIZE_CLASS)) {
128
+ this.parent.resizeModule.resizeStart(e.originalEvent);
129
+ }
130
+ }
117
131
  }
118
132
  };
133
+ ScheduleTouch.prototype.preventEventClick = function (e) {
134
+ e.preventDefault();
135
+ EventHandler.remove(this.element, 'touchend', this.preventEventClick);
136
+ };
119
137
  ScheduleTouch.prototype.renderPanel = function (clsName, nextPrevType) {
120
138
  if (!this.currentPanel) {
121
139
  this.currentPanel = {
@@ -30,6 +30,13 @@ var WorkCellInteraction = /** @class */ (function () {
30
30
  this.parent.eventWindow.openEditor(this.parent.activeCellsData, 'Add');
31
31
  return;
32
32
  }
33
+ var isWorkCell = target.classList.contains(cls.WORK_CELLS_CLASS) ||
34
+ target.classList.contains(cls.ALLDAY_CELLS_CLASS);
35
+ if (this.parent.uiStateValues.isTapHold && !this.parent.uiStateValues.action && isWorkCell) {
36
+ this.parent.uiStateValues.isTapHold = false;
37
+ this.parent.eventBase.removeSelectedAppointmentClass();
38
+ this.parent.selectedElements = [];
39
+ }
33
40
  var navigateEle = closest(e.target, '.' + cls.NAVIGATE_CLASS);
34
41
  var navigateView = this.parent.getNavigateView();
35
42
  var sameView = this.parent.currentView === navigateView;
@@ -45,9 +52,7 @@ var WorkCellInteraction = /** @class */ (function () {
45
52
  closest(e.target, '.' + cls.MORE_INDICATOR_CLASS))) {
46
53
  return;
47
54
  }
48
- var isWorkCell_1 = target.classList.contains(cls.WORK_CELLS_CLASS) ||
49
- target.classList.contains(cls.ALLDAY_CELLS_CLASS);
50
- if (isWorkCell_1 && e.shiftKey && e.which === 1 && this.parent.keyboardInteractionModule) {
55
+ if (isWorkCell && e.shiftKey && e.which === 1 && this.parent.keyboardInteractionModule) {
51
56
  this.parent.keyboardInteractionModule.onMouseSelection(e);
52
57
  return;
53
58
  }
@@ -55,7 +60,7 @@ var WorkCellInteraction = /** @class */ (function () {
55
60
  var args = extend(this.parent.activeCellsData, { cancel: false, event: e, name: 'cellClick' });
56
61
  this.parent.trigger(event.cellClick, args, function (clickArgs) {
57
62
  if (!clickArgs.cancel) {
58
- if (isWorkCell_1) {
63
+ if (isWorkCell) {
59
64
  _this.parent.selectCell(target);
60
65
  }
61
66
  if (_this.parent.allowInline) {
@@ -125,7 +130,7 @@ var WorkCellInteraction = /** @class */ (function () {
125
130
  return true;
126
131
  }
127
132
  target = closest(e.target, '.' + cls.HEADER_CELLS_CLASS);
128
- if (this.parent.activeView.isTimelineView() && !isNullOrUndefined(target)) {
133
+ if (this.parent.activeView && this.parent.activeView.isTimelineView() && !isNullOrUndefined(target)) {
129
134
  return true;
130
135
  }
131
136
  return false;
@@ -523,6 +523,8 @@ export interface UIStateArgs {
523
523
  isPreventTimezone?: boolean;
524
524
  isPreventEventRefresh?: boolean;
525
525
  scheduleHeight?: number;
526
+ isTapHold?: boolean;
527
+ isTouchScroll?: boolean;
526
528
  }
527
529
  /**
528
530
  * @private
@@ -896,8 +896,9 @@ var ResourceBase = /** @class */ (function () {
896
896
  ResourceBase.prototype.getResourceRenderDates = function () {
897
897
  // eslint-disable-next-line prefer-spread
898
898
  var resourceDates = [].concat.apply([], this.lastResourceLevel.map(function (e) { return e.renderDates; }));
899
- var removeDuplicateDates = function (dateColl) { return dateColl.filter(function (date, index, dates) {
900
- return dates.map(function (dateObj) { return dateObj.getTime(); }).indexOf(date.getTime()) === index;
899
+ var time = resourceDates.map(function (dateObj) { return dateObj.getTime(); });
900
+ var removeDuplicateDates = function (dateColl) { return dateColl.filter(function (date, index) {
901
+ return time.indexOf(date.getTime()) === index;
901
902
  }); };
902
903
  var renderDates = removeDuplicateDates(resourceDates);
903
904
  renderDates.sort(function (a, b) { return a.getTime() - b.getTime(); });
@@ -1077,7 +1078,8 @@ var ResourceBase = /** @class */ (function () {
1077
1078
  index = resource.dataSource.map(function (e) { return e[resource.idField]; }).indexOf(id);
1078
1079
  }
1079
1080
  }
1080
- var offsetTarget = this.parent.element.querySelector("." + cls.HEADER_ROW_CLASS + ":nth-child(" + (levelIndex + 1) + ")");
1081
+ var offsetTarget = this.parent.currentView === 'Month' ? this.parent.element.querySelector("." + cls.DATE_HEADER_WRAP_CLASS + " tbody tr:nth-child(" + (levelIndex + 1) + ")")
1082
+ : this.parent.element.querySelector("." + cls.HEADER_ROW_CLASS + ":nth-child(" + (levelIndex + 1) + ")");
1081
1083
  var offset = [].slice.call(offsetTarget.children).map(function (node) { return node.offsetLeft; });
1082
1084
  scrollElement.scrollLeft = offset[parseInt(index.toString(), 10)];
1083
1085
  }
@@ -138,6 +138,7 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
138
138
  scrollLeft: number;
139
139
  isPrinting: boolean;
140
140
  adaptiveGroupIndex: number;
141
+ activeEventTemplates: string[];
141
142
  /**
142
143
  * Sets the `width` of the Schedule component, accepting both string and number values.
143
144
  *
@@ -916,6 +917,7 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
916
917
  */
917
918
  render(): void;
918
919
  private renderTableContainer;
920
+ getEventTemplateName(resIndex: number): string;
919
921
  /**
920
922
  * Method to render react templates
921
923
  *
@@ -141,6 +141,13 @@ var Schedule = /** @class */ (function (_super) {
141
141
  this.element.appendChild(this.createElement('div', { className: cls.TABLE_CONTAINER_CLASS }));
142
142
  }
143
143
  };
144
+ Schedule.prototype.getEventTemplateName = function (resIndex) {
145
+ var templateName = 'eventTemplate_' + resIndex;
146
+ if (this.activeEventTemplates.indexOf(templateName) < 0) {
147
+ this.activeEventTemplates.push(templateName);
148
+ }
149
+ return templateName;
150
+ };
144
151
  /**
145
152
  * Method to render react templates
146
153
  *
@@ -737,6 +744,7 @@ var Schedule = /** @class */ (function (_super) {
737
744
  this.resourceCollection = [];
738
745
  this.currentAction = null;
739
746
  this.selectedElements = [];
747
+ this.activeEventTemplates = [];
740
748
  this.setViewOptions();
741
749
  };
742
750
  Schedule.prototype.getDefaultLocale = function () {
@@ -1207,7 +1215,7 @@ var Schedule = /** @class */ (function (_super) {
1207
1215
  };
1208
1216
  Schedule.prototype.onScheduleResize = function () {
1209
1217
  if (isNullOrUndefined(this.activeView) || ((this.isAdaptive || util.isMobile()) && document.activeElement
1210
- && document.activeElement.classList.contains(cls.SUBJECT_CLASS))) {
1218
+ && document.activeElement.classList.contains(cls.SUBJECT_CLASS)) || this.uiStateValues.isTapHold) {
1211
1219
  return;
1212
1220
  }
1213
1221
  if (this.virtualScrollModule && this.activeView.isTimelineView()) {
@@ -669,6 +669,10 @@ var EventBase = /** @class */ (function () {
669
669
  }
670
670
  }
671
671
  else if (!closest(element, '.' + cls.POPUP_OPEN)) {
672
+ if (this.parent.uiStateValues.isTapHold && closest(element, '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS)) {
673
+ return;
674
+ }
675
+ this.parent.uiStateValues.isTapHold = false;
672
676
  this.removeSelectedAppointmentClass();
673
677
  this.parent.selectedElements = [];
674
678
  }
@@ -678,7 +682,7 @@ var EventBase = /** @class */ (function () {
678
682
  var isReadOnly = (!isNullOrUndefined(event)) ? event[this.parent.eventFields.isReadonly] : false;
679
683
  EventHandler.add(element, 'click', this.eventClick, this);
680
684
  if (!this.parent.isAdaptive && !this.parent.activeViewOptions.readonly && !isReadOnly) {
681
- EventHandler.add(element, 'touchstart', this.eventTouchClick, this);
685
+ EventHandler.add(element, 'touchend', this.eventTouchClick, this);
682
686
  EventHandler.add(element, 'dblclick', this.eventDoubleClick, this);
683
687
  }
684
688
  if (!this.parent.activeViewOptions.readonly && !isReadOnly && !isPreventCrud) {
@@ -692,6 +696,10 @@ var EventBase = /** @class */ (function () {
692
696
  };
693
697
  EventBase.prototype.eventTouchClick = function (e) {
694
698
  var _this = this;
699
+ if (this.parent.uiStateValues.isTouchScroll || this.parent.uiStateValues.isTapHold || this.parent.uiStateValues.action) {
700
+ this.parent.uiStateValues.isTouchScroll = this.parent.uiStateValues.isTapHold = false;
701
+ return;
702
+ }
695
703
  setTimeout(function () { return _this.isDoubleTapped = false; }, 250);
696
704
  e.preventDefault();
697
705
  if (this.isDoubleTapped) {
@@ -805,7 +813,7 @@ var EventBase = /** @class */ (function () {
805
813
  if (this.parent.quickPopup) {
806
814
  this.parent.quickPopup.quickPopupHide(true);
807
815
  }
808
- if (eventData.type === 'touchstart') {
816
+ if (eventData.type === 'touchend') {
809
817
  this.activeEventData(eventData, true);
810
818
  }
811
819
  this.removeSelectedAppointmentClass();
@@ -1121,8 +1129,8 @@ var EventBase = /** @class */ (function () {
1121
1129
  var scheduleId = this.parent.element.id + '_';
1122
1130
  var viewName = this.parent.activeViewOptions.eventTemplateName;
1123
1131
  var templateId = scheduleId + viewName + 'eventTemplate';
1124
- var templateName = 'eventTemplate' + (isResourceEventTemplate &&
1125
- this.parent.currentView.indexOf('Year') === -1 ? '_' + resIndex : '');
1132
+ var templateName = isResourceEventTemplate && this.parent.currentView.indexOf('Year') === -1 ?
1133
+ this.parent.getEventTemplateName(resIndex) : 'eventTemplate';
1126
1134
  templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);
1127
1135
  }
1128
1136
  else {
@@ -405,7 +405,7 @@ var MonthEvent = /** @class */ (function (_super) {
405
405
  var scheduleId = this.parent.element.id + '_';
406
406
  var viewName = this.parent.activeViewOptions.eventTemplateName;
407
407
  var templateId = scheduleId + viewName + 'eventTemplate';
408
- var eventTemplate = 'eventTemplate' + (this.isResourceEventTemplate ? '_' + resIndex : '');
408
+ var eventTemplate = this.isResourceEventTemplate ? this.parent.getEventTemplateName(resIndex) : 'eventTemplate';
409
409
  templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, eventTemplate, templateId, false);
410
410
  }
411
411
  else {
@@ -359,7 +359,7 @@ var VerticalEvent = /** @class */ (function (_super) {
359
359
  var viewName = this.parent.activeViewOptions.eventTemplateName;
360
360
  var templateId = elementId + viewName + 'eventTemplate';
361
361
  var resIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex : resource;
362
- var templateName = 'eventTemplate' + (this.isResourceEventTemplate ? '_' + resIndex : '');
362
+ var templateName = this.isResourceEventTemplate ? this.parent.getEventTemplateName(resIndex) : 'eventTemplate';
363
363
  templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);
364
364
  }
365
365
  else {
@@ -364,7 +364,6 @@ var QuickPopups = /** @class */ (function () {
364
364
  };
365
365
  QuickPopups.prototype.tapHoldEventPopup = function (e) {
366
366
  var target = closest(e.target, '.' + cls.APPOINTMENT_CLASS);
367
- this.isMultipleEventSelect = false;
368
367
  this.parent.selectedElements = [];
369
368
  this.isMultipleEventSelect = true;
370
369
  this.parent.eventBase.getSelectedEventElements(target);
@@ -224,6 +224,14 @@ var Month = /** @class */ (function (_super) {
224
224
  remove(this.element.querySelector('tbody tr'));
225
225
  this.renderHeader();
226
226
  this.parent.notify(event.contentReady, {});
227
+ var dateHeader = this.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);
228
+ var contentWrapper = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);
229
+ if (dateHeader) {
230
+ dateHeader.scrollLeft = this.parent.uiStateValues.left;
231
+ }
232
+ if (contentWrapper) {
233
+ contentWrapper.scrollLeft = this.parent.uiStateValues.left;
234
+ }
227
235
  };
228
236
  Month.prototype.wireCellEvents = function (element) {
229
237
  EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);
@@ -19,10 +19,17 @@ var Render = /** @class */ (function () {
19
19
  Render.prototype.initializeLayout = function (viewName) {
20
20
  if (this.parent.activeView) {
21
21
  var templates = [
22
- 'cellTemplate', 'eventTemplate', 'tooltipTemplate', 'majorSlotTemplate', 'minorSlotTemplate',
22
+ 'cellTemplate', 'tooltipTemplate', 'majorSlotTemplate', 'minorSlotTemplate',
23
23
  'headerTooltipTemplate', 'dateHeaderTemplate', 'dayHeaderTemplate', 'monthHeaderTemplate',
24
24
  'headerIndentTemplate', 'resourceHeaderTemplate', 'cellHeaderTemplate', 'dateRangeTemplate'
25
25
  ];
26
+ if (this.parent.activeEventTemplates.length > 0) {
27
+ templates = templates.concat(this.parent.activeEventTemplates);
28
+ this.parent.activeEventTemplates = [];
29
+ }
30
+ else {
31
+ templates.push('eventTemplate');
32
+ }
26
33
  this.parent.resetTemplates(templates);
27
34
  this.parent.activeView.removeEventListener();
28
35
  this.parent.activeView.destroy();
@@ -61,7 +61,7 @@ var VerticalView = /** @class */ (function (_super) {
61
61
  this.parent.uiStateValues.top = target.scrollTop;
62
62
  }
63
63
  this.parent.uiStateValues.left = target.scrollLeft;
64
- if (!isNullOrUndefined(this.parent.quickPopup)) {
64
+ if (!isNullOrUndefined(this.parent.quickPopup) && !this.parent.uiStateValues.isTapHold) {
65
65
  this.parent.quickPopup.quickPopupHide();
66
66
  }
67
67
  this.setPersistence();
@@ -430,6 +430,10 @@ var VerticalView = /** @class */ (function (_super) {
430
430
  remove(this.element.querySelector('tbody tr'));
431
431
  this.renderHeader();
432
432
  this.parent.notify(event.contentReady, {});
433
+ var dateHeader = this.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);
434
+ if (dateHeader) {
435
+ dateHeader.scrollLeft = this.parent.uiStateValues.left;
436
+ }
433
437
  };
434
438
  VerticalView.prototype.renderLayout = function (type) {
435
439
  this.setPanel(createElement('div', { className: cls.TABLE_WRAP_CLASS }));
@@ -25,10 +25,27 @@ var ViewBase = /** @class */ (function () {
25
25
  // Method to refresh the date header
26
26
  };
27
27
  ViewBase.prototype.refreshResourceHeader = function () {
28
- remove(this.element.querySelector('tbody').lastElementChild.firstElementChild);
29
- var resTd = createElement('td');
30
- resTd.appendChild(this.parent.resourceBase.createResourceColumn());
31
- prepend([resTd], this.element.querySelector('tbody').lastElementChild);
28
+ var resTbl = this.element.querySelector('.' + cls.RESOURCE_COLUMN_TABLE_CLASS);
29
+ var resourceTd = Array.from(resTbl.querySelectorAll('.' + cls.RESOURCE_CELLS_CLASS));
30
+ resourceTd.forEach(function (currentElement) {
31
+ var children = Array.from(currentElement.children);
32
+ children.forEach(function (child) {
33
+ if (!child.classList.contains(cls.RESOURCE_EXPAND_CLASS) && !child.classList.contains(cls.RESOURCE_COLLAPSE_CLASS)) {
34
+ remove(child);
35
+ }
36
+ });
37
+ });
38
+ if (!isNullOrUndefined(this.parent.resourceBase.renderedResources) && this.parent.resourceBase.renderedResources.length > 0) {
39
+ for (var i = 0; i < resourceTd.length; i++) {
40
+ var element = resourceTd[parseInt(i.toString(), 10)];
41
+ var data = this.parent.resourceBase.renderedResources[parseInt(i.toString(), 10)];
42
+ if (this.parent.activeView && !isNullOrUndefined(element) && !isNullOrUndefined(data)
43
+ && parseInt(element.getAttribute('data-group-index'), 10) === data.groupIndex) {
44
+ this.parent.activeView.setResourceHeaderContent(element, data, cls.RESOURCE_TEXT_CLASS);
45
+ }
46
+ }
47
+ }
48
+ this.parent.renderTemplates();
32
49
  this.parent.notify(event.contentReady, {});
33
50
  };
34
51
  ViewBase.prototype.getDayName = function (date) {