@syncfusion/ej2-schedule 20.1.56 → 20.1.61
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.
- package/CHANGELOG.md +20 -1
- package/dist/ej2-schedule.umd.min.js +2 -2
- package/dist/ej2-schedule.umd.min.js.map +1 -1
- package/dist/es6/ej2-schedule.es2015.js +68 -33
- package/dist/es6/ej2-schedule.es2015.js.map +1 -1
- package/dist/es6/ej2-schedule.es5.js +66 -31
- package/dist/es6/ej2-schedule.es5.js.map +1 -1
- package/dist/global/ej2-schedule.min.js +2 -2
- package/dist/global/ej2-schedule.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/schedule/actions/action-base.d.ts +1 -0
- package/src/schedule/actions/action-base.js +3 -2
- package/src/schedule/actions/drag.js +10 -10
- package/src/schedule/base/schedule.js +5 -1
- package/src/schedule/event-renderer/agenda-base.js +3 -0
- package/src/schedule/event-renderer/event-base.js +16 -11
- package/src/schedule/event-renderer/month.js +1 -3
- package/src/schedule/popups/quick-popups.js +4 -3
- package/src/schedule/renderer/vertical-view.d.ts +1 -0
- package/src/schedule/renderer/vertical-view.js +16 -1
- package/src/schedule/renderer/view-base.js +8 -0
- package/styles/bootstrap-dark.css +1 -4
- package/styles/bootstrap.css +1 -4
- package/styles/bootstrap4.css +1 -4
- package/styles/bootstrap5-dark.css +0 -2
- package/styles/bootstrap5.css +1 -4
- package/styles/fabric-dark.css +1 -4
- package/styles/fabric.css +1 -4
- package/styles/fluent-dark.css +0 -2
- package/styles/fluent.css +1 -4
- package/styles/highcontrast-light.css +1 -4
- package/styles/highcontrast.css +1 -4
- package/styles/material-dark.css +1 -4
- package/styles/material.css +1 -4
- package/styles/schedule/_layout.scss +0 -1
- package/styles/schedule/bootstrap-dark.css +1 -4
- package/styles/schedule/bootstrap.css +1 -4
- package/styles/schedule/bootstrap4.css +1 -4
- package/styles/schedule/bootstrap5-dark.css +0 -2
- package/styles/schedule/bootstrap5.css +1 -4
- package/styles/schedule/fabric-dark.css +1 -4
- package/styles/schedule/fabric.css +1 -4
- package/styles/schedule/fluent-dark.css +0 -2
- package/styles/schedule/fluent.css +1 -4
- package/styles/schedule/highcontrast-light.css +1 -4
- package/styles/schedule/highcontrast.css +1 -4
- package/styles/schedule/material-dark.css +1 -4
- package/styles/schedule/material.css +1 -4
- package/styles/schedule/tailwind-dark.css +0 -2
- package/styles/schedule/tailwind.css +1 -4
- package/styles/tailwind-dark.css +0 -2
- package/styles/tailwind.css +1 -4
|
@@ -5718,7 +5718,7 @@ class EventBase {
|
|
|
5718
5718
|
isAllDayAppointment(event) {
|
|
5719
5719
|
const fieldMapping = this.parent.eventFields;
|
|
5720
5720
|
const isAllDay = event[fieldMapping.isAllDay];
|
|
5721
|
-
const isFullDay = ((event[fieldMapping.endTime]
|
|
5721
|
+
const isFullDay = ((getUniversalTime(event[fieldMapping.endTime]) - getUniversalTime(event[fieldMapping.startTime]))
|
|
5722
5722
|
/ MS_PER_DAY) >= 1;
|
|
5723
5723
|
return (isAllDay || (this.parent.eventSettings.spannedEventPlacement !== 'TimeSlot' && isFullDay)) ? true : false;
|
|
5724
5724
|
}
|
|
@@ -5737,6 +5737,7 @@ class EventBase {
|
|
|
5737
5737
|
}
|
|
5738
5738
|
else if (!closest(element, '.' + POPUP_OPEN)) {
|
|
5739
5739
|
this.removeSelectedAppointmentClass();
|
|
5740
|
+
this.parent.selectedElements = [];
|
|
5740
5741
|
}
|
|
5741
5742
|
}
|
|
5742
5743
|
wireAppointmentEvents(element, event, isPreventCrud = false) {
|
|
@@ -5838,6 +5839,7 @@ class EventBase {
|
|
|
5838
5839
|
this.parent.trigger(eventClick, args, (eventClickArgs) => {
|
|
5839
5840
|
if (eventClickArgs.cancel) {
|
|
5840
5841
|
this.removeSelectedAppointmentClass();
|
|
5842
|
+
this.parent.selectedElements = [];
|
|
5841
5843
|
if (this.parent.quickPopup) {
|
|
5842
5844
|
this.parent.quickPopup.quickPopupHide();
|
|
5843
5845
|
}
|
|
@@ -5869,6 +5871,7 @@ class EventBase {
|
|
|
5869
5871
|
this.activeEventData(e, true);
|
|
5870
5872
|
}
|
|
5871
5873
|
this.removeSelectedAppointmentClass();
|
|
5874
|
+
this.parent.selectedElements = [];
|
|
5872
5875
|
if (this.parent.activeEventData.element.classList.contains(INLINE_APPOINTMENT_CLASS) ||
|
|
5873
5876
|
this.parent.activeEventData.element.querySelector('.' + INLINE_SUBJECT_CLASS)) {
|
|
5874
5877
|
return;
|
|
@@ -6265,16 +6268,18 @@ class EventBase {
|
|
|
6265
6268
|
}
|
|
6266
6269
|
}
|
|
6267
6270
|
updateEventMinimumDuration(startEndHours, startTime, endTime) {
|
|
6268
|
-
|
|
6269
|
-
|
|
6270
|
-
|
|
6271
|
-
|
|
6272
|
-
|
|
6273
|
-
|
|
6274
|
-
|
|
6275
|
-
|
|
6276
|
-
|
|
6277
|
-
|
|
6271
|
+
if (startTime.getTime() < endTime.getTime()) {
|
|
6272
|
+
const eventDuration = (getUniversalTime(endTime) - getUniversalTime(startTime)) / MS_PER_MINUTE;
|
|
6273
|
+
if (eventDuration < this.parent.eventSettings.minimumEventDuration) {
|
|
6274
|
+
const tempEnd = new Date(startTime);
|
|
6275
|
+
tempEnd.setMinutes(tempEnd.getMinutes() + this.parent.eventSettings.minimumEventDuration);
|
|
6276
|
+
endTime = tempEnd;
|
|
6277
|
+
if (endTime.getTime() > startEndHours.endHour.getTime()) {
|
|
6278
|
+
const tempStart = new Date(startEndHours.endHour.getTime());
|
|
6279
|
+
tempStart.setMinutes(tempStart.getMinutes() - this.parent.eventSettings.minimumEventDuration);
|
|
6280
|
+
startTime = tempStart;
|
|
6281
|
+
endTime = startEndHours.endHour;
|
|
6282
|
+
}
|
|
6278
6283
|
}
|
|
6279
6284
|
}
|
|
6280
6285
|
return { startDate: startTime, endDate: endTime };
|
|
@@ -7227,9 +7232,7 @@ class MonthEvent extends EventBase {
|
|
|
7227
7232
|
this.sortByDateTime(blockList);
|
|
7228
7233
|
if (this.parent.currentView === 'Month' && this.parent.rowAutoHeight && this.parent.activeViewOptions.group.resources.length === 0) {
|
|
7229
7234
|
const totalCells = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap table tr td:first-child'));
|
|
7230
|
-
const height = this.parent.
|
|
7231
|
-
this.parent.element.querySelector('.e-date-header-wrap').clientHeight) / totalCells.length
|
|
7232
|
-
: this.parent.element.querySelector('.e-schedule-table').clientHeight / totalCells.length;
|
|
7235
|
+
const height = this.parent.element.querySelector('.' + CONTENT_TABLE_CLASS).clientHeight / totalCells.length;
|
|
7233
7236
|
totalCells.forEach((cell) => {
|
|
7234
7237
|
setStyleAttribute(cell, { 'height': height + 'px' });
|
|
7235
7238
|
});
|
|
@@ -9078,6 +9081,7 @@ class QuickPopups {
|
|
|
9078
9081
|
}
|
|
9079
9082
|
else {
|
|
9080
9083
|
const isSameTarget = this.isSameEventClick(events);
|
|
9084
|
+
this.parent.selectedElements = [];
|
|
9081
9085
|
if (isSameTarget) {
|
|
9082
9086
|
return;
|
|
9083
9087
|
}
|
|
@@ -9143,7 +9147,7 @@ class QuickPopups {
|
|
|
9143
9147
|
`<button class="${DELETE_CLASS + ' ' + ICON}" title="${this.l10n.getConstant('delete')}"></button>` +
|
|
9144
9148
|
`<button class="${CLOSE_CLASS}" title="${this.l10n.getConstant('close')}"></button></div>` +
|
|
9145
9149
|
`<div class="${SUBJECT_WRAP}"><div class="${SUBJECT_CLASS} ${TEXT_ELLIPSIS}" ` +
|
|
9146
|
-
`title="${args.eventSubject}">${args.eventSubject}</div></div >`;
|
|
9150
|
+
`title="${args.eventSubject ? args.eventSubject.replaceAll('"', '\'') : args.eventSubject}">${args.eventSubject}</div></div >`;
|
|
9147
9151
|
break;
|
|
9148
9152
|
}
|
|
9149
9153
|
const templateWrapper = createElement('div', { innerHTML: header });
|
|
@@ -9325,11 +9329,11 @@ class QuickPopups {
|
|
|
9325
9329
|
(endDate.getTime() - startDate.getTime()) / (60 * 60 * 1000) < 24 ? 1 : 0;
|
|
9326
9330
|
if (eventData[fields.isAllDay]) {
|
|
9327
9331
|
details = startDateDetails + ' (' + this.l10n.getConstant('allDay') + ')';
|
|
9328
|
-
if (((endDate
|
|
9332
|
+
if (((getUniversalTime(endDate) - getUniversalTime(startDate)) / MS_PER_DAY) > 1) {
|
|
9329
9333
|
details += ' - ' + endDateDetails + ' (' + this.l10n.getConstant('allDay') + ')';
|
|
9330
9334
|
}
|
|
9331
9335
|
}
|
|
9332
|
-
else if ((((endDate
|
|
9336
|
+
else if ((((getUniversalTime(endDate) - getUniversalTime(startDate)) / MS_PER_DAY) >= 1) || spanLength > 0) {
|
|
9333
9337
|
details = startDateDetails + ' (' + startTimeDetail + ')' + ' - ' + endDateDetails + ' (' + endTimeDetail + ')';
|
|
9334
9338
|
}
|
|
9335
9339
|
else {
|
|
@@ -16557,8 +16561,12 @@ let Schedule = class Schedule extends Component {
|
|
|
16557
16561
|
this.refreshEvents(false);
|
|
16558
16562
|
}
|
|
16559
16563
|
break;
|
|
16560
|
-
case 'showWeekend':
|
|
16561
16564
|
case 'workDays':
|
|
16565
|
+
if (JSON.stringify(oldProp.workDays) !== JSON.stringify(newProp.workDays)) {
|
|
16566
|
+
state.isLayout = true;
|
|
16567
|
+
}
|
|
16568
|
+
break;
|
|
16569
|
+
case 'showWeekend':
|
|
16562
16570
|
case 'startHour':
|
|
16563
16571
|
case 'endHour':
|
|
16564
16572
|
case 'workHours':
|
|
@@ -18288,6 +18296,7 @@ class ActionBase {
|
|
|
18288
18296
|
}
|
|
18289
18297
|
}
|
|
18290
18298
|
updateScrollPosition(e) {
|
|
18299
|
+
this.scrollEventArgs = e;
|
|
18291
18300
|
if (this.actionObj.scroll.enable && isNullOrUndefined(this.actionObj.scrollInterval)) {
|
|
18292
18301
|
this.actionObj.scrollInterval = window.setInterval(() => {
|
|
18293
18302
|
if (this.autoScrollValidation() && !this.actionObj.clone.classList.contains(ALLDAY_APPOINTMENT_CLASS)) {
|
|
@@ -18297,10 +18306,10 @@ class ActionBase {
|
|
|
18297
18306
|
}
|
|
18298
18307
|
this.autoScroll();
|
|
18299
18308
|
if (this.actionObj.action === 'drag') {
|
|
18300
|
-
this.parent.dragAndDropModule.updateDraggingDateTime(
|
|
18309
|
+
this.parent.dragAndDropModule.updateDraggingDateTime(this.scrollEventArgs);
|
|
18301
18310
|
}
|
|
18302
18311
|
else {
|
|
18303
|
-
this.parent.resizeModule.updateResizingDirection(
|
|
18312
|
+
this.parent.resizeModule.updateResizingDirection(this.scrollEventArgs);
|
|
18304
18313
|
}
|
|
18305
18314
|
}
|
|
18306
18315
|
}, this.actionObj.scroll.timeDelay);
|
|
@@ -20017,7 +20026,7 @@ class DragAndDrop extends ActionBase {
|
|
|
20017
20026
|
const eventObj = extend({}, this.actionObj.event, null, true);
|
|
20018
20027
|
const eventStart = eventObj[this.parent.eventFields.startTime];
|
|
20019
20028
|
const eventEnd = eventObj[this.parent.eventFields.endTime];
|
|
20020
|
-
const eventDuration = eventEnd
|
|
20029
|
+
const eventDuration = getUniversalTime(eventEnd) - getUniversalTime(eventStart);
|
|
20021
20030
|
let offsetTop = Math.floor(parseInt(this.actionObj.clone.style.top, 10) / this.actionObj.cellHeight)
|
|
20022
20031
|
* this.actionObj.cellHeight;
|
|
20023
20032
|
offsetTop = offsetTop < 0 ? 0 : offsetTop;
|
|
@@ -20372,8 +20381,8 @@ class DragAndDrop extends ActionBase {
|
|
|
20372
20381
|
if (isNullOrUndefined(this.parent.eventDragArea)) {
|
|
20373
20382
|
this.removeCloneElement();
|
|
20374
20383
|
}
|
|
20375
|
-
const eventDuration = eventObj[this.parent.eventFields.endTime]
|
|
20376
|
-
eventObj[this.parent.eventFields.startTime]
|
|
20384
|
+
const eventDuration = getUniversalTime(eventObj[this.parent.eventFields.endTime]) -
|
|
20385
|
+
getUniversalTime(eventObj[this.parent.eventFields.startTime]);
|
|
20377
20386
|
let td = closest(this.actionObj.target, 'td');
|
|
20378
20387
|
if (!isNullOrUndefined(td)) {
|
|
20379
20388
|
const tr = td.parentElement;
|
|
@@ -20386,12 +20395,12 @@ class DragAndDrop extends ActionBase {
|
|
|
20386
20395
|
this.actionObj.groupIndex = parseInt(td.getAttribute('data-group-index'), 10);
|
|
20387
20396
|
}
|
|
20388
20397
|
const timeString = new Date(currentDate.setDate(currentDate.getDate() - this.daysVariation));
|
|
20389
|
-
|
|
20390
|
-
|
|
20391
|
-
|
|
20392
|
-
|
|
20393
|
-
|
|
20394
|
-
dragEnd
|
|
20398
|
+
const dragStart$$1 = new Date(timeString.getTime());
|
|
20399
|
+
const startTimeDiff = getUniversalTime(eventObj[this.parent.eventFields.startTime]) -
|
|
20400
|
+
getUniversalTime(resetTime(new Date(+eventObj[this.parent.eventFields.startTime])));
|
|
20401
|
+
dragStart$$1.setMilliseconds(startTimeDiff);
|
|
20402
|
+
const dragEnd = new Date(dragStart$$1.getTime());
|
|
20403
|
+
dragEnd.setMilliseconds(eventDuration);
|
|
20395
20404
|
this.actionObj.start = new Date(dragStart$$1.getTime());
|
|
20396
20405
|
this.actionObj.end = new Date(dragEnd.getTime());
|
|
20397
20406
|
}
|
|
@@ -20446,8 +20455,8 @@ class DragAndDrop extends ActionBase {
|
|
|
20446
20455
|
}
|
|
20447
20456
|
calculateTimelineTime(e) {
|
|
20448
20457
|
const eventObj = extend({}, this.actionObj.event, null, true);
|
|
20449
|
-
const eventDuration = eventObj[this.parent.eventFields.endTime]
|
|
20450
|
-
eventObj[this.parent.eventFields.startTime]
|
|
20458
|
+
const eventDuration = getUniversalTime(eventObj[this.parent.eventFields.endTime]) -
|
|
20459
|
+
getUniversalTime(eventObj[this.parent.eventFields.startTime]);
|
|
20451
20460
|
let offsetLeft = this.parent.enableRtl ? Math.abs(this.actionObj.clone.offsetLeft) - this.actionObj.clone.offsetWidth :
|
|
20452
20461
|
parseInt(this.actionObj.clone.style.left, 10);
|
|
20453
20462
|
offsetLeft = Math.floor(offsetLeft / this.actionObj.cellWidth) * this.actionObj.cellWidth;
|
|
@@ -20680,7 +20689,7 @@ class DragAndDrop extends ActionBase {
|
|
|
20680
20689
|
const cursorElement = this.getCursorElement(e);
|
|
20681
20690
|
if (cursorElement) {
|
|
20682
20691
|
top = cursorElement.classList.contains(WORK_CELLS_CLASS) ? cursorElement.offsetTop :
|
|
20683
|
-
cursorElement.offsetParent.classList.contains(APPOINTMENT_CLASS) ?
|
|
20692
|
+
(cursorElement.offsetParent && cursorElement.offsetParent.classList.contains(APPOINTMENT_CLASS)) ?
|
|
20684
20693
|
cursorElement.offsetParent.offsetTop : top;
|
|
20685
20694
|
}
|
|
20686
20695
|
}
|
|
@@ -21219,6 +21228,14 @@ class ViewBase {
|
|
|
21219
21228
|
const tdDate = new Date(resetTime(new Date(+scrollDate)).getTime()).getTime();
|
|
21220
21229
|
const dateElement = scrollWrap.querySelector(`.${WORK_CELLS_CLASS}[data-date="${tdDate}"]`);
|
|
21221
21230
|
if (this.parent.currentView === 'Month' && dateElement) {
|
|
21231
|
+
if (scrollWrap.scrollWidth > scrollWrap.clientWidth) {
|
|
21232
|
+
if (!this.parent.enableRtl) {
|
|
21233
|
+
scrollWrap.scrollLeft = dateElement.offsetLeft;
|
|
21234
|
+
}
|
|
21235
|
+
else {
|
|
21236
|
+
scrollWrap.scrollLeft = -(this.parent.getContentTable().offsetWidth - dateElement.offsetLeft - dateElement.offsetWidth);
|
|
21237
|
+
}
|
|
21238
|
+
}
|
|
21222
21239
|
scrollWrap.scrollTop = dateElement.offsetTop;
|
|
21223
21240
|
}
|
|
21224
21241
|
if (this.parent.currentView === 'TimelineMonth' && dateElement) {
|
|
@@ -21407,11 +21424,26 @@ class VerticalView extends ViewBase {
|
|
|
21407
21424
|
}
|
|
21408
21425
|
scrollToHour(hour, scrollDate) {
|
|
21409
21426
|
const date = this.parent.getStartEndTime(hour);
|
|
21410
|
-
if (
|
|
21427
|
+
if (!isNullOrUndefined(scrollDate)) {
|
|
21428
|
+
const headerElement = this.element.querySelector('.' + HEADER_CELLS_CLASS + '[data-date="' + new Date(resetTime(scrollDate)).getTime() + '"]');
|
|
21429
|
+
if (headerElement) {
|
|
21430
|
+
if (this.parent.enableRtl) {
|
|
21431
|
+
const conWrap = this.element.querySelector('.' + CONTENT_TABLE_CLASS);
|
|
21432
|
+
this.getScrollableElement().scrollLeft = -(conWrap.offsetWidth - headerElement.offsetLeft - headerElement.offsetWidth);
|
|
21433
|
+
}
|
|
21434
|
+
else {
|
|
21435
|
+
this.getScrollableElement().scrollLeft = headerElement.offsetLeft;
|
|
21436
|
+
}
|
|
21437
|
+
}
|
|
21438
|
+
}
|
|
21439
|
+
if (isNullOrUndefined(date)) {
|
|
21411
21440
|
return;
|
|
21412
21441
|
}
|
|
21413
21442
|
this.getScrollableElement().scrollTop = this.getTopFromDateTime(date);
|
|
21414
21443
|
}
|
|
21444
|
+
scrollToDate(scrollDate) {
|
|
21445
|
+
this.scrollToHour(null, scrollDate);
|
|
21446
|
+
}
|
|
21415
21447
|
generateColumnLevels() {
|
|
21416
21448
|
const level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);
|
|
21417
21449
|
let columnLevels = [];
|
|
@@ -23139,6 +23171,9 @@ class AgendaBase extends ViewBase {
|
|
|
23139
23171
|
itemClass: this.parent.activeView.viewClass,
|
|
23140
23172
|
template: `<div class="${AGENDA_NO_EVENT_CLASS}">${this.parent.localeObj.getConstant('noEvents')}</div>`
|
|
23141
23173
|
});
|
|
23174
|
+
if (listElement.querySelector('.e-agenda-item').children.length === 0) {
|
|
23175
|
+
listElement.firstElementChild.appendChild(createElement('div', { className: AGENDA_NO_EVENT_CLASS, innerHTML: this.parent.localeObj.getConstant('noEvents') }));
|
|
23176
|
+
}
|
|
23142
23177
|
}
|
|
23143
23178
|
else {
|
|
23144
23179
|
listElement = ListBase.createList(this.parent.createElement, listData, {
|