@syncfusion/ej2-schedule 19.3.46 → 19.4.38
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/.github/PULL_REQUEST_TEMPLATE/Bug.md +63 -0
- package/.github/PULL_REQUEST_TEMPLATE/Feature.md +39 -0
- package/CHANGELOG.md +49 -5
- 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 +479 -133
- package/dist/es6/ej2-schedule.es2015.js.map +1 -1
- package/dist/es6/ej2-schedule.es5.js +480 -137
- 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 +15 -15
- package/src/recurrence-editor/date-generator.js +3 -3
- package/src/recurrence-editor/recurrence-editor.js +2 -2
- package/src/schedule/actions/crud.js +2 -0
- package/src/schedule/actions/drag.js +28 -18
- package/src/schedule/actions/keyboard.d.ts +7 -0
- package/src/schedule/actions/keyboard.js +197 -28
- package/src/schedule/base/interface.d.ts +19 -0
- package/src/schedule/base/resource.js +1 -0
- package/src/schedule/base/schedule-model.d.ts +97 -20
- package/src/schedule/base/schedule.d.ts +97 -21
- package/src/schedule/base/schedule.js +27 -5
- package/src/schedule/base/type.d.ts +4 -0
- package/src/schedule/base/util.d.ts +1 -0
- package/src/schedule/base/util.js +1 -0
- package/src/schedule/event-renderer/event-base.d.ts +2 -0
- package/src/schedule/event-renderer/event-base.js +29 -9
- package/src/schedule/event-renderer/inline-edit.js +8 -5
- package/src/schedule/event-renderer/month.js +2 -2
- package/src/schedule/event-renderer/timeline-view.js +4 -0
- package/src/schedule/event-renderer/vertical-view.js +9 -6
- package/src/schedule/event-renderer/year.js +1 -1
- package/src/schedule/exports/excel-export.d.ts +2 -1
- package/src/schedule/exports/excel-export.js +21 -18
- package/src/schedule/models/event-settings-model.d.ts +20 -1
- package/src/schedule/models/event-settings.d.ts +18 -0
- package/src/schedule/models/event-settings.js +6 -0
- package/src/schedule/models/views-model.d.ts +19 -0
- package/src/schedule/models/views.d.ts +17 -0
- package/src/schedule/models/views.js +6 -0
- package/src/schedule/popups/event-window.d.ts +0 -1
- package/src/schedule/popups/event-window.js +4 -5
- package/src/schedule/popups/form-validator.js +4 -1
- package/src/schedule/popups/quick-popups.js +3 -0
- package/src/schedule/renderer/agenda.js +3 -1
- package/src/schedule/renderer/header-renderer.d.ts +1 -0
- package/src/schedule/renderer/header-renderer.js +22 -8
- package/src/schedule/renderer/month.d.ts +4 -0
- package/src/schedule/renderer/month.js +68 -19
- package/src/schedule/renderer/timeline-year.js +3 -0
- package/src/schedule/renderer/view-base.js +9 -0
- package/src/schedule/renderer/year.d.ts +2 -2
- package/src/schedule/renderer/year.js +24 -6
- package/src/schedule/timezone/timezone.d.ts +3 -2
- package/src/schedule/timezone/timezone.js +0 -1
- package/styles/bootstrap-dark.css +108 -27
- package/styles/bootstrap.css +105 -27
- package/styles/bootstrap4.css +117 -62
- package/styles/bootstrap5-dark.css +118 -67
- package/styles/bootstrap5.css +118 -67
- package/styles/fabric-dark.css +108 -26
- package/styles/fabric.css +109 -26
- package/styles/highcontrast-light.css +104 -26
- package/styles/highcontrast.css +109 -28
- package/styles/material-dark.css +110 -32
- package/styles/material.css +103 -25
- package/styles/recurrence-editor/_bootstrap-dark-definition.scss +7 -0
- package/styles/recurrence-editor/_bootstrap-definition.scss +7 -0
- package/styles/recurrence-editor/_bootstrap4-definition.scss +7 -0
- package/styles/recurrence-editor/_bootstrap5-definition.scss +7 -0
- package/styles/recurrence-editor/_fabric-dark-definition.scss +8 -0
- package/styles/recurrence-editor/_fabric-definition.scss +7 -0
- package/styles/recurrence-editor/_fluent-definition.scss +15 -0
- package/styles/recurrence-editor/_highcontrast-definition.scss +7 -0
- package/styles/recurrence-editor/_highcontrast-light-definition.scss +7 -0
- package/styles/recurrence-editor/_layout.scss +20 -4
- package/styles/recurrence-editor/_material-dark-definition.scss +7 -0
- package/styles/recurrence-editor/_material-definition.scss +7 -0
- package/styles/recurrence-editor/_tailwind-definition.scss +15 -8
- package/styles/recurrence-editor/bootstrap-dark.css +20 -4
- package/styles/recurrence-editor/bootstrap.css +20 -4
- package/styles/recurrence-editor/bootstrap4.css +20 -4
- package/styles/recurrence-editor/bootstrap5-dark.css +20 -4
- package/styles/recurrence-editor/bootstrap5.css +20 -4
- package/styles/recurrence-editor/fabric-dark.css +20 -4
- package/styles/recurrence-editor/fabric.css +20 -4
- package/styles/recurrence-editor/highcontrast-light.css +20 -4
- package/styles/recurrence-editor/highcontrast.css +20 -4
- package/styles/recurrence-editor/material-dark.css +20 -4
- package/styles/recurrence-editor/material.css +20 -4
- package/styles/recurrence-editor/tailwind-dark.css +20 -4
- package/styles/recurrence-editor/tailwind.css +20 -4
- package/styles/schedule/_bootstrap-dark-definition.scss +22 -1
- package/styles/schedule/_bootstrap-definition.scss +22 -1
- package/styles/schedule/_bootstrap4-definition.scss +23 -1
- package/styles/schedule/_bootstrap5-definition.scss +145 -119
- package/styles/schedule/_fabric-dark-definition.scss +22 -1
- package/styles/schedule/_fabric-definition.scss +22 -1
- package/styles/schedule/_fluent-definition.scss +218 -0
- package/styles/schedule/_highcontrast-definition.scss +22 -1
- package/styles/schedule/_highcontrast-light-definition.scss +22 -1
- package/styles/schedule/_layout.scss +95 -158
- package/styles/schedule/_material-dark-definition.scss +22 -1
- package/styles/schedule/_material-definition.scss +21 -0
- package/styles/schedule/_tailwind-definition.scss +216 -195
- package/styles/schedule/_theme.scss +1 -1
- package/styles/schedule/bootstrap-dark.css +88 -23
- package/styles/schedule/bootstrap.css +85 -23
- package/styles/schedule/bootstrap4.css +97 -58
- package/styles/schedule/bootstrap5-dark.css +98 -63
- package/styles/schedule/bootstrap5.css +98 -63
- package/styles/schedule/fabric-dark.css +88 -22
- package/styles/schedule/fabric.css +89 -22
- package/styles/schedule/highcontrast-light.css +84 -22
- package/styles/schedule/highcontrast.css +89 -24
- package/styles/schedule/icons/_fluent.scss +231 -0
- package/styles/schedule/icons/_tailwind.scss +231 -231
- package/styles/schedule/material-dark.css +90 -28
- package/styles/schedule/material.css +83 -21
- package/styles/schedule/tailwind-dark.css +94 -52
- package/styles/schedule/tailwind.css +94 -52
- package/styles/tailwind-dark.css +114 -56
- package/styles/tailwind.css +114 -56
|
@@ -91,6 +91,7 @@ const cellMouseDown = 'cell-mouse-down';
|
|
|
91
91
|
* Schedule common utilities
|
|
92
92
|
*/
|
|
93
93
|
const WEEK_LENGTH = 7;
|
|
94
|
+
const DEFAULT_WEEKS = 6;
|
|
94
95
|
const MS_PER_DAY = 86400000;
|
|
95
96
|
const MS_PER_MINUTE = 60000;
|
|
96
97
|
/**
|
|
@@ -1243,8 +1244,10 @@ class HeaderRenderer {
|
|
|
1243
1244
|
enableRtl: this.parent.enableRtl
|
|
1244
1245
|
});
|
|
1245
1246
|
const calendarView = this.getCalendarView();
|
|
1247
|
+
const isDisplayDate = this.parent.currentView === 'Month' &&
|
|
1248
|
+
!isNullOrUndefined(this.parent.activeViewOptions.displayDate) && !this.hasSelectedDate();
|
|
1246
1249
|
this.headerCalendar = new Calendar({
|
|
1247
|
-
value: this.parent.selectedDate,
|
|
1250
|
+
value: isDisplayDate ? this.parent.activeViewOptions.displayDate : this.parent.selectedDate,
|
|
1248
1251
|
min: this.parent.minDate,
|
|
1249
1252
|
max: this.parent.maxDate,
|
|
1250
1253
|
firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,
|
|
@@ -1332,8 +1335,13 @@ class HeaderRenderer {
|
|
|
1332
1335
|
this.parent.changeView('TimelineYear', args.originalEvent, undefined, this.calculateViewIndex(args));
|
|
1333
1336
|
break;
|
|
1334
1337
|
case 'e-today':
|
|
1335
|
-
|
|
1336
|
-
|
|
1338
|
+
const currentTime = resetTime(this.parent.getCurrentTime());
|
|
1339
|
+
if (this.parent.currentView === 'Agenda' || !this.parent.isSelectedDate(currentTime) ||
|
|
1340
|
+
this.parent.currentView === 'Month' && this.parent.activeViewOptions.displayDate && !this.hasSelectedDate() &&
|
|
1341
|
+
resetTime(this.parent.activeViewOptions.displayDate) !== currentTime || this.parent.currentView === 'Month' &&
|
|
1342
|
+
this.parent.activeViewOptions.numberOfWeeks > 0 && !this.hasSelectedDate()
|
|
1343
|
+
&& resetTime(firstDateOfMonth(this.parent.selectedDate)) !== currentTime) {
|
|
1344
|
+
this.parent.changeDate(currentTime, args.originalEvent);
|
|
1337
1345
|
}
|
|
1338
1346
|
break;
|
|
1339
1347
|
case 'e-prev':
|
|
@@ -1368,6 +1376,11 @@ class HeaderRenderer {
|
|
|
1368
1376
|
toolbarPopUp.ej2_instances[0].hide({ name: 'SlideUp', duration: 100 });
|
|
1369
1377
|
}
|
|
1370
1378
|
}
|
|
1379
|
+
hasSelectedDate() {
|
|
1380
|
+
const selectedTime = resetTime(this.parent.selectedDate).getTime();
|
|
1381
|
+
return selectedTime >= this.parent.activeView.getStartDate().getTime() &&
|
|
1382
|
+
selectedTime <= this.parent.activeView.getEndDate().getTime();
|
|
1383
|
+
}
|
|
1371
1384
|
getHeaderElement() {
|
|
1372
1385
|
return this.toolbarObj.element;
|
|
1373
1386
|
}
|
|
@@ -1412,9 +1425,11 @@ class HeaderRenderer {
|
|
|
1412
1425
|
lastDate = addDays(firstDate, 7 * this.parent.activeViewOptions.interval);
|
|
1413
1426
|
}
|
|
1414
1427
|
if (this.parent.currentView === 'Month') {
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1428
|
+
const isCustomMonth = !isNullOrUndefined(this.parent.activeViewOptions.displayDate) ||
|
|
1429
|
+
this.parent.activeViewOptions.numberOfWeeks > 0;
|
|
1430
|
+
firstDate = isCustomMonth ? this.parent.activeView.getStartDate() : firstDateOfMonth(this.parent.selectedDate);
|
|
1431
|
+
lastDate = isCustomMonth ? this.parent.activeView.getEndDate() :
|
|
1432
|
+
lastDateOfMonth(addMonths(firstDate, this.parent.activeViewOptions.interval - 1));
|
|
1418
1433
|
}
|
|
1419
1434
|
if (!isNullOrUndefined(prevNavEle)) {
|
|
1420
1435
|
this.toolbarObj.enableItems(prevNavEle, firstDate > this.parent.minDate);
|
|
@@ -1945,6 +1960,9 @@ class KeyboardInteraction {
|
|
|
1945
1960
|
}
|
|
1946
1961
|
const queryStr = '.' + WORK_CELLS_CLASS + ',.' + ALLDAY_CELLS_CLASS + ',.' + HEADER_CELLS_CLASS;
|
|
1947
1962
|
const target = closest(e.target, queryStr);
|
|
1963
|
+
if (this.parent.currentView === 'TimelineYear' && target.classList.contains(OTHERMONTH_CLASS)) {
|
|
1964
|
+
return;
|
|
1965
|
+
}
|
|
1948
1966
|
this.parent.activeCellsData = this.getSelectedElements(target);
|
|
1949
1967
|
const cellData = {};
|
|
1950
1968
|
if (this.parent.eventWindow) {
|
|
@@ -1968,6 +1986,9 @@ class KeyboardInteraction {
|
|
|
1968
1986
|
|| this.isPreventAction(e)) {
|
|
1969
1987
|
return;
|
|
1970
1988
|
}
|
|
1989
|
+
if (this.parent.currentView === 'TimelineYear' && e.target.classList.contains(OTHERMONTH_CLASS)) {
|
|
1990
|
+
return;
|
|
1991
|
+
}
|
|
1971
1992
|
const target = e.target;
|
|
1972
1993
|
if (closest(target, '.' + POPUP_WRAPPER_CLASS)) {
|
|
1973
1994
|
if (target.classList.contains(QUICK_POPUP_EVENT_DETAILS_CLASS) ||
|
|
@@ -2002,11 +2023,16 @@ class KeyboardInteraction {
|
|
|
2002
2023
|
this.parent.notify(inlineClick, inlineArgs);
|
|
2003
2024
|
}
|
|
2004
2025
|
else {
|
|
2005
|
-
this.parent.
|
|
2026
|
+
if (this.parent.currentView === 'Year') {
|
|
2027
|
+
target.click();
|
|
2028
|
+
}
|
|
2029
|
+
else {
|
|
2030
|
+
this.parent.notify(cellClick, args);
|
|
2031
|
+
}
|
|
2006
2032
|
}
|
|
2007
2033
|
return;
|
|
2008
2034
|
}
|
|
2009
|
-
if (target.classList.contains(INLINE_SUBJECT_CLASS)) {
|
|
2035
|
+
if (target.classList.contains(INLINE_SUBJECT_CLASS) && this.parent.inlineModule) {
|
|
2010
2036
|
this.parent.inlineModule.inlineCrudActions(target);
|
|
2011
2037
|
return;
|
|
2012
2038
|
}
|
|
@@ -2038,7 +2064,9 @@ class KeyboardInteraction {
|
|
|
2038
2064
|
}
|
|
2039
2065
|
getCells(isInverseTable, start, end) {
|
|
2040
2066
|
const tableEle = this.parent.getContentTable();
|
|
2041
|
-
|
|
2067
|
+
const isTimelineYear = this.parent.currentView === 'TimelineYear';
|
|
2068
|
+
const query = isTimelineYear && !isInverseTable ? '.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')' : 'td';
|
|
2069
|
+
let cells = [].slice.call(tableEle.querySelectorAll(query));
|
|
2042
2070
|
let maxRow = tableEle.rows.length;
|
|
2043
2071
|
let maxColumn = tableEle.rows[0].cells.length;
|
|
2044
2072
|
if (start && start.classList.contains(ALLDAY_CELLS_CLASS)) {
|
|
@@ -2053,7 +2081,11 @@ class KeyboardInteraction {
|
|
|
2053
2081
|
if (isInverseTable) {
|
|
2054
2082
|
for (let i = 0; i < maxColumn; i++) {
|
|
2055
2083
|
for (let j = 0; j < maxRow; j++) {
|
|
2056
|
-
|
|
2084
|
+
const cell = cells[maxColumn * j + i];
|
|
2085
|
+
if (isTimelineYear && cell.classList.contains(OTHERMONTH_CLASS)) {
|
|
2086
|
+
continue;
|
|
2087
|
+
}
|
|
2088
|
+
inverseCells.push(cell);
|
|
2057
2089
|
}
|
|
2058
2090
|
}
|
|
2059
2091
|
startIndex = inverseCells.indexOf(start);
|
|
@@ -2075,11 +2107,17 @@ class KeyboardInteraction {
|
|
|
2075
2107
|
return;
|
|
2076
2108
|
}
|
|
2077
2109
|
this.parent.eventBase.removeSelectedAppointmentClass();
|
|
2078
|
-
if (this.parent.activeView.isTimelineView()) {
|
|
2110
|
+
if (this.parent.activeView.isTimelineView() && this.parent.currentView !== 'TimelineYear') {
|
|
2079
2111
|
const cell = this.parent.element.querySelector('.' + CONTENT_TABLE_CLASS +
|
|
2080
2112
|
' tr:not(.' + HIDDEN_CLASS + ') .' + WORK_CELLS_CLASS + ':not(.' + RESOURCE_GROUP_CELLS_CLASS + ')');
|
|
2081
2113
|
this.selectCells(false, cell);
|
|
2082
2114
|
}
|
|
2115
|
+
else if (this.parent.currentView.indexOf('Year') > -1) {
|
|
2116
|
+
let query = '.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')' + ':not(.' + RESOURCE_GROUP_CELLS_CLASS + ')';
|
|
2117
|
+
const isVerticalYear = this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.orientation === 'Vertical';
|
|
2118
|
+
query += isVerticalYear ? '[data-date="' + this.parent.activeView.startDate().getTime() + '"]' : '';
|
|
2119
|
+
this.selectCells(false, this.parent.element.querySelector(query));
|
|
2120
|
+
}
|
|
2083
2121
|
else {
|
|
2084
2122
|
this.selectCells(false, this.parent.getWorkCellElements()[0]);
|
|
2085
2123
|
}
|
|
@@ -2100,13 +2138,21 @@ class KeyboardInteraction {
|
|
|
2100
2138
|
let target = (targetCell instanceof Array) ? targetCell.slice(-1)[0] : targetCell;
|
|
2101
2139
|
if (isMultiple) {
|
|
2102
2140
|
let initialId;
|
|
2103
|
-
const views = ['Day', 'Week', 'WorkWeek', '
|
|
2141
|
+
const views = ['Day', 'Week', 'WorkWeek', 'TimelineDay', 'TimelineWeek', 'TimelineWorkWeek', 'TimelineMonth', 'TimelineYear'];
|
|
2104
2142
|
const args = { element: targetCell, requestType: 'mousemove', allowMultipleRow: true };
|
|
2105
2143
|
this.parent.inlineModule.removeInlineAppointmentElement();
|
|
2106
2144
|
this.parent.trigger(select, args, (selectArgs) => {
|
|
2107
2145
|
const allowMultipleRow = (!selectArgs.allowMultipleRow) || (!this.parent.allowMultiRowSelection);
|
|
2108
|
-
if (allowMultipleRow
|
|
2109
|
-
|
|
2146
|
+
if (allowMultipleRow) {
|
|
2147
|
+
const isTimelineYear = this.parent.currentView === 'TimelineYear';
|
|
2148
|
+
if (isTimelineYear && this.parent.activeViewOptions.orientation === 'Horizontal' || this.parent.currentView === 'Month') {
|
|
2149
|
+
const isGroupYear = isTimelineYear && this.parent.activeViewOptions.group.resources.length > 0;
|
|
2150
|
+
target = isGroupYear ? this.initialTarget :
|
|
2151
|
+
this.initialTarget.parentElement.children[target.cellIndex];
|
|
2152
|
+
}
|
|
2153
|
+
else if (views.indexOf(this.parent.currentView) > -1) {
|
|
2154
|
+
target = target.parentElement.children[this.initialTarget.cellIndex];
|
|
2155
|
+
}
|
|
2110
2156
|
}
|
|
2111
2157
|
let selectedCells = this.getCells(this.isInverseTableSelect(), this.initialTarget, target);
|
|
2112
2158
|
if (this.parent.activeViewOptions.group.resources.length > 0) {
|
|
@@ -2239,8 +2285,20 @@ class KeyboardInteraction {
|
|
|
2239
2285
|
}
|
|
2240
2286
|
}
|
|
2241
2287
|
}
|
|
2288
|
+
cancelUpDownAction(isTimelineYear) {
|
|
2289
|
+
const isVerticalYear = isTimelineYear && this.parent.activeViewOptions.orientation === 'Vertical';
|
|
2290
|
+
const isGroup = this.parent.activeViewOptions.group.resources.length > 0;
|
|
2291
|
+
if (isVerticalYear && isGroup || isTimelineYear && this.initialTarget.classList.contains(OTHERMONTH_CLASS)) {
|
|
2292
|
+
return true;
|
|
2293
|
+
}
|
|
2294
|
+
if (this.parent.activeView.isTimelineView() && !isTimelineYear || this.parent.currentView === 'MonthAgenda') {
|
|
2295
|
+
return true;
|
|
2296
|
+
}
|
|
2297
|
+
return false;
|
|
2298
|
+
}
|
|
2242
2299
|
processUp(e, isMultiple) {
|
|
2243
|
-
|
|
2300
|
+
const isTimelineYear = this.parent.currentView === 'TimelineYear';
|
|
2301
|
+
if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {
|
|
2244
2302
|
return;
|
|
2245
2303
|
}
|
|
2246
2304
|
let target = (e.target);
|
|
@@ -2263,8 +2321,22 @@ class KeyboardInteraction {
|
|
|
2263
2321
|
if (target.classList.contains(WORK_CELLS_CLASS) && !this.parent.element.querySelector('.' + POPUP_OPEN)) {
|
|
2264
2322
|
const tableRows = this.parent.getTableRows();
|
|
2265
2323
|
const curRowIndex = tableRows.indexOf(target.parentElement);
|
|
2266
|
-
|
|
2267
|
-
|
|
2324
|
+
let targetCell;
|
|
2325
|
+
if (isTimelineYear && isMultiple && this.parent.activeViewOptions.group.resources.length === 0) {
|
|
2326
|
+
targetCell = this.isInverseTableSelect() ? this.getVerticalUpDownCell(tableRows, target, curRowIndex, true) :
|
|
2327
|
+
this.getHorizontalUpDownCell(tableRows, target, curRowIndex, true);
|
|
2328
|
+
}
|
|
2329
|
+
if ((curRowIndex > 0 || targetCell) && curRowIndex < tableRows.length) {
|
|
2330
|
+
targetCell = targetCell ? targetCell : (tableRows[curRowIndex - 1]).cells[target.cellIndex];
|
|
2331
|
+
if (this.parent.currentView === 'Year' && targetCell.classList.contains(OTHERMONTH_CLASS)) {
|
|
2332
|
+
if (this.parent.activeView.getStartDate().getTime() < +targetCell.getAttribute('data-date')) {
|
|
2333
|
+
targetCell = this.getYearUpDownCell(tableRows, curRowIndex - 1, target.cellIndex, true);
|
|
2334
|
+
}
|
|
2335
|
+
else {
|
|
2336
|
+
return;
|
|
2337
|
+
}
|
|
2338
|
+
}
|
|
2339
|
+
this.selectCells(isMultiple, targetCell);
|
|
2268
2340
|
}
|
|
2269
2341
|
}
|
|
2270
2342
|
else if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {
|
|
@@ -2272,7 +2344,8 @@ class KeyboardInteraction {
|
|
|
2272
2344
|
}
|
|
2273
2345
|
}
|
|
2274
2346
|
processDown(e, isMultiple) {
|
|
2275
|
-
|
|
2347
|
+
const isTimelineYear = this.parent.currentView === 'TimelineYear';
|
|
2348
|
+
if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {
|
|
2276
2349
|
return;
|
|
2277
2350
|
}
|
|
2278
2351
|
let target = (e.target);
|
|
@@ -2295,16 +2368,62 @@ class KeyboardInteraction {
|
|
|
2295
2368
|
}
|
|
2296
2369
|
if (target.classList.contains(WORK_CELLS_CLASS) && !this.parent.element.querySelector('.' + POPUP_OPEN)) {
|
|
2297
2370
|
const curRowIndex = tableRows.indexOf(target.parentElement);
|
|
2298
|
-
|
|
2299
|
-
|
|
2371
|
+
let targetCell;
|
|
2372
|
+
if (isTimelineYear && isMultiple && this.parent.activeViewOptions.group.resources.length === 0) {
|
|
2373
|
+
targetCell = this.isInverseTableSelect() ? this.getVerticalUpDownCell(tableRows, target, curRowIndex, false)
|
|
2374
|
+
: this.getHorizontalUpDownCell(tableRows, target, curRowIndex, false);
|
|
2375
|
+
}
|
|
2376
|
+
if (curRowIndex >= 0 && ((curRowIndex < tableRows.length - 1) || targetCell)) {
|
|
2377
|
+
targetCell = targetCell ? targetCell : (tableRows[curRowIndex + 1]).cells[target.cellIndex];
|
|
2378
|
+
if (this.parent.currentView === 'Year' && targetCell.classList.contains(OTHERMONTH_CLASS)) {
|
|
2379
|
+
if (this.parent.activeView.getEndDate().getTime() > +targetCell.getAttribute('data-date')) {
|
|
2380
|
+
targetCell = this.getYearUpDownCell(tableRows, curRowIndex + 1, target.cellIndex, false);
|
|
2381
|
+
}
|
|
2382
|
+
else {
|
|
2383
|
+
return;
|
|
2384
|
+
}
|
|
2385
|
+
}
|
|
2386
|
+
this.selectCells(isMultiple, targetCell);
|
|
2300
2387
|
}
|
|
2301
2388
|
}
|
|
2302
2389
|
else if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {
|
|
2303
2390
|
this.selectAppointment(false, target);
|
|
2304
2391
|
}
|
|
2305
2392
|
}
|
|
2393
|
+
getYearUpDownCell(tableRows, rowIndex, cellIndex, isUp) {
|
|
2394
|
+
while (tableRows[rowIndex] && tableRows[rowIndex].cells[cellIndex].classList.contains(OTHERMONTH_CLASS)) {
|
|
2395
|
+
rowIndex = rowIndex + (isUp ? -1 : 1);
|
|
2396
|
+
}
|
|
2397
|
+
return tableRows[rowIndex].cells[cellIndex];
|
|
2398
|
+
}
|
|
2399
|
+
// eslint-disable-next-line max-len
|
|
2400
|
+
getHorizontalUpDownCell(tableRows, target, curRowIndex, isUp) {
|
|
2401
|
+
const row = tableRows[curRowIndex + (isUp ? -1 : 1)];
|
|
2402
|
+
let cell = row ? row.cells[target.cellIndex] : target;
|
|
2403
|
+
if (cell.classList.contains(OTHERMONTH_CLASS)) {
|
|
2404
|
+
const workCell = row.querySelector('.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')');
|
|
2405
|
+
const date = new Date(+workCell.getAttribute('data-date'));
|
|
2406
|
+
const query = '[data-date="' + new Date(date.getFullYear(), date.getMonth() + 1, 0).getTime() + '"]';
|
|
2407
|
+
cell = cell.cellIndex < workCell.cellIndex ? workCell : row.querySelector(query);
|
|
2408
|
+
}
|
|
2409
|
+
return cell;
|
|
2410
|
+
}
|
|
2411
|
+
// eslint-disable-next-line max-len
|
|
2412
|
+
getVerticalUpDownCell(tableRows, target, curRowIndex, isUp) {
|
|
2413
|
+
const hasRow = isUp && curRowIndex > 0 || !isUp && curRowIndex < tableRows.length - 1;
|
|
2414
|
+
let targetCell = hasRow ? tableRows[curRowIndex + (isUp ? -1 : 1)].cells[target.cellIndex] : undefined;
|
|
2415
|
+
if (!targetCell || targetCell.classList.contains(OTHERMONTH_CLASS)) {
|
|
2416
|
+
const column = tableRows[curRowIndex].cells[target.cellIndex - (isUp ? 1 : -1)];
|
|
2417
|
+
if (column) {
|
|
2418
|
+
const dateAttr = +target.getAttribute('data-date') - (isUp ? MS_PER_DAY : -MS_PER_DAY);
|
|
2419
|
+
return this.parent.getContentTable().querySelector('.' + WORK_CELLS_CLASS + '[data-date="' + dateAttr + '"]');
|
|
2420
|
+
}
|
|
2421
|
+
targetCell = target;
|
|
2422
|
+
}
|
|
2423
|
+
return targetCell;
|
|
2424
|
+
}
|
|
2306
2425
|
processLeftRight(target) {
|
|
2307
|
-
const tableEle = this.parent.getContentTable();
|
|
2426
|
+
const tableEle = (this.parent.currentView === 'Year' ? target.closest('tbody') : this.parent.getContentTable());
|
|
2308
2427
|
const curRowIndex = target.parentNode.sectionRowIndex;
|
|
2309
2428
|
const key = {
|
|
2310
2429
|
element: tableEle,
|
|
@@ -2317,8 +2436,9 @@ class KeyboardInteraction {
|
|
|
2317
2436
|
getQuickPopupElement() {
|
|
2318
2437
|
return (this.parent.isAdaptive ? document.body : this.parent.element).querySelector('.' + POPUP_WRAPPER_CLASS);
|
|
2319
2438
|
}
|
|
2320
|
-
isCancelLeftRightAction(e, isMultiple) {
|
|
2321
|
-
|
|
2439
|
+
isCancelLeftRightAction(e, isMultiple, isTimelineYear) {
|
|
2440
|
+
const prevent = this.parent.currentView === 'MonthAgenda' || isTimelineYear && this.initialTarget.classList.contains(OTHERMONTH_CLASS);
|
|
2441
|
+
if (this.parent.currentView === 'Agenda' || (isMultiple && prevent)) {
|
|
2322
2442
|
return true;
|
|
2323
2443
|
}
|
|
2324
2444
|
if (this.isPreventAction(e) && isMultiple) {
|
|
@@ -2332,7 +2452,8 @@ class KeyboardInteraction {
|
|
|
2332
2452
|
return false;
|
|
2333
2453
|
}
|
|
2334
2454
|
processRight(e, isMultiple) {
|
|
2335
|
-
|
|
2455
|
+
const isTimelineYear = this.parent.currentView === 'TimelineYear';
|
|
2456
|
+
if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {
|
|
2336
2457
|
return;
|
|
2337
2458
|
}
|
|
2338
2459
|
const selectedCells = this.parent.getSelectedElements();
|
|
@@ -2353,24 +2474,36 @@ class KeyboardInteraction {
|
|
|
2353
2474
|
if (target.classList.contains(WORK_CELLS_CLASS) &&
|
|
2354
2475
|
(e.target).classList.contains(WORK_CELLS_CLASS)) {
|
|
2355
2476
|
const key = this.processLeftRight(target);
|
|
2356
|
-
|
|
2477
|
+
const targetDate = new Date(+target.getAttribute('data-date'));
|
|
2478
|
+
const isMonthEnd = this.parent.currentView === 'Year' && targetDate.getTime() === lastDateOfMonth(targetDate).getTime();
|
|
2479
|
+
if (key.columnIndex >= 0 && key.columnIndex < key.maxIndex - 1 && !isMonthEnd) {
|
|
2357
2480
|
targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex].cells[target.cellIndex + 1], 'right');
|
|
2481
|
+
if (isTimelineYear && isMultiple && targetCell.classList.contains(OTHERMONTH_CLASS)) {
|
|
2482
|
+
targetCell = this.getTimelineYearTargetCell(key, target, true);
|
|
2483
|
+
}
|
|
2358
2484
|
if (!isNullOrUndefined(targetCell)) {
|
|
2359
2485
|
this.selectCells(isMultiple, targetCell);
|
|
2360
2486
|
}
|
|
2361
2487
|
}
|
|
2362
|
-
else if (key.columnIndex === key.maxIndex - 1) {
|
|
2363
|
-
if (!this.isInverseTableSelect() && key.rowIndex < key.element.rows.length - 1) {
|
|
2488
|
+
else if (key.columnIndex === key.maxIndex - 1 || isMonthEnd) {
|
|
2489
|
+
if (!this.isInverseTableSelect() && key.rowIndex < key.element.rows.length - 1 && !isMonthEnd) {
|
|
2364
2490
|
targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex + 1].cells[0], 'right');
|
|
2491
|
+
const changeTargetCell = isTimelineYear && isMultiple && targetCell.classList.contains(OTHERMONTH_CLASS);
|
|
2492
|
+
targetCell = changeTargetCell ? this.getHorizontalLeftRightCell(key, target, true) : targetCell;
|
|
2365
2493
|
if (!isNullOrUndefined(targetCell)) {
|
|
2366
2494
|
this.selectCells(isMultiple, targetCell);
|
|
2367
2495
|
}
|
|
2368
2496
|
}
|
|
2369
2497
|
else if (!isMultiple) {
|
|
2498
|
+
if (isMonthEnd && targetDate.getTime() !== this.parent.activeView.getEndDate().getTime()) {
|
|
2499
|
+
this.selectCells(isMultiple, this.parent.element.querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + (targetDate.getTime() + MS_PER_DAY) + '"]'));
|
|
2500
|
+
return;
|
|
2501
|
+
}
|
|
2370
2502
|
const rowIndex = this.isInverseTableSelect() ? key.rowIndex : 0;
|
|
2371
2503
|
this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);
|
|
2372
2504
|
const tableEle = this.parent.getContentTable();
|
|
2373
|
-
|
|
2505
|
+
const cell = isMonthEnd ? tableEle.rows[rowIndex].querySelector('.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')') : tableEle.rows[rowIndex].cells[0];
|
|
2506
|
+
this.selectCells(false, cell);
|
|
2374
2507
|
}
|
|
2375
2508
|
}
|
|
2376
2509
|
}
|
|
@@ -2389,7 +2522,8 @@ class KeyboardInteraction {
|
|
|
2389
2522
|
}
|
|
2390
2523
|
}
|
|
2391
2524
|
processLeft(e, isMultiple) {
|
|
2392
|
-
|
|
2525
|
+
const isTimelineYear = this.parent.currentView === 'TimelineYear';
|
|
2526
|
+
if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {
|
|
2393
2527
|
return;
|
|
2394
2528
|
}
|
|
2395
2529
|
let target = (e.target);
|
|
@@ -2410,24 +2544,40 @@ class KeyboardInteraction {
|
|
|
2410
2544
|
if ((e.target).classList.contains(WORK_CELLS_CLASS) &&
|
|
2411
2545
|
target.classList.contains(WORK_CELLS_CLASS)) {
|
|
2412
2546
|
const key = this.processLeftRight(target);
|
|
2413
|
-
|
|
2547
|
+
const targetDate = new Date(+target.getAttribute('data-date'));
|
|
2548
|
+
const isMonthStart = this.parent.currentView === 'Year' && targetDate.getTime() === firstDateOfMonth(targetDate).getTime();
|
|
2549
|
+
if (key.columnIndex > 0 && key.columnIndex < key.maxIndex && !isMonthStart) {
|
|
2414
2550
|
targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex].cells[target.cellIndex - 1], 'left');
|
|
2551
|
+
if (isTimelineYear && isMultiple && targetCell.classList.contains(OTHERMONTH_CLASS)) {
|
|
2552
|
+
targetCell = this.getTimelineYearTargetCell(key, target, false);
|
|
2553
|
+
}
|
|
2415
2554
|
if (!isNullOrUndefined(targetCell)) {
|
|
2416
2555
|
this.selectCells(isMultiple, targetCell);
|
|
2417
2556
|
}
|
|
2418
2557
|
}
|
|
2419
|
-
else if (key.columnIndex === 0) {
|
|
2558
|
+
else if (key.columnIndex === 0 || isMonthStart) {
|
|
2420
2559
|
if (!this.isInverseTableSelect() && key.rowIndex > 0) {
|
|
2421
2560
|
targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex - 1].cells[key.maxIndex - 1], 'left');
|
|
2561
|
+
const otherMonthCell = isTimelineYear && isMultiple && targetCell.classList.contains(OTHERMONTH_CLASS);
|
|
2562
|
+
targetCell = otherMonthCell ? this.getHorizontalLeftRightCell(key, target, false) : targetCell;
|
|
2422
2563
|
if (!isNullOrUndefined(targetCell)) {
|
|
2423
2564
|
this.selectCells(isMultiple, targetCell);
|
|
2424
2565
|
}
|
|
2425
2566
|
}
|
|
2426
2567
|
else if (!isMultiple) {
|
|
2568
|
+
if (isMonthStart && targetDate.getTime() !== this.parent.activeView.getStartDate().getTime()) {
|
|
2569
|
+
this.selectCells(isMultiple, this.parent.element.querySelector('[data-date="' + (targetDate.getTime() - MS_PER_DAY) + '"]'));
|
|
2570
|
+
return;
|
|
2571
|
+
}
|
|
2427
2572
|
this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);
|
|
2428
2573
|
const tableEle = this.parent.getContentTable();
|
|
2429
2574
|
const rowIndex = this.isInverseTableSelect() ? key.rowIndex : tableEle.rows.length - 1;
|
|
2430
|
-
|
|
2575
|
+
let cell = tableEle.rows[rowIndex].cells[key.maxIndex - 1];
|
|
2576
|
+
if (isMonthStart) {
|
|
2577
|
+
const tbody = this.parent.element.querySelectorAll('.' + CONTENT_TABLE_CLASS + ' tbody');
|
|
2578
|
+
cell = tbody.item(tbody.length - 1).querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + this.parent.activeView.getEndDate().getTime() + '"]');
|
|
2579
|
+
}
|
|
2580
|
+
this.selectCells(false, cell);
|
|
2431
2581
|
}
|
|
2432
2582
|
}
|
|
2433
2583
|
}
|
|
@@ -2445,6 +2595,29 @@ class KeyboardInteraction {
|
|
|
2445
2595
|
}
|
|
2446
2596
|
}
|
|
2447
2597
|
}
|
|
2598
|
+
getTimelineYearTargetCell(key, target, isRight) {
|
|
2599
|
+
return this.isInverseTableSelect() ? this.getVerticalLeftRightCell(target, isRight) :
|
|
2600
|
+
this.getHorizontalLeftRightCell(key, target, isRight);
|
|
2601
|
+
}
|
|
2602
|
+
getHorizontalLeftRightCell(key, target, isRight) {
|
|
2603
|
+
const row = key.element.rows[target.parentNode.sectionRowIndex + (isRight ? 1 : -1)];
|
|
2604
|
+
if (row) {
|
|
2605
|
+
const query = isRight ? '.' + WORK_CELLS_CLASS + ':not(.' + OTHERMONTH_CLASS + ')'
|
|
2606
|
+
: '[data-date="' + ((+target.getAttribute('data-date')) - MS_PER_DAY) + '"]';
|
|
2607
|
+
return row.querySelector(query);
|
|
2608
|
+
}
|
|
2609
|
+
return target;
|
|
2610
|
+
}
|
|
2611
|
+
getVerticalLeftRightCell(target, isRight) {
|
|
2612
|
+
const date = new Date(+target.getAttribute('data-date'));
|
|
2613
|
+
const start = new Date(date.getFullYear(), date.getMonth() + (isRight ? 1 : -1), 1);
|
|
2614
|
+
const tableEle = this.parent.getContentTable();
|
|
2615
|
+
const targetCell = tableEle.querySelector('[data-date="' + start.getTime() + '"]');
|
|
2616
|
+
if (targetCell.parentNode.sectionRowIndex > target.parentNode.sectionRowIndex) {
|
|
2617
|
+
return targetCell;
|
|
2618
|
+
}
|
|
2619
|
+
return tableEle.querySelector('[data-date="' + new Date(start.getFullYear(), start.getMonth() + 1, 0).getTime() + '"]');
|
|
2620
|
+
}
|
|
2448
2621
|
calculateNextPrevDate(currentCell, target, type) {
|
|
2449
2622
|
const initialId = this.initialTarget.getAttribute('data-group-index');
|
|
2450
2623
|
if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.currentView === 'Month') {
|
|
@@ -2488,6 +2661,16 @@ class KeyboardInteraction {
|
|
|
2488
2661
|
}
|
|
2489
2662
|
processTab(e, isReverse) {
|
|
2490
2663
|
let target = e.target;
|
|
2664
|
+
if (target.classList.contains(INLINE_SUBJECT_CLASS) && this.parent.inlineModule) {
|
|
2665
|
+
target = target.closest('.e-appointment');
|
|
2666
|
+
this.parent.inlineModule.inlineCrudActions(e.target);
|
|
2667
|
+
}
|
|
2668
|
+
if (this.parent.currentView === 'TimelineYear' && target.classList.contains(OTHERMONTH_CLASS)) {
|
|
2669
|
+
if (target.classList.contains(SELECTED_CELL_CLASS)) {
|
|
2670
|
+
this.parent.removeSelectedClass();
|
|
2671
|
+
}
|
|
2672
|
+
return;
|
|
2673
|
+
}
|
|
2491
2674
|
const popupWrapper = closest(target, '.' + POPUP_WRAPPER_CLASS + ',.' + MORE_POPUP_WRAPPER_CLASS);
|
|
2492
2675
|
if (popupWrapper && popupWrapper.classList.contains(POPUP_OPEN)) {
|
|
2493
2676
|
if (popupWrapper.classList.contains(MORE_POPUP_WRAPPER_CLASS)) {
|
|
@@ -2529,7 +2712,9 @@ class KeyboardInteraction {
|
|
|
2529
2712
|
}
|
|
2530
2713
|
if (target.classList.contains(APPOINTMENT_CLASS)) {
|
|
2531
2714
|
let appElements = [].slice.call(this.parent.element.querySelectorAll('.' + APPOINTMENT_CLASS));
|
|
2532
|
-
|
|
2715
|
+
const isTimelineYear = this.parent.currentView === 'TimelineYear';
|
|
2716
|
+
const isTimeline = this.parent.activeView.isTimelineView() && !isTimelineYear;
|
|
2717
|
+
if ((isTimeline || isTimelineYear && this.parent.activeViewOptions.orientation === 'Vertical') && this.parent.activeViewOptions.group.resources.length > 0) {
|
|
2533
2718
|
const index = parseInt(target.getAttribute('data-group-index'), 10);
|
|
2534
2719
|
appElements = [].slice.call(this.parent.element.querySelectorAll(`.${APPOINTMENT_CLASS}[data-group-index="${index}"]`));
|
|
2535
2720
|
const resCellSelector = `.${RESOURCE_CELLS_CLASS}[data-group-index="${isReverse ? index : index + 1}"]`;
|
|
@@ -2578,7 +2763,6 @@ class KeyboardInteraction {
|
|
|
2578
2763
|
this.processTabOnResourceCells(target, isReverse);
|
|
2579
2764
|
}
|
|
2580
2765
|
}
|
|
2581
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2582
2766
|
processDelete(e) {
|
|
2583
2767
|
let activeEle = document.activeElement;
|
|
2584
2768
|
if (this.parent.currentView === 'MonthAgenda') {
|
|
@@ -2977,7 +3161,6 @@ class Islamic {
|
|
|
2977
3161
|
}
|
|
2978
3162
|
}
|
|
2979
3163
|
|
|
2980
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2981
3164
|
/**
|
|
2982
3165
|
* Time zone
|
|
2983
3166
|
*/
|
|
@@ -3546,10 +3729,10 @@ function weeklyType(startDate, endDate, data, ruleObject) {
|
|
|
3546
3729
|
let startDateDiff = DAYINDEX.indexOf(DAYINDEX[tempDate.getDay()]) - wkstIndex;
|
|
3547
3730
|
startDateDiff = startDateDiff === -1 ? 6 : startDateDiff;
|
|
3548
3731
|
const weekstartDate = addDays(tempDate, -startDateDiff);
|
|
3549
|
-
|
|
3732
|
+
let weekendDate = addDays(weekstartDate, 6);
|
|
3550
3733
|
let compareTempDate = new Date(tempDate.getTime());
|
|
3551
|
-
resetTime(weekendDate);
|
|
3552
|
-
resetTime(compareTempDate);
|
|
3734
|
+
weekendDate = resetTime(weekendDate);
|
|
3735
|
+
compareTempDate = resetTime(compareTempDate);
|
|
3553
3736
|
while (weekendDate >= compareTempDate) {
|
|
3554
3737
|
if (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {
|
|
3555
3738
|
weekCollection.push([tempDate.getTime()]);
|
|
@@ -3559,7 +3742,7 @@ function weeklyType(startDate, endDate, data, ruleObject) {
|
|
|
3559
3742
|
}
|
|
3560
3743
|
tempDate.setDate(tempDate.getDate() + 1);
|
|
3561
3744
|
compareTempDate = new Date(tempDate.getTime());
|
|
3562
|
-
resetTime(compareTempDate);
|
|
3745
|
+
compareTempDate = resetTime(compareTempDate);
|
|
3563
3746
|
}
|
|
3564
3747
|
tempDate.setDate(tempDate.getDate() - 1);
|
|
3565
3748
|
if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {
|
|
@@ -4927,12 +5110,7 @@ class EventBase {
|
|
|
4927
5110
|
if (generateID) {
|
|
4928
5111
|
event[fields.id] = temp++;
|
|
4929
5112
|
}
|
|
4930
|
-
|
|
4931
|
-
event[fields.startTime] = getDateFromString(event[fields.startTime]);
|
|
4932
|
-
}
|
|
4933
|
-
if (typeof event[fields.endTime] === 'string') {
|
|
4934
|
-
event[fields.endTime] = getDateFromString(event[fields.endTime]);
|
|
4935
|
-
}
|
|
5113
|
+
event = this.updateEventDateTime(event);
|
|
4936
5114
|
if (timeZonePropChanged) {
|
|
4937
5115
|
this.processTimezoneChange(event, oldTimezone);
|
|
4938
5116
|
}
|
|
@@ -4991,6 +5169,15 @@ class EventBase {
|
|
|
4991
5169
|
this.parent.blockProcessed = blockData;
|
|
4992
5170
|
return eventData;
|
|
4993
5171
|
}
|
|
5172
|
+
updateEventDateTime(eventData) {
|
|
5173
|
+
if (typeof eventData[this.parent.eventFields.startTime] === 'string') {
|
|
5174
|
+
eventData[this.parent.eventFields.startTime] = getDateFromString(eventData[this.parent.eventFields.startTime]);
|
|
5175
|
+
}
|
|
5176
|
+
if (typeof eventData[this.parent.eventFields.endTime] === 'string') {
|
|
5177
|
+
eventData[this.parent.eventFields.endTime] = getDateFromString(eventData[this.parent.eventFields.endTime]);
|
|
5178
|
+
}
|
|
5179
|
+
return eventData;
|
|
5180
|
+
}
|
|
4994
5181
|
getProcessedEvents(eventCollection = this.parent.eventsData) {
|
|
4995
5182
|
let processed = [];
|
|
4996
5183
|
for (const event of eventCollection) {
|
|
@@ -5490,7 +5677,7 @@ class EventBase {
|
|
|
5490
5677
|
const isAllDay = event[fieldMapping.isAllDay];
|
|
5491
5678
|
const isFullDay = ((event[fieldMapping.endTime].getTime() - event[fieldMapping.startTime].getTime())
|
|
5492
5679
|
/ MS_PER_DAY) >= 1;
|
|
5493
|
-
return (isAllDay || isFullDay) ? true : false;
|
|
5680
|
+
return (isAllDay || (this.parent.eventSettings.spannedEventPlacement !== 'TimeSlot' && isFullDay)) ? true : false;
|
|
5494
5681
|
}
|
|
5495
5682
|
addEventListener() {
|
|
5496
5683
|
this.parent.on(documentClick, this.appointmentBorderRemove, this);
|
|
@@ -5576,7 +5763,8 @@ class EventBase {
|
|
|
5576
5763
|
}
|
|
5577
5764
|
eventClick(eventData) {
|
|
5578
5765
|
const target = eventData.target;
|
|
5579
|
-
if (target.classList.contains(DRAG_CLONE_CLASS) || target.classList.contains(RESIZE_CLONE_CLASS)
|
|
5766
|
+
if (target.classList.contains(DRAG_CLONE_CLASS) || target.classList.contains(RESIZE_CLONE_CLASS) ||
|
|
5767
|
+
target.classList.contains(INLINE_SUBJECT_CLASS)) {
|
|
5580
5768
|
return;
|
|
5581
5769
|
}
|
|
5582
5770
|
if ((eventData.ctrlKey || eventData.metaKey) && eventData.which === 1 && this.parent.keyboardInteractionModule) {
|
|
@@ -6025,13 +6213,28 @@ class EventBase {
|
|
|
6025
6213
|
indentHeight = dateHeader.offsetHeight - indentHeight;
|
|
6026
6214
|
this.parent.element.querySelector('.' + ALLDAY_CELLS_CLASS).style.height = (indentHeight / 12) + 'em';
|
|
6027
6215
|
const content = this.parent.element.querySelector('.' + CONTENT_WRAP_CLASS);
|
|
6028
|
-
if (this.parent.uiStateValues.expand && (content.offsetWidth - content.clientWidth > 0 || heightPropChanged)) {
|
|
6216
|
+
if (this.parent.uiStateValues.expand && (content.offsetWidth - content.clientWidth > 0 || heightPropChanged || this.parent.element.classList.contains(DEVICE_CLASS))) {
|
|
6029
6217
|
addClass([dateHeader], ALLDAY_APPOINTMENT_SCROLL);
|
|
6030
6218
|
}
|
|
6031
6219
|
else {
|
|
6032
6220
|
removeClass([dateHeader], ALLDAY_APPOINTMENT_SCROLL);
|
|
6033
6221
|
}
|
|
6034
6222
|
}
|
|
6223
|
+
updateEventMinimumDuration(startEndHours, startTime, endTime) {
|
|
6224
|
+
const eventDuration = (getUniversalTime(endTime) - getUniversalTime(startTime)) / MS_PER_MINUTE;
|
|
6225
|
+
if (eventDuration < this.parent.eventSettings.minimumEventDuration) {
|
|
6226
|
+
const tempEnd = new Date(startTime);
|
|
6227
|
+
tempEnd.setMinutes(tempEnd.getMinutes() + this.parent.eventSettings.minimumEventDuration);
|
|
6228
|
+
endTime = tempEnd;
|
|
6229
|
+
if (endTime.getTime() > startEndHours.endHour.getTime()) {
|
|
6230
|
+
const tempStart = new Date(startEndHours.endHour.getTime());
|
|
6231
|
+
tempStart.setMinutes(tempStart.getMinutes() - this.parent.eventSettings.minimumEventDuration);
|
|
6232
|
+
startTime = tempStart;
|
|
6233
|
+
endTime = startEndHours.endHour;
|
|
6234
|
+
}
|
|
6235
|
+
}
|
|
6236
|
+
return { startDate: startTime, endDate: endTime };
|
|
6237
|
+
}
|
|
6035
6238
|
unWireEvents() {
|
|
6036
6239
|
const appElements = [].slice.call(this.parent.element.querySelectorAll('.' + APPOINTMENT_CLASS));
|
|
6037
6240
|
for (const element of appElements) {
|
|
@@ -6433,18 +6636,21 @@ class VerticalEvent extends EventBase {
|
|
|
6433
6636
|
if (currentDay.length === 0) {
|
|
6434
6637
|
currentDate = resetTime(renderedDate[0]);
|
|
6435
6638
|
}
|
|
6436
|
-
const
|
|
6437
|
-
const
|
|
6639
|
+
const field = this.parent.eventFields;
|
|
6640
|
+
const schedule = getStartEndHours(currentDate, this.startHour, this.endHour);
|
|
6438
6641
|
const event = extend({}, record, null, true);
|
|
6439
6642
|
event.isSpanned = { isBottom: false, isTop: false };
|
|
6440
|
-
if (record[
|
|
6441
|
-
event[
|
|
6643
|
+
if (record[field.startTime].getTime() < schedule.startHour.getTime()) {
|
|
6644
|
+
event[field.startTime] = schedule.startHour;
|
|
6442
6645
|
event.isSpanned.isTop = true;
|
|
6443
6646
|
}
|
|
6444
|
-
if (record[
|
|
6445
|
-
event[
|
|
6647
|
+
if (record[field.endTime].getTime() > schedule.endHour.getTime()) {
|
|
6648
|
+
event[field.endTime] = schedule.endHour;
|
|
6446
6649
|
event.isSpanned.isBottom = true;
|
|
6447
6650
|
}
|
|
6651
|
+
const eventDates = this.updateEventMinimumDuration(schedule, event[field.startTime], event[field.endTime]);
|
|
6652
|
+
event[field.startTime] = eventDates.startDate;
|
|
6653
|
+
event[field.endTime] = eventDates.endDate;
|
|
6448
6654
|
return event;
|
|
6449
6655
|
}
|
|
6450
6656
|
renderAllDayEvents(eventObj, dayIndex, resource, dayCount, inline) {
|
|
@@ -6927,10 +7133,10 @@ class MonthEvent extends EventBase {
|
|
|
6927
7133
|
this.parent.virtualScrollModule.updateVirtualScrollHeight();
|
|
6928
7134
|
}
|
|
6929
7135
|
}
|
|
6930
|
-
this.parent.notify(scrollUiUpdate, data);
|
|
6931
7136
|
if (!this.parent.enablePersistence) {
|
|
6932
7137
|
this.parent.notify(contentReady, {});
|
|
6933
7138
|
}
|
|
7139
|
+
this.parent.notify(scrollUiUpdate, data);
|
|
6934
7140
|
if (this.parent.currentView === 'Month' && this.parent.showWeekNumber) {
|
|
6935
7141
|
const totalCells = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap table tr td:first-child'));
|
|
6936
7142
|
const weekNumberCells = [].slice.call(this.parent.element.querySelectorAll('.' + WEEK_NUMBER_CLASS));
|
|
@@ -6978,7 +7184,7 @@ class MonthEvent extends EventBase {
|
|
|
6978
7184
|
this.cellHeight = cellDetail.height;
|
|
6979
7185
|
this.dateRender = dateRender;
|
|
6980
7186
|
const filteredDates = this.getRenderedDates(dateRender);
|
|
6981
|
-
this.getSlotDates(workDays);
|
|
7187
|
+
this.getSlotDates(workDays || this.parent.activeViewOptions.workDays);
|
|
6982
7188
|
this.processBlockEvents(blockList, resIndex, resData);
|
|
6983
7189
|
for (const event of eventsList) {
|
|
6984
7190
|
if (this.parent.resourceBase && !resData) {
|
|
@@ -7604,6 +7810,10 @@ class TimelineEvent extends MonthEvent {
|
|
|
7604
7810
|
const eventData = event.data;
|
|
7605
7811
|
startTime = this.getStartTime(event, eventData);
|
|
7606
7812
|
endTime = this.getEndTime(event, eventData);
|
|
7813
|
+
const startEndHours = getStartEndHours(event[this.fields.startTime], this.startHour, this.endHour);
|
|
7814
|
+
const eventDates = this.updateEventMinimumDuration(startEndHours, startTime, endTime);
|
|
7815
|
+
startTime = eventDates.startDate;
|
|
7816
|
+
endTime = eventDates.endDate;
|
|
7607
7817
|
this.day = this.parent.getIndexOfDate(this.dateRender, resetTime(new Date(startTime.getTime())));
|
|
7608
7818
|
if (this.day < 0) {
|
|
7609
7819
|
return;
|
|
@@ -7990,11 +8200,11 @@ class InlineEdit {
|
|
|
7990
8200
|
if (this.parent.quickPopup) {
|
|
7991
8201
|
this.parent.quickPopup.quickPopupHide();
|
|
7992
8202
|
}
|
|
7993
|
-
const moreWrapper = this.parent.element.querySelector('.e-more-popup-wrapper ');
|
|
7994
|
-
if (moreWrapper && moreWrapper.classList.contains(POPUP_OPEN)) {
|
|
7995
|
-
this.parent.quickPopup.morePopup.hide();
|
|
7996
|
-
}
|
|
7997
8203
|
if (args.type === 'Cell') {
|
|
8204
|
+
const moreWrapper = this.parent.element.querySelector('.' + MORE_POPUP_WRAPPER_CLASS);
|
|
8205
|
+
if (moreWrapper && moreWrapper.classList.contains(POPUP_OPEN)) {
|
|
8206
|
+
this.parent.quickPopup.morePopup.hide();
|
|
8207
|
+
}
|
|
7998
8208
|
this.removeInlineAppointmentElement();
|
|
7999
8209
|
this.cellEdit(args);
|
|
8000
8210
|
}
|
|
@@ -8057,8 +8267,8 @@ class InlineEdit {
|
|
|
8057
8267
|
'.e-inner-wrap' : '.e-appointment-details';
|
|
8058
8268
|
args.element.querySelector(elementSelector).insertBefore(inlineSubject, timeEle);
|
|
8059
8269
|
}
|
|
8270
|
+
inlineSubject.focus();
|
|
8060
8271
|
}
|
|
8061
|
-
inlineSubject.focus();
|
|
8062
8272
|
inlineSubject.setSelectionRange(subject.length, subject.length);
|
|
8063
8273
|
}
|
|
8064
8274
|
createVerticalViewInline(saveObj, dayIndex, resIndex, daysCount) {
|
|
@@ -8152,6 +8362,9 @@ class InlineEdit {
|
|
|
8152
8362
|
if (target && target.value !== '') {
|
|
8153
8363
|
this.inlineCrudActions(target);
|
|
8154
8364
|
}
|
|
8365
|
+
else {
|
|
8366
|
+
this.removeInlineAppointmentElement();
|
|
8367
|
+
}
|
|
8155
8368
|
}
|
|
8156
8369
|
inlineCrudActions(target) {
|
|
8157
8370
|
if (closest(target, '.' + INLINE_APPOINTMENT_CLASS)) {
|
|
@@ -8246,6 +8459,9 @@ class FieldValidator {
|
|
|
8246
8459
|
if (!elem && !this.ignoreError) {
|
|
8247
8460
|
this.createTooltip(inputElement, error, id, '');
|
|
8248
8461
|
}
|
|
8462
|
+
if (!isNullOrUndefined(elem)) {
|
|
8463
|
+
elem.querySelector('.e-error').innerHTML = error.innerHTML;
|
|
8464
|
+
}
|
|
8249
8465
|
}
|
|
8250
8466
|
createTooltip(element, error, name, display) {
|
|
8251
8467
|
let dlgContent;
|
|
@@ -9182,6 +9398,9 @@ class QuickPopups {
|
|
|
9182
9398
|
}
|
|
9183
9399
|
closeClick(event) {
|
|
9184
9400
|
this.dialogEvent = event;
|
|
9401
|
+
if (this.parent.currentView === 'Year' && this.parent.activeCellsData && this.parent.activeCellsData.element) {
|
|
9402
|
+
this.parent.selectCell(this.parent.activeCellsData.element);
|
|
9403
|
+
}
|
|
9185
9404
|
this.quickPopupHide();
|
|
9186
9405
|
this.morePopup.hide();
|
|
9187
9406
|
}
|
|
@@ -9765,6 +9984,7 @@ const INTERVALCLASS = 'e-interval';
|
|
|
9765
9984
|
const DAYWRAPPER = 'e-days';
|
|
9766
9985
|
const WEEKWRAPPER = 'e-non-week';
|
|
9767
9986
|
const WEEKPOSITION = 'e-week-position';
|
|
9987
|
+
const DAYPOSITION = 'e-day-position';
|
|
9768
9988
|
const YEAREXPANDERWRAPPER = 'e-year-expander';
|
|
9769
9989
|
const YEAREXPANDERELEMENT = 'e-year-expander-element';
|
|
9770
9990
|
const MONETHEXPANDERWRAPPER = 'e-month-expander';
|
|
@@ -10109,7 +10329,6 @@ let RecurrenceEditor = class RecurrenceEditor extends Component {
|
|
|
10109
10329
|
}
|
|
10110
10330
|
});
|
|
10111
10331
|
this.endType.appendTo(this.element.querySelector('.' + ENDONELEMENT));
|
|
10112
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
10113
10332
|
const renderDropDownList = (dropDownData) => {
|
|
10114
10333
|
return new DropDownList({
|
|
10115
10334
|
dataSource: dropDownData,
|
|
@@ -10471,7 +10690,7 @@ let RecurrenceEditor = class RecurrenceEditor extends Component {
|
|
|
10471
10690
|
'<td><div class="' + INPUTWARAPPER + ' ' + WEEKPOSITION + '" >' +
|
|
10472
10691
|
'<input type="text" tabindex="0" class="' + MONTHPOS + '"title="' + this.localeObj.getConstant('monthPosition') + '" />' +
|
|
10473
10692
|
'</div></td>' +
|
|
10474
|
-
'<td><div class="' + INPUTWARAPPER + '
|
|
10693
|
+
'<td><div class="' + INPUTWARAPPER + ' ' + DAYPOSITION + '">' +
|
|
10475
10694
|
'<input type="text" tabindex="0" class="' + MONTHWEEK + '"title="' + this.localeObj.getConstant('monthWeek') + '" />' +
|
|
10476
10695
|
'</div></td></tr></table>' +
|
|
10477
10696
|
'</div></div>' +
|
|
@@ -10852,7 +11071,6 @@ class EventWindow {
|
|
|
10852
11071
|
this.parent = parent;
|
|
10853
11072
|
this.l10n = this.parent.localeObj;
|
|
10854
11073
|
this.fields = this.parent.eventFields;
|
|
10855
|
-
this.timezoneData = this.parent.tzModule.timezoneData;
|
|
10856
11074
|
this.eventWindowTime = { startTime: new Date(), endTime: new Date() };
|
|
10857
11075
|
this.renderEventWindow();
|
|
10858
11076
|
}
|
|
@@ -11284,14 +11502,15 @@ class EventWindow {
|
|
|
11284
11502
|
allowFiltering: true,
|
|
11285
11503
|
change: this.onTimezoneChange.bind(this),
|
|
11286
11504
|
cssClass: this.parent.cssClass || '',
|
|
11287
|
-
dataSource: this.
|
|
11505
|
+
dataSource: this.parent.timezoneDataSource,
|
|
11288
11506
|
enableRtl: this.parent.enableRtl,
|
|
11289
11507
|
fields: { text: 'Text', value: 'Value' },
|
|
11290
|
-
filterBarPlaceholder: '
|
|
11508
|
+
filterBarPlaceholder: this.parent.localeObj.getConstant('searchTimezone'),
|
|
11509
|
+
noRecordsTemplate: this.parent.localeObj.getConstant('noRecords'),
|
|
11291
11510
|
filtering: (e) => {
|
|
11292
11511
|
let query = new Query();
|
|
11293
11512
|
query = (e.text !== '') ? query.where('Text', 'contains', e.text, true) : query;
|
|
11294
|
-
e.updateData(this.
|
|
11513
|
+
e.updateData(this.parent.timezoneDataSource, query);
|
|
11295
11514
|
},
|
|
11296
11515
|
htmlAttributes: { 'title': this.getFieldLabel(value), 'name': fieldName },
|
|
11297
11516
|
floatLabelType: 'Always',
|
|
@@ -12586,7 +12805,6 @@ class EventWindow {
|
|
|
12586
12805
|
this.fields = null;
|
|
12587
12806
|
this.buttonObj = null;
|
|
12588
12807
|
this.repeatStatus = null;
|
|
12589
|
-
this.timezoneData = null;
|
|
12590
12808
|
this.eventWindowTime = null;
|
|
12591
12809
|
}
|
|
12592
12810
|
}
|
|
@@ -13175,7 +13393,8 @@ class Crud {
|
|
|
13175
13393
|
const editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };
|
|
13176
13394
|
let promise;
|
|
13177
13395
|
if (addArgs.addedRecords instanceof Array) {
|
|
13178
|
-
for (
|
|
13396
|
+
for (let event of addArgs.addedRecords) {
|
|
13397
|
+
event = this.parent.eventBase.updateEventDateTime(event);
|
|
13179
13398
|
const eventData = extend({}, this.parent.eventBase.processTimezone(event, true), null, true);
|
|
13180
13399
|
editParams.addedRecords.push(eventData);
|
|
13181
13400
|
}
|
|
@@ -13230,7 +13449,8 @@ class Crud {
|
|
|
13230
13449
|
const fields = this.parent.eventFields;
|
|
13231
13450
|
const editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };
|
|
13232
13451
|
if (saveArgs.changedRecords instanceof Array) {
|
|
13233
|
-
for (
|
|
13452
|
+
for (let event of saveArgs.changedRecords) {
|
|
13453
|
+
event = this.parent.eventBase.updateEventDateTime(event);
|
|
13234
13454
|
const eventData = extend({}, this.parent.eventBase.processTimezone(event, true), null, true);
|
|
13235
13455
|
editParams.changedRecords.push(eventData);
|
|
13236
13456
|
}
|
|
@@ -13920,6 +14140,12 @@ __decorate$6([
|
|
|
13920
14140
|
__decorate$6([
|
|
13921
14141
|
Property(false)
|
|
13922
14142
|
], EventSettings.prototype, "enableTooltip", void 0);
|
|
14143
|
+
__decorate$6([
|
|
14144
|
+
Property('AllDayRow')
|
|
14145
|
+
], EventSettings.prototype, "spannedEventPlacement", void 0);
|
|
14146
|
+
__decorate$6([
|
|
14147
|
+
Property(1)
|
|
14148
|
+
], EventSettings.prototype, "minimumEventDuration", void 0);
|
|
13923
14149
|
__decorate$6([
|
|
13924
14150
|
Property()
|
|
13925
14151
|
], EventSettings.prototype, "tooltipTemplate", void 0);
|
|
@@ -14371,6 +14597,7 @@ class ResourceBase {
|
|
|
14371
14597
|
targetType: 'relative',
|
|
14372
14598
|
actionOnScroll: 'none',
|
|
14373
14599
|
content: this.treeViewObj.element,
|
|
14600
|
+
relateTo: this.parent.element.querySelector('.' + TABLE_CONTAINER_CLASS),
|
|
14374
14601
|
enableRtl: this.parent.enableRtl,
|
|
14375
14602
|
hideAnimation: { name: 'SlideLeftOut', duration: 500 },
|
|
14376
14603
|
showAnimation: { name: 'SlideLeftIn', duration: 500 },
|
|
@@ -15269,13 +15496,19 @@ let Schedule = class Schedule extends Component {
|
|
|
15269
15496
|
timeFormat: this.internalTimeFormat,
|
|
15270
15497
|
group: group,
|
|
15271
15498
|
headerRows: this.headerRows,
|
|
15272
|
-
orientation: 'Horizontal'
|
|
15499
|
+
orientation: 'Horizontal',
|
|
15500
|
+
numberOfWeeks: 0,
|
|
15501
|
+
displayDate: null
|
|
15273
15502
|
};
|
|
15274
15503
|
const viewOptions = this.viewCollections[this.viewIndex];
|
|
15275
15504
|
const viewsData = extend(scheduleOptions, viewOptions, undefined, true);
|
|
15276
15505
|
if (this.firstDayOfWeek !== 0 && viewOptions.firstDayOfWeek && this.firstDayOfWeek !== viewOptions.firstDayOfWeek) {
|
|
15277
15506
|
viewsData.firstDayOfWeek = this.firstDayOfWeek;
|
|
15278
15507
|
}
|
|
15508
|
+
if (viewsData.displayDate) {
|
|
15509
|
+
viewsData.displayDate = viewsData.displayDate instanceof Date ? new Date(viewsData.displayDate.getTime()) :
|
|
15510
|
+
new Date(viewsData.displayDate);
|
|
15511
|
+
}
|
|
15279
15512
|
return viewsData;
|
|
15280
15513
|
}
|
|
15281
15514
|
initializeDataModule() {
|
|
@@ -15582,7 +15815,7 @@ let Schedule = class Schedule extends Component {
|
|
|
15582
15815
|
if (this && isNullOrUndefined(this.uiStateValues) || !(this.enablePersistence)) {
|
|
15583
15816
|
this.uiStateValues = {
|
|
15584
15817
|
expand: false, isInitial: true, left: 0, top: 0, isGroupAdaptive: false,
|
|
15585
|
-
isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false
|
|
15818
|
+
isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false, isCustomMonth: true
|
|
15586
15819
|
};
|
|
15587
15820
|
}
|
|
15588
15821
|
this.activeCellsData = { startTime: this.getCurrentTime(), endTime: this.getCurrentTime(), isAllDay: false };
|
|
@@ -15681,7 +15914,9 @@ let Schedule = class Schedule extends Component {
|
|
|
15681
15914
|
beginFrom: 'Begin From',
|
|
15682
15915
|
endAt: 'Ends At',
|
|
15683
15916
|
expandAllDaySection: 'Expand-all-day-section',
|
|
15684
|
-
collapseAllDaySection: 'Collapse-all-day-section'
|
|
15917
|
+
collapseAllDaySection: 'Collapse-all-day-section',
|
|
15918
|
+
searchTimezone: 'Search Timezone',
|
|
15919
|
+
noRecords: 'No records found'
|
|
15685
15920
|
};
|
|
15686
15921
|
}
|
|
15687
15922
|
wireEvents() {
|
|
@@ -16397,6 +16632,11 @@ let Schedule = class Schedule extends Component {
|
|
|
16397
16632
|
this.keyboardInteractionModule = new KeyboardInteraction(this);
|
|
16398
16633
|
}
|
|
16399
16634
|
break;
|
|
16635
|
+
case 'timezoneDataSource':
|
|
16636
|
+
if (this.eventWindow) {
|
|
16637
|
+
this.eventWindow.refresh();
|
|
16638
|
+
}
|
|
16639
|
+
break;
|
|
16400
16640
|
case 'editorTemplate':
|
|
16401
16641
|
if (!isNullOrUndefined(this.editorTemplate)) {
|
|
16402
16642
|
this.editorTemplateFn = this.templateParser(this.editorTemplate);
|
|
@@ -16538,6 +16778,8 @@ let Schedule = class Schedule extends Component {
|
|
|
16538
16778
|
this.eventWindow.refresh();
|
|
16539
16779
|
}
|
|
16540
16780
|
break;
|
|
16781
|
+
case 'spannedEventPlacement':
|
|
16782
|
+
case 'minimumEventDuration':
|
|
16541
16783
|
case 'enableMaxHeight':
|
|
16542
16784
|
case 'enableIndicator':
|
|
16543
16785
|
this.refreshEvents(false);
|
|
@@ -16910,7 +17152,7 @@ let Schedule = class Schedule extends Component {
|
|
|
16910
17152
|
*/
|
|
16911
17153
|
exportToExcel(excelExportOptions) {
|
|
16912
17154
|
if (this.excelExportModule) {
|
|
16913
|
-
this.excelExportModule.initializeExcelExport(excelExportOptions
|
|
17155
|
+
this.excelExportModule.initializeExcelExport(excelExportOptions);
|
|
16914
17156
|
}
|
|
16915
17157
|
else {
|
|
16916
17158
|
throw Error('Inject ExcelExport module');
|
|
@@ -17094,6 +17336,9 @@ let Schedule = class Schedule extends Component {
|
|
|
17094
17336
|
this.crudModule.refreshDataManager();
|
|
17095
17337
|
}
|
|
17096
17338
|
else {
|
|
17339
|
+
if (this.activeViewOptions && this.activeViewOptions.eventTemplate) {
|
|
17340
|
+
this.resetTemplates(['eventTemplate']);
|
|
17341
|
+
}
|
|
17097
17342
|
const eventsData = this.eventsData || [];
|
|
17098
17343
|
const blockData = this.blockData || [];
|
|
17099
17344
|
const data = eventsData.concat(blockData);
|
|
@@ -17348,6 +17593,7 @@ let Schedule = class Schedule extends Component {
|
|
|
17348
17593
|
this.eventTooltip = null;
|
|
17349
17594
|
}
|
|
17350
17595
|
this.destroyPopups();
|
|
17596
|
+
this.hideSpinner();
|
|
17351
17597
|
this.unWireEvents();
|
|
17352
17598
|
this.destroyHeaderModule();
|
|
17353
17599
|
if (this.eventTooltip) {
|
|
@@ -17559,6 +17805,9 @@ __decorate([
|
|
|
17559
17805
|
__decorate([
|
|
17560
17806
|
Complex({}, EventSettings)
|
|
17561
17807
|
], Schedule.prototype, "eventSettings", void 0);
|
|
17808
|
+
__decorate([
|
|
17809
|
+
Property(timezoneData)
|
|
17810
|
+
], Schedule.prototype, "timezoneDataSource", void 0);
|
|
17562
17811
|
__decorate([
|
|
17563
17812
|
Property()
|
|
17564
17813
|
], Schedule.prototype, "resourceHeaderTemplate", void 0);
|
|
@@ -19096,7 +19345,7 @@ class YearEvent extends TimelineEvent {
|
|
|
19096
19345
|
}
|
|
19097
19346
|
}
|
|
19098
19347
|
else {
|
|
19099
|
-
if (((resetTime(appStart).getTime() <= dateStart) && (resetTime(appEnd).getTime()
|
|
19348
|
+
if (((resetTime(appStart).getTime() <= dateStart) && (resetTime(appEnd).getTime() >= dateStart)) ||
|
|
19100
19349
|
(resetTime(appStart).getTime() >= dateStart) && (resetTime(appEnd).getTime() <= dateEnd)) {
|
|
19101
19350
|
appointmentsList.push(app);
|
|
19102
19351
|
}
|
|
@@ -19274,7 +19523,9 @@ class DragAndDrop extends ActionBase {
|
|
|
19274
19523
|
const eventGuid = this.actionObj.element.getAttribute('data-guid');
|
|
19275
19524
|
this.actionObj.event = this.parent.eventBase.getEventByGuid(eventGuid);
|
|
19276
19525
|
const eventObj = extend({}, this.actionObj.event, null, true);
|
|
19277
|
-
|
|
19526
|
+
if (!isNullOrUndefined(eventObj)) {
|
|
19527
|
+
this.startTime = eventObj[this.parent.eventFields.startTime].getTime();
|
|
19528
|
+
}
|
|
19278
19529
|
const dragArgs = {
|
|
19279
19530
|
cancel: false,
|
|
19280
19531
|
data: eventObj,
|
|
@@ -19691,7 +19942,7 @@ class DragAndDrop extends ActionBase {
|
|
|
19691
19942
|
return;
|
|
19692
19943
|
}
|
|
19693
19944
|
const td = tr.children[colIndex];
|
|
19694
|
-
if (this.parent.activeViewOptions.group.resources.length > 0) {
|
|
19945
|
+
if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
|
|
19695
19946
|
this.actionObj.groupIndex = parseInt(td.getAttribute('data-group-index'), 10);
|
|
19696
19947
|
}
|
|
19697
19948
|
let dragStart$$1;
|
|
@@ -19776,18 +20027,20 @@ class DragAndDrop extends ActionBase {
|
|
|
19776
20027
|
const eventData = [];
|
|
19777
20028
|
const startTime = event[eventFields.startTime];
|
|
19778
20029
|
const endTime = event[eventFields.endTime];
|
|
19779
|
-
|
|
19780
|
-
|
|
19781
|
-
|
|
19782
|
-
|
|
19783
|
-
|
|
19784
|
-
|
|
19785
|
-
|
|
19786
|
-
|
|
19787
|
-
|
|
19788
|
-
|
|
19789
|
-
|
|
19790
|
-
eventData.
|
|
20030
|
+
if (resetTime(new Date(startTime.getTime())) < resetTime(new Date(endTime.getTime()))) {
|
|
20031
|
+
let startReferenceDate = resetTime(new Date(startTime.getTime()));
|
|
20032
|
+
let endReferenceDate = new Date(startReferenceDate.getTime());
|
|
20033
|
+
for (let i = 0; startReferenceDate < new Date(endTime.getTime()); i++) {
|
|
20034
|
+
endReferenceDate = new Date(endReferenceDate.setDate(startReferenceDate.getDate() + 1));
|
|
20035
|
+
const eventObj = extend({}, event, null, true);
|
|
20036
|
+
eventObj[eventFields.startTime] = new Date(startReferenceDate);
|
|
20037
|
+
eventObj[eventFields.endTime] = new Date(endReferenceDate);
|
|
20038
|
+
startReferenceDate = new Date(startReferenceDate.setDate(startReferenceDate.getDate() + 1));
|
|
20039
|
+
eventData.push(eventObj);
|
|
20040
|
+
}
|
|
20041
|
+
const index = eventData.length - 1;
|
|
20042
|
+
eventData[0][eventFields.startTime] = startTime;
|
|
20043
|
+
eventData[index][eventFields.endTime] = endTime;
|
|
19791
20044
|
}
|
|
19792
20045
|
else {
|
|
19793
20046
|
eventData.push(event);
|
|
@@ -19858,8 +20111,8 @@ class DragAndDrop extends ActionBase {
|
|
|
19858
20111
|
// eslint-disable-next-line max-len
|
|
19859
20112
|
this.parent.getDateFromElement(isNullOrUndefined(index) ? this.actionObj.target : this.targetTd)));
|
|
19860
20113
|
const splitEvents = this.splitEvent(event);
|
|
19861
|
-
const events =
|
|
19862
|
-
this.parent.
|
|
20114
|
+
const events = this.parent.eventBase.isAllDayAppointment(event) || splitEvents.length > 2 ||
|
|
20115
|
+
this.parent.eventSettings.spannedEventPlacement !== 'TimeSlot' ? [event] : splitEvents;
|
|
19863
20116
|
for (let i = 0; i < events.length; i++) {
|
|
19864
20117
|
if (i > 0) {
|
|
19865
20118
|
let filterQuery = `.e-day-wrapper[data-date="${resetTime(events[i][this.parent.eventFields.startTime]).getTime()}"]`;
|
|
@@ -19955,7 +20208,7 @@ class DragAndDrop extends ActionBase {
|
|
|
19955
20208
|
const renderDates = this.getRenderedDates();
|
|
19956
20209
|
const events = this.parent.eventBase.splitEvent(event, renderDates);
|
|
19957
20210
|
let query = `.e-all-day-cells[data-date="${events[0][this.parent.eventFields.startTime].getTime()}"]`;
|
|
19958
|
-
if (this.parent.activeViewOptions.group.resources.length > 0) {
|
|
20211
|
+
if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {
|
|
19959
20212
|
query = query.concat('[data-group-index = "' + this.actionObj.groupIndex + '"]');
|
|
19960
20213
|
}
|
|
19961
20214
|
const cell = [].slice.call(this.parent.element.querySelectorAll(query));
|
|
@@ -20153,7 +20406,13 @@ class DragAndDrop extends ActionBase {
|
|
|
20153
20406
|
if (this.parent.eventDragArea) {
|
|
20154
20407
|
const targetDate = this.parent.getDateFromElement(e.target);
|
|
20155
20408
|
if (!isNullOrUndefined(targetDate)) {
|
|
20156
|
-
|
|
20409
|
+
if (!this.parent.activeViewOptions.timeScale.enable || (this.parent.currentView == "TimelineMonth")) {
|
|
20410
|
+
const eventSrt = eventObj[this.parent.eventFields.startTime];
|
|
20411
|
+
eventStart = new Date(eventStart.setHours(eventSrt.getHours(), eventSrt.getMinutes(), eventSrt.getSeconds()));
|
|
20412
|
+
}
|
|
20413
|
+
else {
|
|
20414
|
+
eventStart = targetDate;
|
|
20415
|
+
}
|
|
20157
20416
|
}
|
|
20158
20417
|
}
|
|
20159
20418
|
const eventEnd = new Date(eventStart.getTime());
|
|
@@ -20582,6 +20841,10 @@ class ViewBase {
|
|
|
20582
20841
|
return date.setHours(0, 0, 0, 0) === this.parent.getCurrentTime().setHours(0, 0, 0, 0);
|
|
20583
20842
|
}
|
|
20584
20843
|
isCurrentMonth(date) {
|
|
20844
|
+
if (this.parent.activeViewOptions.displayDate || this.parent.activeViewOptions.numberOfWeeks > 0) {
|
|
20845
|
+
return this.parent.activeView.getStartDate().getTime() <= this.parent.getCurrentTime().getTime() &&
|
|
20846
|
+
this.parent.activeView.getEndDate().getTime() >= this.parent.getCurrentTime().getTime();
|
|
20847
|
+
}
|
|
20585
20848
|
return date.getFullYear() ===
|
|
20586
20849
|
this.parent.getCurrentTime().getFullYear() && date.getMonth() === this.parent.getCurrentTime().getMonth();
|
|
20587
20850
|
}
|
|
@@ -20812,6 +21075,11 @@ class ViewBase {
|
|
|
20812
21075
|
setStyleAttribute(resourceColumn, { 'height': formatUnit(content.clientHeight) });
|
|
20813
21076
|
}
|
|
20814
21077
|
}
|
|
21078
|
+
const headerCellElements = [].slice.call(this.element.querySelectorAll('.' + HEADER_CELLS_CLASS));
|
|
21079
|
+
headerCellElements.forEach((ele) => {
|
|
21080
|
+
const headerCellColSpan = parseInt(ele.getAttribute('colspan'), 10);
|
|
21081
|
+
setStyleAttribute(ele, { 'width': formatUnit(colWidth * headerCellColSpan) });
|
|
21082
|
+
});
|
|
20815
21083
|
}
|
|
20816
21084
|
}
|
|
20817
21085
|
resetColWidth() {
|
|
@@ -21849,10 +22117,11 @@ class Month extends ViewBase {
|
|
|
21849
22117
|
getDateSlots(renderDates, workDays) {
|
|
21850
22118
|
const count = this.parent.activeViewOptions.showWeekend ? WEEK_LENGTH : workDays.length;
|
|
21851
22119
|
const dateSlots = [];
|
|
22120
|
+
const isCurrentMonth = this.isCurrentMonth(this.parent.selectedDate);
|
|
21852
22121
|
for (let col = 0; col < count; col++) {
|
|
21853
22122
|
const classList$$1 = [HEADER_CELLS_CLASS];
|
|
21854
22123
|
const currentDateIndex = renderDates.slice(0, count).map((date) => date.getDay());
|
|
21855
|
-
if (
|
|
22124
|
+
if (isCurrentMonth && currentDateIndex.indexOf(this.parent.getCurrentTime().getDay()) === col) {
|
|
21856
22125
|
classList$$1.push(CURRENT_DAY_CLASS);
|
|
21857
22126
|
}
|
|
21858
22127
|
dateSlots.push({ date: renderDates[col], type: 'monthDay', className: classList$$1, colSpan: 1, workDays: workDays });
|
|
@@ -21891,6 +22160,9 @@ class Month extends ViewBase {
|
|
|
21891
22160
|
this.renderResourceMobileLayout();
|
|
21892
22161
|
}
|
|
21893
22162
|
this.parent.notify(contentReady, {});
|
|
22163
|
+
if (this.parent.uiStateValues.isCustomMonth) {
|
|
22164
|
+
this.parent.uiStateValues.isCustomMonth = false;
|
|
22165
|
+
}
|
|
21894
22166
|
}
|
|
21895
22167
|
refreshHeader() {
|
|
21896
22168
|
remove(this.element.querySelector('tbody tr'));
|
|
@@ -22073,7 +22345,7 @@ class Month extends ViewBase {
|
|
|
22073
22345
|
return slotDatas;
|
|
22074
22346
|
}
|
|
22075
22347
|
updateClassList(data) {
|
|
22076
|
-
if (this.isOtherMonth(data.date)) {
|
|
22348
|
+
if (!this.isCustomMonth() && this.isOtherMonth(data.date)) {
|
|
22077
22349
|
data.className.push(OTHERMONTH_CLASS);
|
|
22078
22350
|
}
|
|
22079
22351
|
if (!this.parent.isMinMaxDate(data.date)) {
|
|
@@ -22182,15 +22454,33 @@ class Month extends ViewBase {
|
|
|
22182
22454
|
}
|
|
22183
22455
|
}
|
|
22184
22456
|
getMonthStart(currentDate) {
|
|
22185
|
-
const
|
|
22186
|
-
const
|
|
22187
|
-
|
|
22457
|
+
const useDisplayDate = this.parent.currentView === 'Month' && !isNullOrUndefined(this.parent.activeViewOptions.displayDate) && (this.parent.uiStateValues.isCustomMonth || this.isCustomRange());
|
|
22458
|
+
const date = useDisplayDate ? this.parent.activeViewOptions.displayDate : !(this.parent.uiStateValues.isCustomMonth ||
|
|
22459
|
+
this.isCustomRange()) && this.isCustomMonth() ? currentDate : this.parent.calendarUtil.firstDateOfMonth(currentDate);
|
|
22460
|
+
const monthStart = getWeekFirstDate(date, this.parent.activeViewOptions.firstDayOfWeek);
|
|
22461
|
+
return new Date(monthStart.getFullYear(), monthStart.getMonth(), monthStart.getDate());
|
|
22188
22462
|
}
|
|
22189
22463
|
getMonthEnd(currentDate) {
|
|
22190
|
-
|
|
22191
|
-
|
|
22192
|
-
|
|
22193
|
-
|
|
22464
|
+
if (this.isCustomMonth()) {
|
|
22465
|
+
const start = this.getMonthStart(currentDate);
|
|
22466
|
+
const numberOfDays = WEEK_LENGTH * (this.parent.activeViewOptions.numberOfWeeks > 0 ?
|
|
22467
|
+
this.parent.activeViewOptions.numberOfWeeks : DEFAULT_WEEKS);
|
|
22468
|
+
return addDays(start, (numberOfDays - 1));
|
|
22469
|
+
}
|
|
22470
|
+
else {
|
|
22471
|
+
const endDate = addMonths(currentDate, this.parent.activeViewOptions.interval - 1);
|
|
22472
|
+
const lastWeekOfMonth = getWeekFirstDate(this.parent.calendarUtil.lastDateOfMonth(endDate), this.parent.activeViewOptions.firstDayOfWeek);
|
|
22473
|
+
return addDays(lastWeekOfMonth, WEEK_LENGTH - 1);
|
|
22474
|
+
}
|
|
22475
|
+
}
|
|
22476
|
+
isCustomRange() {
|
|
22477
|
+
const dates = this.parent.getCurrentViewDates();
|
|
22478
|
+
if (dates && dates.length > 0) {
|
|
22479
|
+
const selectedTime = resetTime(this.parent.selectedDate).getTime();
|
|
22480
|
+
return !(selectedTime >= getWeekFirstDate(dates[0], this.parent.activeViewOptions.firstDayOfWeek).getTime() &&
|
|
22481
|
+
selectedTime <= addDays(getWeekFirstDate(dates[dates.length - 1], this.parent.activeViewOptions.firstDayOfWeek), 6).getTime());
|
|
22482
|
+
}
|
|
22483
|
+
return false;
|
|
22194
22484
|
}
|
|
22195
22485
|
getRenderDates(workDays) {
|
|
22196
22486
|
const renderDates = [];
|
|
@@ -22220,34 +22510,57 @@ class Month extends ViewBase {
|
|
|
22220
22510
|
return renderDates;
|
|
22221
22511
|
}
|
|
22222
22512
|
getNextPreviousDate(type) {
|
|
22223
|
-
if (
|
|
22224
|
-
|
|
22513
|
+
if (this.isCustomMonth()) {
|
|
22514
|
+
const dates = this.parent.getCurrentViewDates();
|
|
22515
|
+
const date = getWeekFirstDate(type === 'next' ? dates[dates.length - 1]
|
|
22516
|
+
: dates[0], this.parent.activeViewOptions.firstDayOfWeek);
|
|
22517
|
+
return addDays(date, type === 'next' ? WEEK_LENGTH : -(this.parent.activeViewOptions.numberOfWeeks > 0 ?
|
|
22518
|
+
this.parent.activeViewOptions.numberOfWeeks : DEFAULT_WEEKS) * WEEK_LENGTH);
|
|
22225
22519
|
}
|
|
22226
22520
|
else {
|
|
22227
|
-
return addMonths(this.parent.selectedDate, -
|
|
22521
|
+
return addMonths(this.parent.selectedDate, ((type === 'next' ? 1 : -1) * this.parent.activeViewOptions.interval));
|
|
22228
22522
|
}
|
|
22229
22523
|
}
|
|
22524
|
+
getStartDate() {
|
|
22525
|
+
return this.getMonthStart(this.parent.selectedDate);
|
|
22526
|
+
}
|
|
22527
|
+
getEndDate() {
|
|
22528
|
+
return this.getMonthEnd(this.parent.selectedDate);
|
|
22529
|
+
}
|
|
22230
22530
|
getEndDateFromStartDate(start) {
|
|
22231
22531
|
return addDays(new Date(start.getTime()), 1);
|
|
22232
22532
|
}
|
|
22233
22533
|
getDateRangeText() {
|
|
22234
22534
|
if (this.parent.isAdaptive || isNullOrUndefined(this.parent.activeViewOptions.dateFormat)) {
|
|
22235
|
-
|
|
22236
|
-
|
|
22237
|
-
|
|
22238
|
-
|
|
22535
|
+
let startDate = this.parent.selectedDate;
|
|
22536
|
+
let endDate;
|
|
22537
|
+
let updateCustomRange = false;
|
|
22538
|
+
if (this.isCustomMonth()) {
|
|
22539
|
+
const dates = this.parent.getCurrentViewDates();
|
|
22540
|
+
updateCustomRange = dates[0].getMonth() !== dates[dates.length - 1].getMonth() ||
|
|
22541
|
+
dates[0].getFullYear() !== dates[dates.length - 1].getFullYear();
|
|
22542
|
+
if (updateCustomRange) {
|
|
22543
|
+
startDate = dates[0];
|
|
22544
|
+
endDate = dates[dates.length - 1];
|
|
22545
|
+
}
|
|
22546
|
+
}
|
|
22547
|
+
const isUpdateDateRange = (this.parent.currentView !== 'Month' || !this.isCustomMonth());
|
|
22548
|
+
if (this.parent.activeViewOptions.interval > 1 && isUpdateDateRange || updateCustomRange) {
|
|
22549
|
+
endDate = endDate ? endDate : addMonths(lastDateOfMonth(startDate), this.parent.activeViewOptions.interval - 1);
|
|
22550
|
+
if (startDate.getFullYear() === endDate.getFullYear()) {
|
|
22551
|
+
const monthNames = (this.parent.globalize.formatDate(startDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' - ' +
|
|
22239
22552
|
(this.parent.globalize.formatDate(endDate, { format: 'MMMM ', calendar: this.parent.getCalendarMode() })) +
|
|
22240
22553
|
this.parent.globalize.formatDate(endDate, { skeleton: 'y', calendar: this.parent.getCalendarMode() });
|
|
22241
22554
|
return capitalizeFirstWord(monthNames, 'single');
|
|
22242
22555
|
}
|
|
22243
|
-
const text = (this.parent.globalize.formatDate(
|
|
22244
|
-
|
|
22556
|
+
const text = (this.parent.globalize.formatDate(startDate, { format: 'MMMM', calendar: this.parent.getCalendarMode() })) + ' ' +
|
|
22557
|
+
startDate.getFullYear() + ' - ' +
|
|
22245
22558
|
this.parent.globalize.formatDate(endDate, { format: 'MMMM ', calendar: this.parent.getCalendarMode() }) +
|
|
22246
22559
|
this.parent.globalize.formatDate(endDate, { skeleton: 'y', calendar: this.parent.getCalendarMode() });
|
|
22247
22560
|
return capitalizeFirstWord(text, 'single');
|
|
22248
22561
|
}
|
|
22249
22562
|
const format = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';
|
|
22250
|
-
return capitalizeFirstWord(this.parent.globalize.formatDate(
|
|
22563
|
+
return capitalizeFirstWord(this.parent.globalize.formatDate(startDate, { format: format, calendar: this.parent.getCalendarMode() }), 'single');
|
|
22251
22564
|
}
|
|
22252
22565
|
return this.formatDateRange(this.parent.selectedDate);
|
|
22253
22566
|
}
|
|
@@ -22272,6 +22585,10 @@ class Month extends ViewBase {
|
|
|
22272
22585
|
EventHandler.remove(contentScrollableEle, 'scroll', this.onContentScroll);
|
|
22273
22586
|
}
|
|
22274
22587
|
}
|
|
22588
|
+
isCustomMonth() {
|
|
22589
|
+
return this.parent.currentView === 'Month' &&
|
|
22590
|
+
(!isNullOrUndefined(this.parent.activeViewOptions.displayDate) || this.parent.activeViewOptions.numberOfWeeks > 0);
|
|
22591
|
+
}
|
|
22275
22592
|
getModuleName() {
|
|
22276
22593
|
return 'month';
|
|
22277
22594
|
}
|
|
@@ -22503,12 +22820,29 @@ class Year extends ViewBase {
|
|
|
22503
22820
|
return Array.apply(null, { length: this.parent.activeViewOptions.monthsCount }).map((value, index) => this.parent.firstMonthOfYear + index);
|
|
22504
22821
|
}
|
|
22505
22822
|
onCellClick(e) {
|
|
22506
|
-
|
|
22823
|
+
let target = closest(e.target, '.' + WORK_CELLS_CLASS);
|
|
22507
22824
|
const startDate = this.parent.getDateFromElement(target);
|
|
22508
|
-
|
|
22509
|
-
const
|
|
22510
|
-
|
|
22511
|
-
|
|
22825
|
+
this.parent.activeCellsData = this.parent.getCellDetails(target);
|
|
22826
|
+
const isPrevious = startDate.getTime() < this.getStartDate().getTime();
|
|
22827
|
+
if (isPrevious || startDate.getTime() > this.getEndDate().getTime()) {
|
|
22828
|
+
this.parent.changeDate(this.parent.activeView.getNextPreviousDate(isPrevious ? 'previous' : 'next'), e);
|
|
22829
|
+
const activeDate = this.parent.activeCellsData.startTime.getTime();
|
|
22830
|
+
const inRange = activeDate >= this.getStartDate().getTime() && activeDate <= this.getEndDate().getTime();
|
|
22831
|
+
const dateAttr = inRange ? activeDate : (isPrevious ? this.getEndDate() : this.getStartDate()).getTime();
|
|
22832
|
+
const selectedCell = this.parent.element.querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + dateAttr + '"]');
|
|
22833
|
+
this.parent.selectCell(selectedCell);
|
|
22834
|
+
this.parent.activeCellsData = this.parent.getCellDetails(selectedCell);
|
|
22835
|
+
}
|
|
22836
|
+
else {
|
|
22837
|
+
const endDate = addDays(new Date(startDate.getTime()), 1);
|
|
22838
|
+
const filteredEvents = this.parent.eventBase.filterEvents(startDate, endDate);
|
|
22839
|
+
const moreEventArgs = { date: startDate, event: filteredEvents, element: e.target };
|
|
22840
|
+
if (target.classList.contains(OTHERMONTH_CLASS)) {
|
|
22841
|
+
target = this.parent.element.querySelector(':not(.' + OTHERMONTH_CLASS + ')[data-date="' + target.getAttribute('data-date') + '"]');
|
|
22842
|
+
}
|
|
22843
|
+
this.parent.activeCellsData = this.parent.getCellDetails(target);
|
|
22844
|
+
this.parent.quickPopup.moreEventClick(moreEventArgs, endDate);
|
|
22845
|
+
}
|
|
22512
22846
|
}
|
|
22513
22847
|
onContentScroll(e) {
|
|
22514
22848
|
const target = e.target;
|
|
@@ -22560,10 +22894,10 @@ class Year extends ViewBase {
|
|
|
22560
22894
|
return addDays(addMonths(this.getStartDate(), this.parent.monthsCount), -1);
|
|
22561
22895
|
}
|
|
22562
22896
|
startDate() {
|
|
22563
|
-
return getWeekFirstDate(this.getStartDate(), this.parent.firstDayOfWeek);
|
|
22897
|
+
return this.parent.currentView === 'Year' ? getWeekFirstDate(this.getStartDate(), this.parent.firstDayOfWeek) : this.getStartDate();
|
|
22564
22898
|
}
|
|
22565
22899
|
endDate() {
|
|
22566
|
-
return addDays(getWeekLastDate(this.getEndDate(), this.parent.firstDayOfWeek), 1);
|
|
22900
|
+
return this.parent.currentView === 'Year' ? addDays(getWeekLastDate(this.getEndDate(), this.parent.firstDayOfWeek), 1) : this.getEndDate();
|
|
22567
22901
|
}
|
|
22568
22902
|
getEndDateFromStartDate(start) {
|
|
22569
22903
|
let date = new Date(start.getTime());
|
|
@@ -22606,6 +22940,7 @@ class Year extends ViewBase {
|
|
|
22606
22940
|
EventHandler.add(element, 'click', this.onCellClick, this);
|
|
22607
22941
|
}
|
|
22608
22942
|
else {
|
|
22943
|
+
EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);
|
|
22609
22944
|
EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);
|
|
22610
22945
|
if (!this.parent.isAdaptive) {
|
|
22611
22946
|
EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);
|
|
@@ -23042,7 +23377,8 @@ class Agenda extends AgendaBase {
|
|
|
23042
23377
|
for (const event of this.parent.eventsData) {
|
|
23043
23378
|
delete event.generatedDates;
|
|
23044
23379
|
}
|
|
23045
|
-
let eventCollection =
|
|
23380
|
+
let eventCollection = this.parent.activeViewOptions.allowVirtualScrolling ?
|
|
23381
|
+
args.processedData : this.parent.eventsProcessed;
|
|
23046
23382
|
if (this.parent.uiStateValues.isGroupAdaptive) {
|
|
23047
23383
|
const resource = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];
|
|
23048
23384
|
this.dataSource = this.parent.eventBase.filterEventsByResource(resource, this.dataSource);
|
|
@@ -23145,6 +23481,7 @@ class Agenda extends AgendaBase {
|
|
|
23145
23481
|
const filterData = this.appointmentFiltering(agendaDate);
|
|
23146
23482
|
const nTr = this.createTableRowElement(agendaDate, 'data');
|
|
23147
23483
|
if (this.element.querySelector('tr[aria-rowindex="' + parseInt(nTr.getAttribute('aria-rowindex'), 10) + '"]')) {
|
|
23484
|
+
agendaDate = addDays(agendaDate, 1);
|
|
23148
23485
|
continue;
|
|
23149
23486
|
}
|
|
23150
23487
|
const dTd = nTr.children[0];
|
|
@@ -24090,6 +24427,9 @@ class TimelineYear extends Year {
|
|
|
24090
24427
|
tr.appendChild(leftHeaderCells);
|
|
24091
24428
|
leftHeaderCells.appendChild(this.renderResourceHeader(LEFT_INDENT_WRAP_CLASS));
|
|
24092
24429
|
}
|
|
24430
|
+
const isHorizontal = this.parent.activeViewOptions.orientation === 'Horizontal';
|
|
24431
|
+
const isGroup = this.parent.activeViewOptions.group.resources.length > 0;
|
|
24432
|
+
this.isInverseTableSelect = isHorizontal && !isGroup ? false : true;
|
|
24093
24433
|
const td = createElement('td');
|
|
24094
24434
|
tr.appendChild(td);
|
|
24095
24435
|
const container = createElement('div', { className: DATE_HEADER_CONTAINER_CLASS });
|
|
@@ -24767,8 +25107,8 @@ class ExcelExport {
|
|
|
24767
25107
|
constructor(parent) {
|
|
24768
25108
|
this.parent = parent;
|
|
24769
25109
|
}
|
|
24770
|
-
initializeExcelExport(excelExportOptions) {
|
|
24771
|
-
const
|
|
25110
|
+
initializeExcelExport(excelExportOptions = {}) {
|
|
25111
|
+
const exportColumns = this.getExportColumns(excelExportOptions);
|
|
24772
25112
|
const exportName = excelExportOptions.fileName || 'Schedule';
|
|
24773
25113
|
const exportType = excelExportOptions.exportType || 'xlsx';
|
|
24774
25114
|
const isIncludeOccurrences = excelExportOptions.includeOccurrences || false;
|
|
@@ -24780,34 +25120,40 @@ class ExcelExport {
|
|
|
24780
25120
|
else {
|
|
24781
25121
|
eventCollection = !isIncludeOccurrences ? this.parent.eventsData : this.parent.eventsProcessed;
|
|
24782
25122
|
}
|
|
24783
|
-
this.processWorkbook(
|
|
25123
|
+
this.processWorkbook(exportColumns, exportName, exportType, eventCollection);
|
|
24784
25124
|
}
|
|
24785
25125
|
processWorkbook(fields, name, type, eventCollection) {
|
|
24786
25126
|
const columns = [];
|
|
24787
25127
|
const rows = [];
|
|
24788
25128
|
const columnHeader = [];
|
|
24789
|
-
fields.forEach((field, i) => columns.push({ index: i + 1, width: (field === 'Id' ?
|
|
25129
|
+
fields.forEach((field, i) => { columns.push({ index: i + 1, width: (field.name === 'Id' ? 50 : 150) }); });
|
|
24790
25130
|
const style = { fontSize: 12, borders: { color: '#E0E0E0' }, bold: true };
|
|
24791
|
-
fields.forEach((field, i) => columnHeader.push({ index: i + 1, value: field, style: style }));
|
|
25131
|
+
fields.forEach((field, i) => { columnHeader.push({ index: i + 1, value: field.text, style: style }); });
|
|
24792
25132
|
rows.push({ index: 1, cells: columnHeader });
|
|
24793
|
-
|
|
24794
|
-
for (const event of eventCollection) {
|
|
25133
|
+
eventCollection.forEach((event, i) => {
|
|
24795
25134
|
const columnData = [];
|
|
24796
25135
|
fields.forEach((field, n) => {
|
|
24797
|
-
let columnRule = { index: n + 1, value: event[field] || '' };
|
|
24798
|
-
if (field === this.parent.eventFields.startTime || field === this.parent.eventFields.endTime) {
|
|
25136
|
+
let columnRule = { index: n + 1, value: event[field.name] || '' };
|
|
25137
|
+
if (field.name === this.parent.eventFields.startTime || field.name === this.parent.eventFields.endTime) {
|
|
24799
25138
|
const styleRule = { fontSize: 12, numberFormat: 'm/d/yyyy h:mm AM/PM' };
|
|
24800
25139
|
columnRule = extend({}, columnRule, { style: styleRule }, true);
|
|
24801
25140
|
}
|
|
24802
25141
|
columnData.push(columnRule);
|
|
24803
25142
|
});
|
|
24804
|
-
rows.push({ index: i, cells: columnData });
|
|
24805
|
-
|
|
24806
|
-
}
|
|
25143
|
+
rows.push({ index: i + 2, cells: columnData });
|
|
25144
|
+
});
|
|
24807
25145
|
const workSheet = [{ columns: columns, rows: rows }];
|
|
24808
25146
|
const book = new Workbook({ worksheets: workSheet }, type, this.parent.locale);
|
|
24809
25147
|
book.save(name + '.' + type);
|
|
24810
25148
|
}
|
|
25149
|
+
getExportColumns(exportOptions) {
|
|
25150
|
+
const exportColumns = exportOptions.fieldsInfo || [];
|
|
25151
|
+
if (exportColumns.length === 0) {
|
|
25152
|
+
const fields = exportOptions.fields || Object.keys(this.parent.eventFields).map((field) => this.parent.eventFields[field]);
|
|
25153
|
+
fields.forEach((field) => { exportColumns.push({ name: field, text: field }); });
|
|
25154
|
+
}
|
|
25155
|
+
return exportColumns;
|
|
25156
|
+
}
|
|
24811
25157
|
getModuleName() {
|
|
24812
25158
|
return 'excelExport';
|
|
24813
25159
|
}
|
|
@@ -24952,5 +25298,5 @@ class Print {
|
|
|
24952
25298
|
* Export Schedule components
|
|
24953
25299
|
*/
|
|
24954
25300
|
|
|
24955
|
-
export { Schedule, cellClick, cellDoubleClick, moreEventsClick, select, hover, actionBegin, actionComplete, actionFailure, navigating, renderCell, eventClick, eventRendered, dataBinding, dataBound, popupOpen, popupClose, dragStart, drag, dragStop, resizeStart, resizing, resizeStop, inlineClick, initialLoad, initialEnd, print$1 as print, dataReady, eventsLoaded, contentReady, scroll, virtualScroll, scrollUiUpdate, uiUpdate, documentClick, cellMouseDown, WEEK_LENGTH, MS_PER_DAY, MS_PER_MINUTE, getElementHeightFromClass, getTranslateY, getWeekFirstDate, getWeekLastDate, firstDateOfMonth, lastDateOfMonth, getWeekNumber, getWeekMiddleDate, setTime, resetTime, getDateInMs, getDateCount, addDays, addMonths, addYears, getStartEndHours, getMaxDays, getDaysCount, getDateFromString, getScrollBarWidth, findIndexInData, getOuterHeight, removeChildren, isDaylightSavingTime, getUniversalTime, isMobile, isIPadDevice, capitalizeFirstWord, Resize, DragAndDrop, HeaderRenderer, ViewBase, Day, Week, WorkWeek, Month, Year, Agenda, MonthAgenda, TimelineViews, TimelineMonth, TimelineYear, Timezone, timezoneData, ICalendarExport, ICalendarImport, ExcelExport, Print, RecurrenceEditor, generateSummary, generate, getDateFromRecurrenceDateString, extractObjectFromRule, getCalendarUtil, getRecurrenceStringFromDate, Gregorian, Islamic };
|
|
25301
|
+
export { Schedule, cellClick, cellDoubleClick, moreEventsClick, select, hover, actionBegin, actionComplete, actionFailure, navigating, renderCell, eventClick, eventRendered, dataBinding, dataBound, popupOpen, popupClose, dragStart, drag, dragStop, resizeStart, resizing, resizeStop, inlineClick, initialLoad, initialEnd, print$1 as print, dataReady, eventsLoaded, contentReady, scroll, virtualScroll, scrollUiUpdate, uiUpdate, documentClick, cellMouseDown, WEEK_LENGTH, DEFAULT_WEEKS, MS_PER_DAY, MS_PER_MINUTE, getElementHeightFromClass, getTranslateY, getWeekFirstDate, getWeekLastDate, firstDateOfMonth, lastDateOfMonth, getWeekNumber, getWeekMiddleDate, setTime, resetTime, getDateInMs, getDateCount, addDays, addMonths, addYears, getStartEndHours, getMaxDays, getDaysCount, getDateFromString, getScrollBarWidth, findIndexInData, getOuterHeight, removeChildren, isDaylightSavingTime, getUniversalTime, isMobile, isIPadDevice, capitalizeFirstWord, Resize, DragAndDrop, HeaderRenderer, ViewBase, Day, Week, WorkWeek, Month, Year, Agenda, MonthAgenda, TimelineViews, TimelineMonth, TimelineYear, Timezone, timezoneData, ICalendarExport, ICalendarImport, ExcelExport, Print, RecurrenceEditor, generateSummary, generate, getDateFromRecurrenceDateString, extractObjectFromRule, getCalendarUtil, getRecurrenceStringFromDate, Gregorian, Islamic };
|
|
24956
25302
|
//# sourceMappingURL=ej2-schedule.es2015.js.map
|