@syncfusion/ej2-schedule 20.2.50 → 20.3.49
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 +22 -0
- package/dist/ej2-schedule.min.js +10 -0
- 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 +617 -217
- package/dist/es6/ej2-schedule.es2015.js.map +1 -1
- package/dist/es6/ej2-schedule.es5.js +636 -229
- 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 +16 -16
- package/src/recurrence-editor/recurrence-editor-model.d.ts +1 -1
- package/src/recurrence-editor/recurrence-editor.d.ts +1 -0
- package/src/recurrence-editor/recurrence-editor.js +37 -10
- package/src/schedule/actions/action-base.js +5 -3
- package/src/schedule/actions/crud.js +1 -2
- package/src/schedule/actions/drag.js +18 -15
- package/src/schedule/actions/resize.js +1 -3
- package/src/schedule/actions/touch.js +2 -2
- package/src/schedule/actions/virtual-scroll.d.ts +12 -3
- package/src/schedule/actions/virtual-scroll.js +206 -54
- package/src/schedule/base/interface.d.ts +2 -1
- package/src/schedule/base/resource.d.ts +1 -0
- package/src/schedule/base/resource.js +12 -1
- package/src/schedule/base/schedule-model.d.ts +7 -0
- package/src/schedule/base/schedule.d.ts +13 -0
- package/src/schedule/base/schedule.js +13 -4
- package/src/schedule/base/util.d.ts +15 -0
- package/src/schedule/base/util.js +29 -3
- package/src/schedule/event-renderer/agenda-base.js +3 -5
- package/src/schedule/event-renderer/event-base.d.ts +2 -1
- package/src/schedule/event-renderer/event-base.js +30 -3
- package/src/schedule/event-renderer/month.d.ts +1 -0
- package/src/schedule/event-renderer/month.js +8 -6
- package/src/schedule/event-renderer/vertical-view.d.ts +3 -0
- package/src/schedule/event-renderer/vertical-view.js +32 -12
- package/src/schedule/event-renderer/year.js +1 -1
- package/src/schedule/exports/calendar-import.js +5 -0
- package/src/schedule/popups/event-window.d.ts +1 -0
- package/src/schedule/popups/event-window.js +35 -7
- package/src/schedule/popups/quick-popups.js +18 -5
- package/src/schedule/renderer/agenda.js +1 -0
- package/src/schedule/renderer/month.js +25 -6
- package/src/schedule/renderer/renderer.js +8 -2
- package/src/schedule/renderer/timeline-view.js +2 -2
- package/src/schedule/renderer/timeline-year.d.ts +1 -0
- package/src/schedule/renderer/timeline-year.js +20 -12
- package/src/schedule/renderer/vertical-view.d.ts +1 -1
- package/src/schedule/renderer/vertical-view.js +48 -44
- package/src/schedule/renderer/view-base.d.ts +2 -0
- package/src/schedule/renderer/view-base.js +31 -1
- package/src/schedule/renderer/year.d.ts +1 -1
- package/src/schedule/renderer/year.js +49 -30
- package/styles/bootstrap-dark.css +50 -33
- package/styles/bootstrap.css +50 -33
- package/styles/bootstrap4.css +50 -33
- package/styles/bootstrap5-dark.css +51 -38
- package/styles/bootstrap5.css +51 -38
- package/styles/fabric-dark.css +50 -33
- package/styles/fabric.css +50 -33
- package/styles/fluent-dark.css +52 -39
- package/styles/fluent.css +52 -39
- package/styles/highcontrast-light.css +50 -33
- package/styles/highcontrast.css +50 -33
- package/styles/material-dark.css +50 -33
- package/styles/material.css +50 -33
- package/styles/recurrence-editor/_all.scss +1 -1
- package/styles/recurrence-editor/_bootstrap-dark-definition.scss +1 -3
- package/styles/recurrence-editor/_bootstrap-definition.scss +1 -3
- package/styles/recurrence-editor/_bootstrap4-definition.scss +1 -3
- package/styles/recurrence-editor/_bootstrap5-definition.scss +1 -3
- package/styles/recurrence-editor/_fabric-dark-definition.scss +1 -4
- package/styles/recurrence-editor/_fabric-definition.scss +1 -3
- package/styles/recurrence-editor/_fluent-definition.scss +1 -3
- package/styles/recurrence-editor/_fusionnew-definition.scss +1 -3
- package/styles/recurrence-editor/_highcontrast-definition.scss +1 -3
- package/styles/recurrence-editor/_highcontrast-light-definition.scss +1 -3
- package/styles/recurrence-editor/_layout.scss +28 -38
- package/styles/recurrence-editor/_material-dark-definition.scss +1 -3
- package/styles/recurrence-editor/_material-definition.scss +1 -3
- package/styles/recurrence-editor/_material3-definition.scss +1 -3
- package/styles/recurrence-editor/_tailwind-definition.scss +1 -3
- package/styles/recurrence-editor/bootstrap-dark.css +21 -27
- package/styles/recurrence-editor/bootstrap.css +21 -27
- package/styles/recurrence-editor/bootstrap4.css +21 -27
- package/styles/recurrence-editor/bootstrap5-dark.css +21 -27
- package/styles/recurrence-editor/bootstrap5.css +21 -27
- package/styles/recurrence-editor/fabric-dark.css +21 -27
- package/styles/recurrence-editor/fabric.css +21 -27
- package/styles/recurrence-editor/fluent-dark.css +21 -27
- package/styles/recurrence-editor/fluent.css +21 -27
- package/styles/recurrence-editor/highcontrast-light.css +21 -27
- package/styles/recurrence-editor/highcontrast.css +21 -27
- package/styles/recurrence-editor/material-dark.css +21 -27
- package/styles/recurrence-editor/material.css +21 -27
- package/styles/recurrence-editor/tailwind-dark.css +21 -27
- package/styles/recurrence-editor/tailwind.css +21 -27
- package/styles/schedule/_all.scss +1 -1
- package/styles/schedule/_bootstrap4-definition.scss +0 -1
- package/styles/schedule/_bootstrap5-definition.scss +1 -1
- package/styles/schedule/_fusionnew-definition.scss +1 -1
- package/styles/schedule/_layout.scss +57 -32
- package/styles/schedule/_material3-definition.scss +1 -1
- package/styles/schedule/_theme.scss +12 -10
- package/styles/schedule/bootstrap-dark.css +29 -6
- package/styles/schedule/bootstrap.css +29 -6
- package/styles/schedule/bootstrap4.css +29 -6
- package/styles/schedule/bootstrap5-dark.css +30 -11
- package/styles/schedule/bootstrap5.css +30 -11
- package/styles/schedule/fabric-dark.css +29 -6
- package/styles/schedule/fabric.css +29 -6
- package/styles/schedule/fluent-dark.css +31 -12
- package/styles/schedule/fluent.css +31 -12
- package/styles/schedule/highcontrast-light.css +29 -6
- package/styles/schedule/highcontrast.css +29 -6
- package/styles/schedule/icons/_bootstrap5.scss +0 -1
- package/styles/schedule/icons/_fluent.scss +0 -1
- package/styles/schedule/icons/_fusionnew.scss +0 -1
- package/styles/schedule/icons/_material3.scss +0 -1
- package/styles/schedule/icons/_tailwind.scss +0 -1
- package/styles/schedule/material-dark.css +29 -6
- package/styles/schedule/material.css +29 -6
- package/styles/schedule/tailwind-dark.css +29 -6
- package/styles/schedule/tailwind.css +29 -6
- package/styles/tailwind-dark.css +50 -33
- package/styles/tailwind.css +50 -33
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { append, addClass, remove, isNullOrUndefined, setStyleAttribute, createElement } from '@syncfusion/ej2-base';
|
|
1
|
+
import { append, addClass, remove, isNullOrUndefined, setStyleAttribute, createElement, prepend } from '@syncfusion/ej2-base';
|
|
2
2
|
import * as events from '../base/constant';
|
|
3
3
|
import * as cls from '../base/css-constant';
|
|
4
4
|
import * as util from '../base/util';
|
|
@@ -12,7 +12,7 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
12
12
|
this.bufferCount = 3;
|
|
13
13
|
this.renderedLength = 0;
|
|
14
14
|
this.averageRowHeight = 0;
|
|
15
|
-
this.
|
|
15
|
+
this.startIndex = 0;
|
|
16
16
|
this.parent = parent;
|
|
17
17
|
this.addEventListener();
|
|
18
18
|
}
|
|
@@ -30,39 +30,19 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
30
30
|
};
|
|
31
31
|
VirtualScroll.prototype.getRenderedCount = function () {
|
|
32
32
|
this.setItemSize();
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);
|
|
37
|
-
var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);
|
|
38
|
-
var eventWrap = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);
|
|
39
|
-
var timeIndicator = this.parent.element.querySelector('.' + cls.CURRENT_TIMELINE_CLASS);
|
|
40
|
-
this.renderVirtualTrackHeight(conWrap, resWrap);
|
|
41
|
-
this.setTranslate(resWrap, conWrap, eventWrap, timeIndicator);
|
|
42
|
-
};
|
|
43
|
-
VirtualScroll.prototype.renderVirtualTrackHeight = function (contentWrap, resourceWrap) {
|
|
44
|
-
this.parent.resourceBase.setExpandedResources();
|
|
45
|
-
if (this.isScrollHeightNull) {
|
|
46
|
-
var wrap = createElement('div', { className: cls.VIRTUAL_TRACK_CLASS });
|
|
47
|
-
var resWrap = [].slice.call((resourceWrap).querySelectorAll('table td'));
|
|
48
|
-
var startIndex_1 = parseInt(resWrap[0].getAttribute('data-group-index'), 10);
|
|
49
|
-
var endIndex_1 = parseInt(resWrap[resWrap.length - 1].getAttribute('data-group-index'), 10);
|
|
50
|
-
this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources.filter(function (resource) {
|
|
51
|
-
return (resource.groupIndex >= startIndex_1 && resource.groupIndex <= endIndex_1);
|
|
52
|
-
});
|
|
53
|
-
this.setItemSize();
|
|
54
|
-
wrap.style.height = (this.parent.resourceBase.expandedResources.length * this.itemSize) + 'px';
|
|
55
|
-
this.isScrollHeightNull = false;
|
|
56
|
-
var virtual = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);
|
|
57
|
-
if (!isNullOrUndefined(virtual)) {
|
|
58
|
-
remove(virtual);
|
|
59
|
-
}
|
|
60
|
-
contentWrap.appendChild(wrap);
|
|
61
|
-
}
|
|
33
|
+
var containerSize = this.isHorizontalScroll ? this.parent.element.clientWidth : this.parent.element.clientHeight;
|
|
34
|
+
this.renderedLength = Math.ceil(containerSize / this.itemSize) + this.bufferCount;
|
|
35
|
+
return this.renderedLength;
|
|
62
36
|
};
|
|
63
37
|
VirtualScroll.prototype.renderVirtualTrack = function (contentWrap) {
|
|
64
38
|
var wrap = createElement('div', { className: cls.VIRTUAL_TRACK_CLASS });
|
|
65
|
-
|
|
39
|
+
if (this.isHorizontalScroll) {
|
|
40
|
+
var colCount = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1].length;
|
|
41
|
+
wrap.style.width = (colCount * this.itemSize) + 'px';
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
wrap.style.height = (this.parent.resourceBase.expandedResources.length * this.itemSize) + 'px';
|
|
45
|
+
}
|
|
66
46
|
contentWrap.appendChild(wrap);
|
|
67
47
|
};
|
|
68
48
|
VirtualScroll.prototype.updateVirtualScrollHeight = function () {
|
|
@@ -100,12 +80,19 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
100
80
|
}
|
|
101
81
|
};
|
|
102
82
|
VirtualScroll.prototype.setItemSize = function () {
|
|
103
|
-
|
|
83
|
+
if (this.isHorizontalScroll) {
|
|
84
|
+
this.itemSize = util.getElementWidthFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.itemSize = util.getElementHeightFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;
|
|
88
|
+
}
|
|
104
89
|
};
|
|
105
90
|
VirtualScroll.prototype.renderEvents = function () {
|
|
106
91
|
this.setTabIndex();
|
|
107
92
|
this.parent.refreshEvents(false);
|
|
108
|
-
this.parent.
|
|
93
|
+
if (this.parent.currentView !== 'Month') {
|
|
94
|
+
this.parent.notify(events.contentReady, {});
|
|
95
|
+
}
|
|
109
96
|
this.parent.hideSpinner();
|
|
110
97
|
};
|
|
111
98
|
VirtualScroll.prototype.virtualScrolling = function () {
|
|
@@ -114,31 +101,64 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
114
101
|
this.parent.quickPopup.quickPopupHide();
|
|
115
102
|
this.parent.quickPopup.morePopup.hide();
|
|
116
103
|
}
|
|
117
|
-
var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);
|
|
118
104
|
var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
105
|
+
if (this.isHorizontalScroll) {
|
|
106
|
+
this.horizontalScrolling(conWrap);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);
|
|
110
|
+
var eventWrap = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);
|
|
111
|
+
var timeIndicator = this.parent.element.querySelector('.' + cls.CURRENT_TIMELINE_CLASS);
|
|
112
|
+
var conTable = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);
|
|
113
|
+
addClass([conWrap], 'e-transition');
|
|
114
|
+
this.renderedLength = resWrap.querySelector('tbody').children.length;
|
|
115
|
+
var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);
|
|
116
|
+
var scrollHeight = this.parent.rowAutoHeight ?
|
|
117
|
+
(conTable.offsetHeight - conWrap.offsetHeight) : this.bufferCount * this.itemSize;
|
|
118
|
+
var resCollection = [];
|
|
119
|
+
if ((conWrap.scrollTop) - this.translateY < 0) {
|
|
120
|
+
resCollection = this.upScroll(conWrap, firstTDIndex);
|
|
121
|
+
}
|
|
122
|
+
else if (conWrap.scrollTop - this.translateY > scrollHeight) {
|
|
123
|
+
resCollection = this.downScroll(conWrap, firstTDIndex);
|
|
124
|
+
}
|
|
125
|
+
if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {
|
|
126
|
+
this.parent.showSpinner();
|
|
127
|
+
var selectedEle = this.parent.getSelectedElements();
|
|
128
|
+
this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;
|
|
129
|
+
this.updateContent(resWrap, conWrap, eventWrap, resCollection);
|
|
130
|
+
this.setTranslate(resWrap, conWrap, eventWrap, timeIndicator);
|
|
131
|
+
if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj.action === 'drag') {
|
|
132
|
+
this.parent.dragAndDropModule.navigationWrapper();
|
|
133
|
+
}
|
|
134
|
+
window.clearTimeout(this.timeValue);
|
|
135
|
+
this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
VirtualScroll.prototype.horizontalScrolling = function (conWrap) {
|
|
140
|
+
var _this = this;
|
|
127
141
|
var resCollection = [];
|
|
128
|
-
|
|
129
|
-
|
|
142
|
+
var scrollWidth = this.bufferCount * this.itemSize;
|
|
143
|
+
if (Math.abs(conWrap.scrollLeft) - Math.abs(this.translateY) < 0) {
|
|
144
|
+
resCollection = this.leftScroll(conWrap);
|
|
130
145
|
}
|
|
131
|
-
else if (conWrap.
|
|
132
|
-
resCollection = this.
|
|
146
|
+
else if (Math.abs(conWrap.scrollLeft) - Math.abs(this.translateY) > scrollWidth) {
|
|
147
|
+
resCollection = this.rightScroll(conWrap);
|
|
133
148
|
}
|
|
134
149
|
if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {
|
|
135
|
-
this.parent.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
this.
|
|
150
|
+
if (this.parent.resourceBase.expandedResources.length !== resCollection.length ||
|
|
151
|
+
this.parent.resourceBase.expandedResources[0] !== resCollection[0] ||
|
|
152
|
+
this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1] !==
|
|
153
|
+
resCollection[resCollection.length - 1]) {
|
|
154
|
+
this.parent.showSpinner();
|
|
155
|
+
var colLevels = this.parent.activeView.colLevels.slice(0);
|
|
156
|
+
this.updateHorizontalContent(conWrap, resCollection);
|
|
157
|
+
setStyleAttribute(conWrap.querySelector('table'), { transform: "translateX(" + this.translateY + "px)" });
|
|
158
|
+
this.parent.activeView.colLevels = colLevels;
|
|
159
|
+
if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj.action === 'drag') {
|
|
160
|
+
this.parent.dragAndDropModule.navigationWrapper();
|
|
161
|
+
}
|
|
142
162
|
}
|
|
143
163
|
window.clearTimeout(this.timeValue);
|
|
144
164
|
this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);
|
|
@@ -184,6 +204,87 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
184
204
|
this.translateY = conWrap.scrollTop;
|
|
185
205
|
return nextSetCollection;
|
|
186
206
|
};
|
|
207
|
+
VirtualScroll.prototype.leftScroll = function (conWrap) {
|
|
208
|
+
var index = 0;
|
|
209
|
+
index = (~~(Math.abs(conWrap.scrollLeft) / this.itemSize) + Math.ceil(conWrap.clientWidth / this.itemSize)) - this.renderedLength;
|
|
210
|
+
index = (index > 0) ? index : 0;
|
|
211
|
+
return this.getCollection(index, index + this.renderedLength);
|
|
212
|
+
};
|
|
213
|
+
VirtualScroll.prototype.rightScroll = function (conWrap) {
|
|
214
|
+
var lastLevel = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1];
|
|
215
|
+
var nextSetIndex = 0;
|
|
216
|
+
nextSetIndex = ~~(Math.abs(conWrap.scrollLeft) / this.itemSize);
|
|
217
|
+
var lastIndex = nextSetIndex + this.renderedLength;
|
|
218
|
+
lastIndex = (lastIndex > lastLevel.length - 1) ? lastLevel.length - 1 : lastIndex;
|
|
219
|
+
return this.getCollection(lastIndex - this.renderedLength, lastIndex);
|
|
220
|
+
};
|
|
221
|
+
VirtualScroll.prototype.getCollection = function (startIndex, endIndex) {
|
|
222
|
+
this.translateY = startIndex * this.itemSize;
|
|
223
|
+
var lastLevel = this.getResCollection(startIndex, endIndex);
|
|
224
|
+
if (this.parent.enableRtl) {
|
|
225
|
+
this.translateY = -this.translateY;
|
|
226
|
+
}
|
|
227
|
+
return lastLevel;
|
|
228
|
+
};
|
|
229
|
+
VirtualScroll.prototype.getResCollection = function (startIndex, endIndex) {
|
|
230
|
+
var lastLevel = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1];
|
|
231
|
+
var resCollection = [];
|
|
232
|
+
var index = { startIndex: 0, endIndex: 0 };
|
|
233
|
+
if (this.parent.activeViewOptions.group.byDate) {
|
|
234
|
+
if (lastLevel[startIndex].date.getTime() === this.parent.resourceBase.expandedResources[0].date.getTime() &&
|
|
235
|
+
lastLevel[endIndex].date.getTime() ===
|
|
236
|
+
this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].date.getTime()) {
|
|
237
|
+
return this.parent.resourceBase.expandedResources;
|
|
238
|
+
}
|
|
239
|
+
resCollection = this.getByDateCollection(lastLevel[startIndex], lastLevel[endIndex], index);
|
|
240
|
+
this.setRenderedDates(resCollection);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
if (lastLevel[startIndex].groupIndex === this.parent.resourceBase.expandedResources[0].groupIndex &&
|
|
244
|
+
lastLevel[endIndex].groupIndex ===
|
|
245
|
+
this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex) {
|
|
246
|
+
return this.parent.resourceBase.expandedResources;
|
|
247
|
+
}
|
|
248
|
+
resCollection = this.getByIdCollection(lastLevel[startIndex], lastLevel[endIndex], index);
|
|
249
|
+
}
|
|
250
|
+
if (this.parent.currentView !== 'Month') {
|
|
251
|
+
this.startIndex = index.startIndex;
|
|
252
|
+
resCollection = lastLevel.slice(index.startIndex, index.endIndex);
|
|
253
|
+
}
|
|
254
|
+
this.translateY = index.startIndex * this.itemSize;
|
|
255
|
+
return resCollection;
|
|
256
|
+
};
|
|
257
|
+
VirtualScroll.prototype.getByDateCollection = function (firstItem, lastItem, index) {
|
|
258
|
+
var resCollection = this.parent.activeView.colLevels[0].filter(function (data) {
|
|
259
|
+
return firstItem.date.getTime() <= data.date.getTime() &&
|
|
260
|
+
data.date.getTime() <= lastItem.date.getTime();
|
|
261
|
+
});
|
|
262
|
+
this.setStartEndIndex(this.parent.activeView.colLevels[0], resCollection[0], resCollection[resCollection.length - 1], index);
|
|
263
|
+
return resCollection;
|
|
264
|
+
};
|
|
265
|
+
VirtualScroll.prototype.getByIdCollection = function (firstItem, lastItem, index) {
|
|
266
|
+
var resCollection = this.parent.resourceBase.lastResourceLevel.filter(function (data) {
|
|
267
|
+
return firstItem.groupIndex <= data.groupIndex && data.groupIndex <= lastItem.groupIndex;
|
|
268
|
+
});
|
|
269
|
+
this.parent.resourceBase.renderedResources = resCollection;
|
|
270
|
+
this.setStartEndIndex(this.parent.resourceBase.lastResourceLevel, resCollection[0], resCollection[resCollection.length - 1], index);
|
|
271
|
+
return resCollection;
|
|
272
|
+
};
|
|
273
|
+
VirtualScroll.prototype.setStartEndIndex = function (data, firstItem, lastItem, colIndex) {
|
|
274
|
+
var index = 0;
|
|
275
|
+
data.filter(function (data) {
|
|
276
|
+
if (firstItem === data) {
|
|
277
|
+
colIndex.startIndex = index;
|
|
278
|
+
}
|
|
279
|
+
else if (lastItem === data) {
|
|
280
|
+
colIndex.endIndex = index + data.colSpan;
|
|
281
|
+
}
|
|
282
|
+
index += data.colSpan;
|
|
283
|
+
});
|
|
284
|
+
if (firstItem === lastItem) {
|
|
285
|
+
colIndex.endIndex = colIndex.startIndex + lastItem.colSpan;
|
|
286
|
+
}
|
|
287
|
+
};
|
|
187
288
|
VirtualScroll.prototype.updateContent = function (resWrap, conWrap, eventWrap, resCollection) {
|
|
188
289
|
var renderedLength = resWrap.querySelector('tbody').children.length;
|
|
189
290
|
if (document.activeElement && document.activeElement.classList.contains(cls.RESOURCE_CELLS_CLASS)) {
|
|
@@ -203,6 +304,45 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
203
304
|
append(contentRows, conWrap.querySelector('tbody'));
|
|
204
305
|
append(eventRows, eventWrap);
|
|
205
306
|
};
|
|
307
|
+
VirtualScroll.prototype.updateHorizontalContent = function (conWrap, resCollection) {
|
|
308
|
+
this.parent.resourceBase.expandedResources = resCollection;
|
|
309
|
+
var selectedEle = this.parent.getSelectedElements();
|
|
310
|
+
this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;
|
|
311
|
+
var renderedLength = conWrap.querySelectorAll('tbody tr').length;
|
|
312
|
+
for (var i = 0; i < renderedLength; i++) {
|
|
313
|
+
remove(conWrap.querySelector('tbody tr'));
|
|
314
|
+
}
|
|
315
|
+
if (this.parent.currentView === 'Month') {
|
|
316
|
+
if (this.parent.activeViewOptions.group.byDate) {
|
|
317
|
+
this.parent.activeView.colLevels[0] = resCollection;
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 2] = resCollection;
|
|
321
|
+
}
|
|
322
|
+
var contentRows = this.parent.activeView.getContentRows();
|
|
323
|
+
append(contentRows, conWrap.querySelector('tbody'));
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
var col = [].slice.call(conWrap.querySelector('colgroup').children);
|
|
327
|
+
for (var i = 0; i < col.length; i++) {
|
|
328
|
+
remove(col[i]);
|
|
329
|
+
}
|
|
330
|
+
this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1] = resCollection;
|
|
331
|
+
var contentRows = this.parent.activeView.getContentRows();
|
|
332
|
+
var table = conWrap.querySelector('table');
|
|
333
|
+
var thead = conWrap.querySelector('thead');
|
|
334
|
+
var colGroupEle_1 = conWrap.querySelector('colgroup');
|
|
335
|
+
resCollection.forEach(function () {
|
|
336
|
+
colGroupEle_1.appendChild(createElement('col'));
|
|
337
|
+
});
|
|
338
|
+
thead.appendChild(this.parent.eventBase.createEventWrapper('', this.startIndex > 0 ? this.startIndex : 0));
|
|
339
|
+
if (this.parent.activeViewOptions.timeScale.enable) {
|
|
340
|
+
thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));
|
|
341
|
+
}
|
|
342
|
+
prepend([thead], table);
|
|
343
|
+
append(contentRows, conWrap.querySelector('tbody'));
|
|
344
|
+
}
|
|
345
|
+
};
|
|
206
346
|
VirtualScroll.prototype.getBufferCollection = function (startIndex, endIndex) {
|
|
207
347
|
return this.parent.resourceBase.expandedResources.slice(startIndex, endIndex);
|
|
208
348
|
};
|
|
@@ -225,6 +365,17 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
225
365
|
this.focusedEle = null;
|
|
226
366
|
}
|
|
227
367
|
};
|
|
368
|
+
VirtualScroll.prototype.setRenderedDates = function (resCollection) {
|
|
369
|
+
if (this.parent.currentView !== 'Month') {
|
|
370
|
+
var dateCol_1 = resCollection.map(function (x) { return x.date; });
|
|
371
|
+
this.parent.resourceBase.renderedResources.forEach(function (x) { return x.renderDates = dateCol_1; });
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
var dateCol_2 = resCollection.map(function (x) { return x.date.getDay(); });
|
|
375
|
+
var renderDates_1 = this.parent.activeView.renderDates.filter(function (x) { return dateCol_2.indexOf(x.getDay()) >= 0; });
|
|
376
|
+
this.parent.resourceBase.renderedResources.forEach(function (x) { return x.renderDates = renderDates_1; });
|
|
377
|
+
}
|
|
378
|
+
};
|
|
228
379
|
VirtualScroll.prototype.setTabIndex = function () {
|
|
229
380
|
var resColWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);
|
|
230
381
|
var resCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.RESOURCE_CELLS_CLASS));
|
|
@@ -243,6 +394,7 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
243
394
|
};
|
|
244
395
|
VirtualScroll.prototype.destroy = function () {
|
|
245
396
|
this.removeEventListener();
|
|
397
|
+
this.focusedEle = null;
|
|
246
398
|
};
|
|
247
399
|
return VirtualScroll;
|
|
248
400
|
}());
|
|
@@ -284,7 +284,7 @@ export interface ExportOptions {
|
|
|
284
284
|
/**
|
|
285
285
|
* Defines the delimiter for csv file export.
|
|
286
286
|
* By default, csv files are using comma(,) as separator. You can specify this property to change the delimiter in csv file.
|
|
287
|
-
|
|
287
|
+
*/
|
|
288
288
|
separator?: string;
|
|
289
289
|
}
|
|
290
290
|
/** An interface that holds the field name and its header text to export to excel. */
|
|
@@ -421,6 +421,7 @@ export interface IRenderer {
|
|
|
421
421
|
resetColWidth(): void;
|
|
422
422
|
getAdjustedDate?(date: Date): Date;
|
|
423
423
|
viewIndex: number;
|
|
424
|
+
colLevels: TdData[][];
|
|
424
425
|
}
|
|
425
426
|
/** @private */
|
|
426
427
|
export interface EJ2Instance extends HTMLElement {
|
|
@@ -27,6 +27,7 @@ export declare class ResourceBase {
|
|
|
27
27
|
updateVirtualContent(index: number, expand: boolean, e: Event, target: Element): void;
|
|
28
28
|
renderResourceHeader(): void;
|
|
29
29
|
renderResourceTree(): void;
|
|
30
|
+
private resourceTreeCreated;
|
|
30
31
|
private generateTreeData;
|
|
31
32
|
private renderResourceHeaderText;
|
|
32
33
|
private menuClick;
|
|
@@ -332,7 +332,8 @@ var ResourceBase = /** @class */ (function () {
|
|
|
332
332
|
child: 'resourceChild'
|
|
333
333
|
},
|
|
334
334
|
nodeTemplate: this.parent.resourceHeaderTemplate,
|
|
335
|
-
nodeClicked: this.resourceClick.bind(this)
|
|
335
|
+
nodeClicked: this.resourceClick.bind(this),
|
|
336
|
+
created: this.resourceTreeCreated.bind(this)
|
|
336
337
|
});
|
|
337
338
|
this.treeViewObj.appendTo(resourceTree);
|
|
338
339
|
this.treeViewObj.expandAll();
|
|
@@ -349,6 +350,12 @@ var ResourceBase = /** @class */ (function () {
|
|
|
349
350
|
});
|
|
350
351
|
this.parent.on(events.documentClick, this.documentClick, this);
|
|
351
352
|
};
|
|
353
|
+
ResourceBase.prototype.resourceTreeCreated = function () {
|
|
354
|
+
if (this.parent.portals) {
|
|
355
|
+
this.parent.portals = this.parent.portals.concat(this.treeViewObj.portals);
|
|
356
|
+
this.parent.renderTemplates();
|
|
357
|
+
}
|
|
358
|
+
};
|
|
352
359
|
ResourceBase.prototype.generateTreeData = function (isTimeLine) {
|
|
353
360
|
var _this = this;
|
|
354
361
|
var treeCollection = [];
|
|
@@ -991,6 +998,10 @@ var ResourceBase = /** @class */ (function () {
|
|
|
991
998
|
ResourceBase.prototype.destroy = function () {
|
|
992
999
|
this.parent.off(events.documentClick, this.documentClick);
|
|
993
1000
|
if (this.treeViewObj) {
|
|
1001
|
+
if (this.treeViewObj.portals && this.treeViewObj.portals.length > 0) {
|
|
1002
|
+
var treeViewTemplates = this.treeViewObj.portals.map(function (x) { return x.propName; });
|
|
1003
|
+
this.parent.resetTemplates(treeViewTemplates);
|
|
1004
|
+
}
|
|
994
1005
|
this.treeViewObj.destroy();
|
|
995
1006
|
this.treeViewObj = null;
|
|
996
1007
|
}
|
|
@@ -51,6 +51,13 @@ export interface ScheduleModel extends ComponentModel{
|
|
|
51
51
|
*/
|
|
52
52
|
showTimeIndicator?: boolean;
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Defines whether to enable date navigations via swipe in touch devices or not.
|
|
56
|
+
*
|
|
57
|
+
* @default true
|
|
58
|
+
*/
|
|
59
|
+
allowSwiping?: boolean;
|
|
60
|
+
|
|
54
61
|
/**
|
|
55
62
|
* To set the active view on scheduler, the `currentView` property can be used and it usually accepts either of the following available
|
|
56
63
|
* view options. The view option specified in this property will be initially loaded on the schedule.
|
|
@@ -174,6 +174,12 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
|
|
|
174
174
|
* @default true
|
|
175
175
|
*/
|
|
176
176
|
showTimeIndicator: boolean;
|
|
177
|
+
/**
|
|
178
|
+
* Defines whether to enable date navigations via swipe in touch devices or not.
|
|
179
|
+
*
|
|
180
|
+
* @default true
|
|
181
|
+
*/
|
|
182
|
+
allowSwiping: boolean;
|
|
177
183
|
/**
|
|
178
184
|
* To set the active view on scheduler, the `currentView` property can be used and it usually accepts either of the following available
|
|
179
185
|
* view options. The view option specified in this property will be initially loaded on the schedule.
|
|
@@ -1274,6 +1280,13 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
|
|
|
1274
1280
|
* @private
|
|
1275
1281
|
*/
|
|
1276
1282
|
renderHeaderIndentTemplate(data: TdData, td: Element): void;
|
|
1283
|
+
/**
|
|
1284
|
+
* Method to check for refreshing the targeted resource row events.
|
|
1285
|
+
*
|
|
1286
|
+
* @returns {boolean} Returns the boolean value
|
|
1287
|
+
* @private
|
|
1288
|
+
*/
|
|
1289
|
+
isSpecificResourceEvents(): boolean;
|
|
1277
1290
|
private unWireEvents;
|
|
1278
1291
|
/**
|
|
1279
1292
|
* Core method to return the component name.
|
|
@@ -1251,6 +1251,16 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
1251
1251
|
append(indentTemplate, td);
|
|
1252
1252
|
}
|
|
1253
1253
|
};
|
|
1254
|
+
/**
|
|
1255
|
+
* Method to check for refreshing the targeted resource row events.
|
|
1256
|
+
*
|
|
1257
|
+
* @returns {boolean} Returns the boolean value
|
|
1258
|
+
* @private
|
|
1259
|
+
*/
|
|
1260
|
+
Schedule.prototype.isSpecificResourceEvents = function () {
|
|
1261
|
+
return this.activeViewOptions.group.resources.length > 0 && !this.activeViewOptions.group.allowGroupEdit &&
|
|
1262
|
+
!this.rowAutoHeight && !this.virtualScrollModule && this.activeViewOptions.group.byGroupID;
|
|
1263
|
+
};
|
|
1254
1264
|
Schedule.prototype.unWireEvents = function () {
|
|
1255
1265
|
EventHandler.remove(window, 'resize', this.onScheduleResize);
|
|
1256
1266
|
EventHandler.remove(window, 'orientationchange', this.onScheduleResize);
|
|
@@ -2524,10 +2534,6 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
2524
2534
|
this.hideSpinner();
|
|
2525
2535
|
this.unWireEvents();
|
|
2526
2536
|
this.destroyHeaderModule();
|
|
2527
|
-
if (this.eventTooltip) {
|
|
2528
|
-
this.eventTooltip.destroy();
|
|
2529
|
-
this.eventTooltip = null;
|
|
2530
|
-
}
|
|
2531
2537
|
if (this.eventBase) {
|
|
2532
2538
|
this.eventBase.destroy();
|
|
2533
2539
|
this.eventBase = null;
|
|
@@ -2601,6 +2607,9 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
2601
2607
|
__decorate([
|
|
2602
2608
|
Property(true)
|
|
2603
2609
|
], Schedule.prototype, "showTimeIndicator", void 0);
|
|
2610
|
+
__decorate([
|
|
2611
|
+
Property(true)
|
|
2612
|
+
], Schedule.prototype, "allowSwiping", void 0);
|
|
2604
2613
|
__decorate([
|
|
2605
2614
|
Property('Week')
|
|
2606
2615
|
], Schedule.prototype, "currentView", void 0);
|
|
@@ -13,6 +13,14 @@ export declare const MS_PER_MINUTE: number;
|
|
|
13
13
|
* @returns {number} Returns the height of the element
|
|
14
14
|
*/
|
|
15
15
|
export declare function getElementHeightFromClass(container: Element, elementClass: string): number;
|
|
16
|
+
/**
|
|
17
|
+
* Method to get width from element
|
|
18
|
+
*
|
|
19
|
+
* @param {Element} container Accepts the DOM element
|
|
20
|
+
* @param {string} elementClass Accepts the element class
|
|
21
|
+
* @returns {number} Returns the width of the element
|
|
22
|
+
*/
|
|
23
|
+
export declare function getElementWidthFromClass(container: Element, elementClass: string): number;
|
|
16
24
|
/**
|
|
17
25
|
* Method to get translateY value
|
|
18
26
|
*
|
|
@@ -20,6 +28,13 @@ export declare function getElementHeightFromClass(container: Element, elementCla
|
|
|
20
28
|
* @returns {number} Returns the translateY value of given element
|
|
21
29
|
*/
|
|
22
30
|
export declare function getTranslateY(element: HTMLElement | Element): number;
|
|
31
|
+
/**
|
|
32
|
+
* Method to get translateX value
|
|
33
|
+
*
|
|
34
|
+
* @param {HTMLElement | Element} element Accepts the DOM element
|
|
35
|
+
* @returns {number} Returns the translateX value of given element
|
|
36
|
+
*/
|
|
37
|
+
export declare function getTranslateX(element: HTMLElement | Element): number;
|
|
23
38
|
/**
|
|
24
39
|
* Method to get week first date
|
|
25
40
|
*
|
|
@@ -24,6 +24,23 @@ export function getElementHeightFromClass(container, elementClass) {
|
|
|
24
24
|
remove(el);
|
|
25
25
|
return height;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Method to get width from element
|
|
29
|
+
*
|
|
30
|
+
* @param {Element} container Accepts the DOM element
|
|
31
|
+
* @param {string} elementClass Accepts the element class
|
|
32
|
+
* @returns {number} Returns the width of the element
|
|
33
|
+
*/
|
|
34
|
+
export function getElementWidthFromClass(container, elementClass) {
|
|
35
|
+
var width = 0;
|
|
36
|
+
var el = createElement('div', { className: elementClass }).cloneNode();
|
|
37
|
+
el.style.visibility = 'hidden';
|
|
38
|
+
el.style.position = 'absolute';
|
|
39
|
+
container.appendChild(el);
|
|
40
|
+
width = el.getBoundingClientRect().width;
|
|
41
|
+
remove(el);
|
|
42
|
+
return width;
|
|
43
|
+
}
|
|
27
44
|
/**
|
|
28
45
|
* Method to get translateY value
|
|
29
46
|
*
|
|
@@ -35,6 +52,17 @@ export function getTranslateY(element) {
|
|
|
35
52
|
return window.WebKitCSSMatrix ?
|
|
36
53
|
new WebKitCSSMatrix(style.webkitTransform).m42 : 0;
|
|
37
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Method to get translateX value
|
|
57
|
+
*
|
|
58
|
+
* @param {HTMLElement | Element} element Accepts the DOM element
|
|
59
|
+
* @returns {number} Returns the translateX value of given element
|
|
60
|
+
*/
|
|
61
|
+
export function getTranslateX(element) {
|
|
62
|
+
var style = getComputedStyle(element);
|
|
63
|
+
return window.WebKitCSSMatrix ?
|
|
64
|
+
new WebKitCSSMatrix(style.webkitTransform).m41 : 0;
|
|
65
|
+
}
|
|
38
66
|
/**
|
|
39
67
|
* Method to get week first date
|
|
40
68
|
*
|
|
@@ -312,9 +340,7 @@ export function removeChildren(element) {
|
|
|
312
340
|
var elementChildren = [].slice.call(element.children);
|
|
313
341
|
for (var _i = 0, elementChildren_1 = elementChildren; _i < elementChildren_1.length; _i++) {
|
|
314
342
|
var elementChild = elementChildren_1[_i];
|
|
315
|
-
|
|
316
|
-
element.removeChild(elementChild);
|
|
317
|
-
}
|
|
343
|
+
element.removeChild(elementChild);
|
|
318
344
|
}
|
|
319
345
|
}
|
|
320
346
|
/**
|
|
@@ -56,7 +56,6 @@ var AgendaBase = /** @class */ (function (_super) {
|
|
|
56
56
|
'tabindex': '0',
|
|
57
57
|
'aria-disabled': _this.parent.eventBase.getReadonlyAttribute(listData[li]),
|
|
58
58
|
'aria-pressed': 'false',
|
|
59
|
-
'aria-grabbed': 'true',
|
|
60
59
|
'aria-label': _this.parent.getAnnouncementString(listData[li])
|
|
61
60
|
}
|
|
62
61
|
});
|
|
@@ -263,9 +262,9 @@ var AgendaBase = /** @class */ (function (_super) {
|
|
|
263
262
|
}
|
|
264
263
|
};
|
|
265
264
|
AgendaBase.prototype.createResourceTableRow = function (tContent, tBody) {
|
|
266
|
-
var tr = createElement('tr'
|
|
265
|
+
var tr = createElement('tr');
|
|
267
266
|
var ntr;
|
|
268
|
-
var td = createElement('td', { attrs: {
|
|
267
|
+
var td = createElement('td', { attrs: { 'aria-selected': 'false' } });
|
|
269
268
|
var tempData;
|
|
270
269
|
var rowSpan = 0;
|
|
271
270
|
var level;
|
|
@@ -360,11 +359,10 @@ var AgendaBase = /** @class */ (function (_super) {
|
|
|
360
359
|
};
|
|
361
360
|
AgendaBase.prototype.createTableRowElement = function (date, type) {
|
|
362
361
|
var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), date.getTime());
|
|
363
|
-
var tr = createElement('tr', { attrs: { '
|
|
362
|
+
var tr = createElement('tr', { attrs: { 'data-row-index': daysCount.toString() } });
|
|
364
363
|
var td = createElement('td', {
|
|
365
364
|
attrs: {
|
|
366
365
|
'class': (type === 'monthHeader') ? cls.MONTH_HEADER_CLASS : cls.AGENDA_CELLS_CLASS,
|
|
367
|
-
'role': 'gridcell',
|
|
368
366
|
'aria-selected': 'false',
|
|
369
367
|
'data-column-index': daysCount.toString(),
|
|
370
368
|
'data-date': date.getTime().toString()
|
|
@@ -71,7 +71,7 @@ export declare class EventBase {
|
|
|
71
71
|
getOccurrencesByRange(startTime: Date, endTime: Date): Record<string, any>[];
|
|
72
72
|
getDeletedOccurrences(recurrenceData: string | number | Record<string, any>): Record<string, any>[];
|
|
73
73
|
applyResourceColor(element: HTMLElement, data: Record<string, any>, type: string, index?: string[], alpha?: string): void;
|
|
74
|
-
createBlockAppointmentElement(record: Record<string, any>, resIndex: number): HTMLElement;
|
|
74
|
+
createBlockAppointmentElement(record: Record<string, any>, resIndex: number, isResourceEventTemplate: boolean): HTMLElement;
|
|
75
75
|
setWrapperAttributes(appointmentWrapper: HTMLElement, resIndex: number): void;
|
|
76
76
|
getReadonlyAttribute(event: Record<string, any>): string;
|
|
77
77
|
isBlockRange(eventData: Record<string, any> | Record<string, any>[]): boolean;
|
|
@@ -84,6 +84,7 @@ export declare class EventBase {
|
|
|
84
84
|
}): boolean;
|
|
85
85
|
allDayExpandScroll(dateHeader: HTMLElement): void;
|
|
86
86
|
updateEventMinimumDuration(startEndHours: Record<string, Date>, startTime: Date, endTime: Date): Record<string, Date>;
|
|
87
|
+
createEventWrapper(type?: string, index?: number): HTMLElement;
|
|
87
88
|
private unWireEvents;
|
|
88
89
|
destroy(): void;
|
|
89
90
|
}
|