@syncfusion/ej2-schedule 27.1.55 → 27.1.57

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.
@@ -66,6 +66,14 @@ var cellSelect = 'cellSelect';
66
66
  var virtualScrollStart = 'virtualScrollStart';
67
67
  /** @private */
68
68
  var virtualScrollStop = 'virtualScrollStop';
69
+ /** @private */
70
+ var noEvents = 'noEvents';
71
+ /** @private */
72
+ var agendaCells = 'agendaCells';
73
+ /** @private */
74
+ var resourceHeader = 'resourceHeader';
75
+ /** @private */
76
+ var dateHeader = 'dateHeader';
69
77
  /**
70
78
  * Specifies schedule internal events
71
79
  */
@@ -4071,7 +4079,7 @@ function generate(startDate, rule, excludeDate, startDayOfWeek, maximumCount, vi
4071
4079
  dailyType(modifiedDate, ruleObject.until, data, ruleObject);
4072
4080
  break;
4073
4081
  case 'WEEKLY':
4074
- weeklyType(modifiedDate, ruleObject.until, data, ruleObject);
4082
+ weeklyType(modifiedDate, ruleObject.until, data, ruleObject, startDayOfWeek);
4075
4083
  break;
4076
4084
  case 'MONTHLY':
4077
4085
  monthlyType(modifiedDate, ruleObject.until, data, ruleObject);
@@ -4174,10 +4182,11 @@ function dailyType(startDate, endDate, data, ruleObject) {
4174
4182
  * @param {Date} endDate Accepts the end date
4175
4183
  * @param {number[]} data Accepts the collection of dates
4176
4184
  * @param {RecRule} ruleObject Accepts the recurrence rule object
4185
+ * @param {number} startDayOfWeek Accepts the start day index of week
4177
4186
  * @returns {void}
4178
4187
  * @private
4179
4188
  */
4180
- function weeklyType(startDate, endDate, data, ruleObject) {
4189
+ function weeklyType(startDate, endDate, data, ruleObject, startDayOfWeek) {
4181
4190
  var tempDate = new Date(startDate.getTime());
4182
4191
  if (!ruleObject.day.length) {
4183
4192
  ruleObject.day.push(DAYINDEX[startDate.getDay()]);
@@ -4226,7 +4235,7 @@ function weeklyType(startDate, endDate, data, ruleObject) {
4226
4235
  }
4227
4236
  else {
4228
4237
  tempDate = getStartDateForWeek(startDate, ruleObject.day);
4229
- if (interval > 1 && dayIndex.indexOf(ruleObject.day[0]) < startDate.getDay()) {
4238
+ if (interval > 1 && dayIndex.indexOf(ruleObject.day[0]) < (startDate.getDay() - startDayOfWeek)) {
4230
4239
  tempDate.setDate(tempDate.getDate() + ((interval - 1) * 7));
4231
4240
  }
4232
4241
  while (compareDates(tempDate, endDate)) {
@@ -6132,11 +6141,14 @@ var EventBase = /** @__PURE__ @class */ (function () {
6132
6141
  if (eventsData.length > 0) {
6133
6142
  var selectedObject = eventsData[eventsData.length - 1];
6134
6143
  var eventStartTime = selectedObject[this.parent.eventFields.startTime];
6135
- var nearestTime = new Date(+eventStartTime).setMinutes(0, 0, 0);
6144
+ var nearestTime = void 0;
6136
6145
  var isAllDay = this.isAllDayAppointment(selectedObject);
6137
- if (this.parent.currentView === 'Month' || isAllDay) {
6146
+ if (this.parent.currentView === 'Month' || isAllDay || !this.parent.activeViewOptions.timeScale.enable) {
6138
6147
  nearestTime = new Date(+eventStartTime).setHours(0, 0, 0, 0);
6139
6148
  }
6149
+ else {
6150
+ nearestTime = this.findNearestSlot(eventStartTime);
6151
+ }
6140
6152
  var targetArea = void 0;
6141
6153
  if (isAllDay && ['Day', 'Week', 'WorkWeek'].indexOf(this.parent.currentView) !== -1) {
6142
6154
  targetArea = this.parent.getAllDayRow();
@@ -6145,7 +6157,8 @@ var EventBase = /** @__PURE__ @class */ (function () {
6145
6157
  targetArea = this.parent.getContentTable();
6146
6158
  }
6147
6159
  var queryString = '[data-date="' + new Date(nearestTime).getTime() + '"]';
6148
- if (this.parent.activeViewOptions.group.resources.length > 0) {
6160
+ if (!isNullOrUndefined(this.parent.activeViewOptions.group.resources) &&
6161
+ this.parent.activeViewOptions.group.resources.length > 0) {
6149
6162
  queryString += '[data-group-index="' + this.getGroupIndexFromEvent(selectedObject) + '"]';
6150
6163
  }
6151
6164
  target = targetArea.querySelector(queryString);
@@ -6159,6 +6172,25 @@ var EventBase = /** @__PURE__ @class */ (function () {
6159
6172
  }
6160
6173
  return target;
6161
6174
  };
6175
+ EventBase.prototype.findNearestSlot = function (appointmentTime) {
6176
+ var msMajorInterval = this.parent.activeViewOptions.timeScale.interval * MS_PER_MINUTE;
6177
+ var msInterval = msMajorInterval / this.parent.activeViewOptions.timeScale.slotCount;
6178
+ var numberOfSlots = Math.round(MS_PER_DAY / msInterval);
6179
+ var startTime = new Date(appointmentTime);
6180
+ startTime.setHours(0, 0, 0, 0);
6181
+ var slots = Array.from({ length: numberOfSlots }, function (_, i) {
6182
+ var slotTime = new Date(startTime.getTime() + i * msInterval);
6183
+ return slotTime;
6184
+ });
6185
+ var nearestSlot = slots.reduce(function (nearest, slot) {
6186
+ var difference = Math.abs(appointmentTime.getTime() - slot.getTime());
6187
+ if (!nearest || difference < Math.abs(appointmentTime.getTime() - nearest.getTime())) {
6188
+ return slot;
6189
+ }
6190
+ return nearest;
6191
+ }, null);
6192
+ return Math.trunc(nearestSlot.getTime() / 1000) * 1000;
6193
+ };
6162
6194
  EventBase.prototype.getGroupIndexFromEvent = function (eventData) {
6163
6195
  var levelIndex;
6164
6196
  var resource;
@@ -6460,7 +6492,7 @@ var EventBase = /** @__PURE__ @class */ (function () {
6460
6492
  var newTimezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();
6461
6493
  var firstDay = this.parent.activeViewOptions.firstDayOfWeek;
6462
6494
  var calendarMode = this.parent.calendarMode;
6463
- if (event[this.parent.eventFields.recurrenceRule] && event[this.parent.eventFields.recurrenceRule].includes('BYMONTHDAY') &&
6495
+ if (event[this.parent.eventFields.recurrenceRule] && this.isDayBasedRecurrence(event) &&
6464
6496
  this.parent.timezone && event[this.parent.eventFields.startTimezone] && event[this.parent.eventFields.endTimezone]) {
6465
6497
  startDate = this.parent.tzModule.convert(event[this.parent.eventFields.startTime], this.parent.timezone, event[this.parent.eventFields.startTimezone]);
6466
6498
  }
@@ -6480,7 +6512,7 @@ var EventBase = /** @__PURE__ @class */ (function () {
6480
6512
  }
6481
6513
  var isDSTAdjusted = false;
6482
6514
  var convertedDates = [];
6483
- if (event[this.parent.eventFields.recurrenceRule] && event[this.parent.eventFields.recurrenceRule].includes('BYMONTHDAY') &&
6515
+ if (event[this.parent.eventFields.recurrenceRule] && this.isDayBasedRecurrence(event) &&
6484
6516
  this.parent.timezone && event[this.parent.eventFields.startTimezone] && event[this.parent.eventFields.endTimezone]) {
6485
6517
  isDSTAdjusted = true;
6486
6518
  convertedDates.push.apply(convertedDates, dates.map(function (date) {
@@ -6503,6 +6535,10 @@ var EventBase = /** @__PURE__ @class */ (function () {
6503
6535
  }
6504
6536
  return occurrenceCollection;
6505
6537
  };
6538
+ EventBase.prototype.isDayBasedRecurrence = function (event) {
6539
+ return (event[this.parent.eventFields.recurrenceRule].includes('BYMONTHDAY')
6540
+ || event[this.parent.eventFields.recurrenceRule].includes('BYDAY'));
6541
+ };
6506
6542
  EventBase.prototype.getDSTAdjustedTime = function (date, event) {
6507
6543
  var occurDate = date;
6508
6544
  if (this.parent.timezone &&
@@ -26886,12 +26922,24 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
26886
26922
  }
26887
26923
  else if (data.type === 'eventColumn') {
26888
26924
  var elementType = (data.eventData.length === 0) ? 'noEvents' : 'data';
26925
+ for (var i = 0; i < ntr.childNodes.length; i++) {
26926
+ var currentElement = ntr.childNodes.item(i);
26927
+ var renderCellElementType = currentElement.classList.contains('e-resource-column') ?
26928
+ resourceHeader : dateHeader;
26929
+ this.parent.trigger(renderCell, {
26930
+ elementType: renderCellElementType, element: currentElement, date: data.date, groupIndex: data.groupIndex
26931
+ });
26932
+ }
26889
26933
  ntd = this.createAgendaContentElement(elementType, data.eventData, ntd, data.groupOrder, data.groupIndex);
26890
26934
  ntd.setAttribute('data-date', data.date.getTime().toString());
26891
26935
  if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {
26892
26936
  addClass([ntd], [AGENDA_CELLS_CLASS, AGENDA_DAY_PADDING_CLASS]);
26893
26937
  }
26894
26938
  ntr.appendChild(ntd);
26939
+ var renderCellType = (data.eventData.length === 0) ? noEvents : agendaCells;
26940
+ this.parent.trigger(renderCell, {
26941
+ elementType: renderCellType, element: ntd, date: data.date, groupIndex: data.groupIndex
26942
+ });
26895
26943
  }
26896
26944
  else {
26897
26945
  ntd.setAttribute('rowspan', data.rowSpan.toString());
@@ -26932,15 +26980,18 @@ var AgendaBase = /** @__PURE__ @class */ (function (_super) {
26932
26980
  }
26933
26981
  return dateHeader;
26934
26982
  };
26935
- AgendaBase.prototype.renderEmptyContent = function (tBody, agendaDate) {
26983
+ AgendaBase.prototype.renderEmptyContent = function (tBody, agendaDate, hasNoEvents) {
26936
26984
  var eTr = this.createTableRowElement(agendaDate, 'noEvents');
26937
26985
  var eTd = eTr.children[0];
26938
- var noEvents = createElement('div', {
26986
+ var noEvents$1 = createElement('div', {
26939
26987
  className: AGENDA_EMPTY_EVENT_CLASS,
26940
26988
  innerHTML: this.parent.localeObj.getConstant('noEvents')
26941
26989
  });
26942
- eTd.appendChild(noEvents);
26990
+ eTd.appendChild(noEvents$1);
26943
26991
  tBody.appendChild(eTr);
26992
+ if (hasNoEvents) {
26993
+ this.parent.trigger(renderCell, { elementType: noEvents, element: eTd, date: agendaDate });
26994
+ }
26944
26995
  };
26945
26996
  AgendaBase.prototype.createTableRowElement = function (date, type) {
26946
26997
  var daysCount = getDaysCount(this.parent.selectedDate.getTime(), date.getTime());
@@ -27104,7 +27155,7 @@ var Agenda = /** @__PURE__ @class */ (function (_super) {
27104
27155
  }
27105
27156
  }
27106
27157
  if (tBody.childNodes.length <= 0) {
27107
- this.renderEmptyContent(tBody, agendaDate);
27158
+ this.renderEmptyContent(tBody, agendaDate, true);
27108
27159
  }
27109
27160
  };
27110
27161
  Agenda.prototype.renderContent = function (tBody, agendaDate, lastDate) {
@@ -27162,11 +27213,15 @@ var Agenda = /** @__PURE__ @class */ (function (_super) {
27162
27213
  var elementType = (!this.parent.hideEmptyAgendaDays && filterData.length === 0) ? 'noEvents' : 'data';
27163
27214
  dTd.appendChild(this.createDateHeaderElement(agendaDate));
27164
27215
  nTr.appendChild(dTd);
27216
+ this.parent.trigger(renderCell, { elementType: dateHeader, element: dTd, date: agendaDate });
27165
27217
  var cTd = this.createAgendaContentElement(elementType, filterData, aTd);
27166
27218
  nTr.appendChild(cTd);
27167
27219
  if (cTd.querySelectorAll('li').length > 0) {
27168
27220
  tBody.appendChild(nTr);
27169
27221
  }
27222
+ var renderCellElementType = (!this.parent.hideEmptyAgendaDays && filterData.length === 0) ?
27223
+ noEvents : agendaCells;
27224
+ this.parent.trigger(renderCell, { elementType: renderCellElementType, element: cTd, date: agendaDate });
27170
27225
  }
27171
27226
  else if (this.parent.activeViewOptions.allowVirtualScrolling) {
27172
27227
  day--;
@@ -29356,5 +29411,5 @@ var Print = /** @__PURE__ @class */ (function () {
29356
29411
  return Print;
29357
29412
  }());
29358
29413
 
29359
- export { Agenda, DEFAULT_WEEKS, Day, DragAndDrop, ExcelExport, Gregorian, HeaderRenderer, ICalendarExport, ICalendarImport, Islamic, MS_PER_DAY, MS_PER_MINUTE, Month, MonthAgenda, Print, RecurrenceEditor, Resize, Schedule, TimelineMonth, TimelineViews, TimelineYear, Timezone, ViewBase, WEEK_LENGTH, Week, WorkWeek, Year, actionBegin, actionComplete, actionFailure, addDays, addMonths, addYears, capitalizeFirstWord, cellClick, cellDoubleClick, cellMouseDown, cellSelect, contentReady, dataBinding, dataBound, dataReady, documentClick, drag, dragStart, dragStop, eventClick, eventDoubleClick, eventRendered, eventsLoaded, extractObjectFromRule, findIndexInData, firstDateOfMonth, generate, generateSummary, getCalendarUtil, getDateCount, getDateFromRecurrenceDateString, getDateFromString, getDateInMs, getDaysCount, getElementHeight, getElementHeightFromClass, getElementTop, getElementWidth, getElementWidthFromClass, getMaxDays, getOuterHeight, getRecurrenceStringFromDate, getScrollBarWidth, getStartEndHours, getTranslateX, getTranslateY, getUniversalTime, getWeekFirstDate, getWeekLastDate, getWeekMiddleDate, getWeekNumber, hover, initialEnd, initialLoad, inlineClick, isDaylightSavingTime, isIPadDevice, isMobile, lastDateOfMonth, moreEventsClick, navigating, popupClose, popupOpen, print, removeChildren, renderCell, resetScrollbarWidth, resetTime, resizeStart, resizeStop, resizing, scroll, scrollUiUpdate, select, setTime, timezoneData, uiUpdate, virtualScroll, virtualScrollStart, virtualScrollStop };
29414
+ export { Agenda, DEFAULT_WEEKS, Day, DragAndDrop, ExcelExport, Gregorian, HeaderRenderer, ICalendarExport, ICalendarImport, Islamic, MS_PER_DAY, MS_PER_MINUTE, Month, MonthAgenda, Print, RecurrenceEditor, Resize, Schedule, TimelineMonth, TimelineViews, TimelineYear, Timezone, ViewBase, WEEK_LENGTH, Week, WorkWeek, Year, actionBegin, actionComplete, actionFailure, addDays, addMonths, addYears, agendaCells, capitalizeFirstWord, cellClick, cellDoubleClick, cellMouseDown, cellSelect, contentReady, dataBinding, dataBound, dataReady, dateHeader, documentClick, drag, dragStart, dragStop, eventClick, eventDoubleClick, eventRendered, eventsLoaded, extractObjectFromRule, findIndexInData, firstDateOfMonth, generate, generateSummary, getCalendarUtil, getDateCount, getDateFromRecurrenceDateString, getDateFromString, getDateInMs, getDaysCount, getElementHeight, getElementHeightFromClass, getElementTop, getElementWidth, getElementWidthFromClass, getMaxDays, getOuterHeight, getRecurrenceStringFromDate, getScrollBarWidth, getStartEndHours, getTranslateX, getTranslateY, getUniversalTime, getWeekFirstDate, getWeekLastDate, getWeekMiddleDate, getWeekNumber, hover, initialEnd, initialLoad, inlineClick, isDaylightSavingTime, isIPadDevice, isMobile, lastDateOfMonth, moreEventsClick, navigating, noEvents, popupClose, popupOpen, print, removeChildren, renderCell, resetScrollbarWidth, resetTime, resizeStart, resizeStop, resizing, resourceHeader, scroll, scrollUiUpdate, select, setTime, timezoneData, uiUpdate, virtualScroll, virtualScrollStart, virtualScrollStop };
29360
29415
  //# sourceMappingURL=ej2-schedule.es5.js.map