@syncfusion/ej2-schedule 20.1.61 → 20.2.40
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 +31 -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 +257 -84
- package/dist/es6/ej2-schedule.es2015.js.map +1 -1
- package/dist/es6/ej2-schedule.es5.js +261 -83
- 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/helpers/e2e/index.js +9 -7
- package/helpers/e2e/recurrence-editor.js +41 -25
- package/helpers/e2e/schedule.js +44 -28
- package/package.json +15 -15
- package/src/recurrence-editor/recurrence-editor.js +4 -1
- package/src/schedule/actions/crud.d.ts +1 -0
- package/src/schedule/actions/crud.js +36 -9
- package/src/schedule/base/interface.d.ts +7 -1
- package/src/schedule/base/schedule.d.ts +8 -0
- package/src/schedule/base/schedule.js +75 -21
- package/src/schedule/event-renderer/agenda-base.js +6 -6
- package/src/schedule/event-renderer/event-base.d.ts +2 -0
- package/src/schedule/event-renderer/event-base.js +21 -5
- package/src/schedule/event-renderer/month.js +2 -3
- package/src/schedule/event-renderer/vertical-view.js +3 -3
- package/src/schedule/event-renderer/year.js +2 -2
- package/src/schedule/exports/calendar-export.d.ts +1 -0
- package/src/schedule/exports/calendar-export.js +6 -2
- package/src/schedule/exports/calendar-import.js +32 -18
- package/src/schedule/exports/excel-export.js +8 -4
- package/src/schedule/popups/event-window.js +3 -1
- package/src/schedule/popups/quick-popups.js +3 -3
- package/src/schedule/renderer/agenda.js +2 -2
- package/src/schedule/renderer/timeline-month.d.ts +1 -0
- package/src/schedule/renderer/timeline-month.js +9 -0
- package/src/schedule/renderer/timeline-view.d.ts +1 -0
- package/src/schedule/renderer/timeline-view.js +14 -0
- package/src/schedule/renderer/timeline-year.js +3 -0
- package/src/schedule/renderer/vertical-view.d.ts +1 -0
- package/src/schedule/renderer/vertical-view.js +21 -4
- package/src/schedule/renderer/view-base.d.ts +1 -0
- package/src/schedule/renderer/view-base.js +11 -0
- package/src/schedule/renderer/year.js +2 -1
- package/styles/bootstrap-dark.css +5 -1
- package/styles/bootstrap.css +5 -1
- package/styles/bootstrap4.css +5 -1
- package/styles/bootstrap5-dark.css +5 -1
- package/styles/bootstrap5.css +5 -1
- package/styles/fabric-dark.css +5 -1
- package/styles/fabric.css +5 -1
- package/styles/fluent-dark.css +20 -16
- package/styles/fluent.css +7 -3
- package/styles/highcontrast-light.css +5 -1
- package/styles/highcontrast.css +5 -1
- package/styles/material-dark.css +5 -1
- package/styles/material.css +5 -1
- package/styles/recurrence-editor/_fusionnew-definition.scss +15 -0
- package/styles/recurrence-editor/_material3-definition.scss +15 -0
- package/styles/schedule/_fluent-definition.scss +1 -1
- package/styles/schedule/_fusionnew-definition.scss +224 -0
- package/styles/schedule/_layout.scss +6 -1
- package/styles/schedule/_material3-definition.scss +224 -0
- package/styles/schedule/bootstrap-dark.css +5 -1
- package/styles/schedule/bootstrap.css +5 -1
- package/styles/schedule/bootstrap4.css +5 -1
- package/styles/schedule/bootstrap5-dark.css +5 -1
- package/styles/schedule/bootstrap5.css +5 -1
- package/styles/schedule/fabric-dark.css +5 -1
- package/styles/schedule/fabric.css +5 -1
- package/styles/schedule/fluent-dark.css +20 -16
- package/styles/schedule/fluent.css +7 -3
- package/styles/schedule/highcontrast-light.css +5 -1
- package/styles/schedule/highcontrast.css +5 -1
- package/styles/schedule/icons/_fusionnew.scss +232 -0
- package/styles/schedule/icons/_material3.scss +232 -0
- package/styles/schedule/material-dark.css +5 -1
- package/styles/schedule/material.css +5 -1
- package/styles/schedule/tailwind-dark.css +5 -1
- package/styles/schedule/tailwind.css +5 -1
- package/styles/tailwind-dark.css +5 -1
- package/styles/tailwind.css +5 -1
package/dist/global/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* filename: index.d.ts
|
|
3
|
-
* version : 20.
|
|
3
|
+
* version : 20.2.40
|
|
4
4
|
* Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
|
|
5
5
|
* Use of this code is subject to the terms of our license.
|
|
6
6
|
* A copy of the current license can be obtained at any time by e-mailing
|
package/helpers/e2e/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
__export(
|
|
1
|
+
define(["require", "exports", "./schedule", "./recurrence-editor"], function (require, exports, schedule_1, recurrence_editor_1) {
|
|
2
|
+
"use strict";
|
|
3
|
+
function __export(m) {
|
|
4
|
+
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
|
5
|
+
}
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
__export(schedule_1);
|
|
8
|
+
__export(recurrence_editor_1);
|
|
9
|
+
});
|
|
@@ -1,26 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
extendStatics(d, b);
|
|
10
|
+
function __() { this.constructor = d; }
|
|
11
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
+
};
|
|
13
|
+
})();
|
|
14
|
+
define(["require", "exports", "@syncfusion/ej2-base/helpers/e2e"], function (require, exports, e2e_1) {
|
|
15
|
+
"use strict";
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var RecurrenceEditorHelper = (function (_super) {
|
|
18
|
+
__extends(RecurrenceEditorHelper, _super);
|
|
19
|
+
function RecurrenceEditorHelper(id, wrapperFn) {
|
|
20
|
+
var _this = _super.call(this) || this;
|
|
21
|
+
_this.id = id;
|
|
22
|
+
if (wrapperFn !== undefined) {
|
|
23
|
+
_this.wrapperFn = wrapperFn;
|
|
24
|
+
}
|
|
25
|
+
return _this;
|
|
10
26
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
RecurrenceEditorHelper.prototype.getElement = function () {
|
|
28
|
+
return this.selector('#' + this.id);
|
|
29
|
+
};
|
|
30
|
+
RecurrenceEditorHelper.prototype.changeRepeatType = function (repeatType) {
|
|
31
|
+
if (typeof repeatType === 'string') {
|
|
32
|
+
this.setModel('selectedType', repeatType.toLowerCase());
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
var frequencies = this.getModel('frequencies');
|
|
36
|
+
this.setModel('selectedType', frequencies[repeatType]);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return RecurrenceEditorHelper;
|
|
40
|
+
}(e2e_1.TestHelper));
|
|
41
|
+
exports.RecurrenceEditorHelper = RecurrenceEditorHelper;
|
|
42
|
+
});
|
package/helpers/e2e/schedule.js
CHANGED
|
@@ -1,29 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
extendStatics(d, b);
|
|
10
|
+
function __() { this.constructor = d; }
|
|
11
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
+
};
|
|
13
|
+
})();
|
|
14
|
+
define(["require", "exports", "@syncfusion/ej2-base/helpers/e2e"], function (require, exports, e2e_1) {
|
|
15
|
+
"use strict";
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var ScheduleHelper = (function (_super) {
|
|
18
|
+
__extends(ScheduleHelper, _super);
|
|
19
|
+
function ScheduleHelper(id, wrapperFn) {
|
|
20
|
+
var _this = _super.call(this) || this;
|
|
21
|
+
_this.id = id;
|
|
22
|
+
if (wrapperFn !== undefined) {
|
|
23
|
+
_this.wrapperFn = wrapperFn;
|
|
24
|
+
}
|
|
25
|
+
return _this;
|
|
10
26
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
ScheduleHelper.prototype.getElement = function () {
|
|
28
|
+
return this.selector('#' + this.id);
|
|
29
|
+
};
|
|
30
|
+
ScheduleHelper.prototype.getEventWindow = function () {
|
|
31
|
+
return this.selector('#' + this.id + '_dialog_wrapper');
|
|
32
|
+
};
|
|
33
|
+
ScheduleHelper.prototype.getAlertDialog = function () {
|
|
34
|
+
return this.selector('#' + this.id + 'QuickDialog');
|
|
35
|
+
};
|
|
36
|
+
ScheduleHelper.prototype.getQuickPopup = function () {
|
|
37
|
+
return this.selector('#' + this.id + ' .e-quick-popup-wrapper');
|
|
38
|
+
};
|
|
39
|
+
ScheduleHelper.prototype.getMorePopup = function () {
|
|
40
|
+
return this.selector('#' + this.id + ' .e-more-popup-wrapper');
|
|
41
|
+
};
|
|
42
|
+
return ScheduleHelper;
|
|
43
|
+
}(e2e_1.TestHelper));
|
|
44
|
+
exports.ScheduleHelper = ScheduleHelper;
|
|
45
|
+
});
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_from": "@syncfusion/ej2-schedule@*",
|
|
3
|
-
"_id": "@syncfusion/ej2-schedule@20.
|
|
3
|
+
"_id": "@syncfusion/ej2-schedule@20.2.38",
|
|
4
4
|
"_inBundle": false,
|
|
5
|
-
"_integrity": "sha512-
|
|
5
|
+
"_integrity": "sha512-s+5eDIEW2jFb3ZdLOeIVeir04qKIG0GGm+FlC/TwA8n04MQIdr938y9+Zmd+EF2Mf4CFSPeDhFBiKTLYbrD6jA==",
|
|
6
6
|
"_location": "/@syncfusion/ej2-schedule",
|
|
7
7
|
"_phantomChildren": {},
|
|
8
8
|
"_requested": {
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"/@syncfusion/ej2-react-schedule",
|
|
24
24
|
"/@syncfusion/ej2-vue-schedule"
|
|
25
25
|
],
|
|
26
|
-
"_resolved": "http://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-schedule/-/ej2-schedule-20.
|
|
27
|
-
"_shasum": "
|
|
26
|
+
"_resolved": "http://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-schedule/-/ej2-schedule-20.2.38.tgz",
|
|
27
|
+
"_shasum": "653052b4e14e1bbbc8b0efb5c9fe8894a334421e",
|
|
28
28
|
"_spec": "@syncfusion/ej2-schedule@*",
|
|
29
29
|
"_where": "/jenkins/workspace/automation_release_19.1.0.1-ZPMUBNQ6AUYH6YGEFBPVYMEQLRRW2SLD4XCZ6GATNZJFYJ3RIAOA/packages/included",
|
|
30
30
|
"author": {
|
|
@@ -35,16 +35,16 @@
|
|
|
35
35
|
},
|
|
36
36
|
"bundleDependencies": false,
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@syncfusion/ej2-base": "~20.
|
|
39
|
-
"@syncfusion/ej2-buttons": "~20.
|
|
40
|
-
"@syncfusion/ej2-calendars": "~20.
|
|
41
|
-
"@syncfusion/ej2-data": "~20.
|
|
42
|
-
"@syncfusion/ej2-dropdowns": "~20.
|
|
43
|
-
"@syncfusion/ej2-excel-export": "~20.
|
|
44
|
-
"@syncfusion/ej2-inputs": "~20.
|
|
45
|
-
"@syncfusion/ej2-lists": "~20.
|
|
46
|
-
"@syncfusion/ej2-navigations": "~20.
|
|
47
|
-
"@syncfusion/ej2-popups": "~20.
|
|
38
|
+
"@syncfusion/ej2-base": "~20.2.39",
|
|
39
|
+
"@syncfusion/ej2-buttons": "~20.2.38",
|
|
40
|
+
"@syncfusion/ej2-calendars": "~20.2.40",
|
|
41
|
+
"@syncfusion/ej2-data": "~20.2.38",
|
|
42
|
+
"@syncfusion/ej2-dropdowns": "~20.2.40",
|
|
43
|
+
"@syncfusion/ej2-excel-export": "~20.2.39",
|
|
44
|
+
"@syncfusion/ej2-inputs": "~20.2.38",
|
|
45
|
+
"@syncfusion/ej2-lists": "~20.2.39",
|
|
46
|
+
"@syncfusion/ej2-navigations": "~20.2.39",
|
|
47
|
+
"@syncfusion/ej2-popups": "~20.2.40"
|
|
48
48
|
},
|
|
49
49
|
"deprecated": false,
|
|
50
50
|
"description": "Flexible scheduling library with more built-in features and enhanced customization options similar to outlook and google calendar, allowing the users to plan and manage their appointments with efficient data-binding support.",
|
|
@@ -81,6 +81,6 @@
|
|
|
81
81
|
"url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
|
|
82
82
|
},
|
|
83
83
|
"typings": "index.d.ts",
|
|
84
|
-
"version": "20.
|
|
84
|
+
"version": "20.2.40",
|
|
85
85
|
"sideEffects": false
|
|
86
86
|
}
|
|
@@ -358,7 +358,7 @@ var RecurrenceEditor = /** @class */ (function (_super) {
|
|
|
358
358
|
value: VALUEFIELD
|
|
359
359
|
},
|
|
360
360
|
placeholder: this.localeObj.getConstant(REPEAT),
|
|
361
|
-
htmlAttributes: { 'title': this.localeObj.getConstant(REPEAT) },
|
|
361
|
+
htmlAttributes: { 'title': this.localeObj.getConstant(REPEAT), role: 'option' },
|
|
362
362
|
change: function (args) {
|
|
363
363
|
self.setProperties({ selectedType: _this.frequencies.indexOf(args.value) }, false);
|
|
364
364
|
self.element.querySelector('.' + REPEATCONTENT).innerHTML =
|
|
@@ -380,6 +380,7 @@ var RecurrenceEditor = /** @class */ (function (_super) {
|
|
|
380
380
|
text: TEXTFIELD,
|
|
381
381
|
value: VALUEFIELD
|
|
382
382
|
},
|
|
383
|
+
htmlAttributes: { role: 'option' },
|
|
383
384
|
change: function (args) {
|
|
384
385
|
self.freshOnEndForm();
|
|
385
386
|
self.updateEndOnForm(args.value);
|
|
@@ -397,6 +398,7 @@ var RecurrenceEditor = /** @class */ (function (_super) {
|
|
|
397
398
|
text: TEXTFIELD,
|
|
398
399
|
value: VALUEFIELD
|
|
399
400
|
},
|
|
401
|
+
htmlAttributes: { role: 'option' },
|
|
400
402
|
index: 1,
|
|
401
403
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
402
404
|
change: function (args) {
|
|
@@ -416,6 +418,7 @@ var RecurrenceEditor = /** @class */ (function (_super) {
|
|
|
416
418
|
text: TEXTFIELD,
|
|
417
419
|
value: VALUEFIELD
|
|
418
420
|
},
|
|
421
|
+
htmlAttributes: { role: 'option' },
|
|
419
422
|
enableRtl: this.enableRtl,
|
|
420
423
|
index: 7,
|
|
421
424
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -13,6 +13,7 @@ export declare class Crud {
|
|
|
13
13
|
refreshDataManager(): void;
|
|
14
14
|
private dataManagerSuccess;
|
|
15
15
|
dataManagerFailure(e: ReturnType): void;
|
|
16
|
+
refreshProcessedData(): void;
|
|
16
17
|
private refreshData;
|
|
17
18
|
addEvent(eventData: Record<string, any> | Record<string, any>[]): void;
|
|
18
19
|
saveEvent(eventData: Record<string, any> | Record<string, any>[], action: CurrentAction): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
/* eslint-disable max-len */
|
|
3
|
-
import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';
|
|
3
|
+
import { isNullOrUndefined, extend, removeClass } from '@syncfusion/ej2-base';
|
|
4
4
|
import { getRecurrenceStringFromDate, generate } from '../../recurrence-editor/date-generator';
|
|
5
5
|
import * as events from '../base/constant';
|
|
6
6
|
import * as util from '../base/util';
|
|
@@ -43,7 +43,7 @@ var Crud = /** @class */ (function () {
|
|
|
43
43
|
var resultData = extend([], args.result, null, true);
|
|
44
44
|
_this.parent.eventsData = resultData.filter(function (data) { return !data[_this.parent.eventFields.isBlock]; });
|
|
45
45
|
_this.parent.blockData = resultData.filter(function (data) { return data[_this.parent.eventFields.isBlock]; });
|
|
46
|
-
_this.
|
|
46
|
+
_this.refreshProcessedData();
|
|
47
47
|
if (_this.parent.dragAndDropModule && _this.parent.dragAndDropModule.actionObj.action === 'drag') {
|
|
48
48
|
_this.parent.dragAndDropModule.navigationWrapper();
|
|
49
49
|
}
|
|
@@ -62,6 +62,31 @@ var Crud = /** @class */ (function () {
|
|
|
62
62
|
}
|
|
63
63
|
this.parent.trigger(events.actionFailure, { error: e }, function () { return _this.parent.hideSpinner(); });
|
|
64
64
|
};
|
|
65
|
+
Crud.prototype.refreshProcessedData = function () {
|
|
66
|
+
if (this.parent.dragAndDropModule) {
|
|
67
|
+
this.parent.dragAndDropModule.actionObj.action = '';
|
|
68
|
+
removeClass([this.parent.element], 'e-event-action');
|
|
69
|
+
}
|
|
70
|
+
if (this.parent.activeViewOptions && this.parent.activeViewOptions.eventTemplate) {
|
|
71
|
+
var templateNames = ['eventTemplate'];
|
|
72
|
+
if (this.crudObj.isCrudAction &&
|
|
73
|
+
['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(this.parent.currentView) === -1) {
|
|
74
|
+
templateNames = [];
|
|
75
|
+
for (var i = 0, len = this.crudObj.sourceEvent.length; i < len; i++) {
|
|
76
|
+
templateNames.push('eventTemplate_' + this.crudObj.sourceEvent[i].groupIndex);
|
|
77
|
+
if (this.crudObj.targetEvent[i] && this.crudObj.sourceEvent[i].groupIndex !==
|
|
78
|
+
this.crudObj.targetEvent[i].groupIndex) {
|
|
79
|
+
templateNames.push('eventTemplate_' + this.crudObj.targetEvent[i].groupIndex);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
this.parent.resetTemplates(templateNames);
|
|
84
|
+
}
|
|
85
|
+
var eventsData = this.parent.eventsData || [];
|
|
86
|
+
var blockData = this.parent.blockData || [];
|
|
87
|
+
var data = eventsData.concat(blockData);
|
|
88
|
+
this.parent.notify(events.dataReady, { processedData: this.parent.eventBase ? this.parent.eventBase.processData(data) : [] });
|
|
89
|
+
};
|
|
65
90
|
Crud.prototype.refreshData = function (args) {
|
|
66
91
|
var _this = this;
|
|
67
92
|
var actionArgs = {
|
|
@@ -632,13 +657,15 @@ var Crud = /** @class */ (function () {
|
|
|
632
657
|
else {
|
|
633
658
|
endDate = new Date(+followEvent[fields.startTime]);
|
|
634
659
|
var newRecurrenceRule = followEvent[fields.recurrenceRule];
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
660
|
+
if (newRecurrenceRule) {
|
|
661
|
+
var startDate = parentEvent[fields.startTime];
|
|
662
|
+
var ruleException = (this.parent.currentAction === 'DeleteFollowingEvents') ? followEvent[fields.recurrenceException] : null;
|
|
663
|
+
var dateCollection = generate(startDate, newRecurrenceRule, ruleException, this.parent.activeViewOptions.firstDayOfWeek);
|
|
664
|
+
var untilDate = new Date(dateCollection.slice(-1)[0]);
|
|
665
|
+
untilDate.setHours(endDate.getHours(), endDate.getMinutes(), endDate.getSeconds());
|
|
666
|
+
endDate.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds());
|
|
667
|
+
followEvent[fields.recurrenceRule] = this.getUpdatedRecurrenceRule(newRecurrenceRule, new Date(+untilDate), false);
|
|
668
|
+
}
|
|
642
669
|
}
|
|
643
670
|
parentEvent[fields.recurrenceRule] = this.getUpdatedRecurrenceRule(recurrenceRule, util.addDays(new Date(endDate.getTime()), -1), true);
|
|
644
671
|
};
|
|
@@ -281,6 +281,11 @@ export interface ExportOptions {
|
|
|
281
281
|
* the occurrences as separate instances on an exported Excel file.
|
|
282
282
|
*/
|
|
283
283
|
includeOccurrences?: boolean;
|
|
284
|
+
/**
|
|
285
|
+
* Defines the delimiter for csv file export.
|
|
286
|
+
* By default, csv files are using comma(,) as separator. You can specify this property to change the delimiter in csv file.
|
|
287
|
+
*/
|
|
288
|
+
separator?: string;
|
|
284
289
|
}
|
|
285
290
|
/** An interface that holds the field name and its header text to export to excel. */
|
|
286
291
|
export interface ExportFieldInfo {
|
|
@@ -414,6 +419,7 @@ export interface IRenderer {
|
|
|
414
419
|
isTimelineView(): boolean;
|
|
415
420
|
setColWidth(content: HTMLElement): void;
|
|
416
421
|
resetColWidth(): void;
|
|
422
|
+
getAdjustedDate?(date: Date): Date;
|
|
417
423
|
viewIndex: number;
|
|
418
424
|
}
|
|
419
425
|
/** @private */
|
|
@@ -486,7 +492,7 @@ export interface UIStateArgs {
|
|
|
486
492
|
action?: boolean;
|
|
487
493
|
isBlock?: boolean;
|
|
488
494
|
isCustomMonth?: boolean;
|
|
489
|
-
|
|
495
|
+
isPreventTimezone?: boolean;
|
|
490
496
|
}
|
|
491
497
|
/**
|
|
492
498
|
* @private
|
|
@@ -1641,6 +1641,14 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
|
|
|
1641
1641
|
* @returns {void}
|
|
1642
1642
|
*/
|
|
1643
1643
|
closeEditor(): void;
|
|
1644
|
+
/**
|
|
1645
|
+
* To manually open the quick info popup based on cell or event details.
|
|
1646
|
+
*
|
|
1647
|
+
* @param {object} data Defines the cell or event data. If the data contains valid ID, it will open event quick info popup,
|
|
1648
|
+
* otherwise cell quick info popup displayed.
|
|
1649
|
+
* @returns {void}
|
|
1650
|
+
*/
|
|
1651
|
+
openQuickInfoPopup(data: Record<string, any>): void;
|
|
1644
1652
|
/**
|
|
1645
1653
|
* To manually close the quick info popup
|
|
1646
1654
|
*
|
|
@@ -657,7 +657,7 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
657
657
|
if (this && isNullOrUndefined(this.uiStateValues) || !(this.enablePersistence)) {
|
|
658
658
|
this.uiStateValues = {
|
|
659
659
|
expand: false, isInitial: true, left: 0, top: 0, isGroupAdaptive: false,
|
|
660
|
-
isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false, isCustomMonth: true,
|
|
660
|
+
isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false, isCustomMonth: true, isPreventTimezone: false
|
|
661
661
|
};
|
|
662
662
|
}
|
|
663
663
|
this.activeCellsData = { startTime: this.getCurrentTime(), endTime: this.getCurrentTime(), isAllDay: false };
|
|
@@ -1119,11 +1119,9 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
1119
1119
|
}
|
|
1120
1120
|
if (this.currentView === 'Month' || ((this.currentView !== 'Agenda' && this.currentView !== 'MonthAgenda')
|
|
1121
1121
|
&& !this.activeViewOptions.timeScale.enable) || this.activeView.isTimelineView()) {
|
|
1122
|
-
this.uiStateValues.isResize = true;
|
|
1123
1122
|
this.activeView.resetColWidth();
|
|
1124
1123
|
this.notify(events.scrollUiUpdate, { cssProperties: this.getCssProperties(), isPreventScrollUpdate: true });
|
|
1125
1124
|
this.refreshEvents(false);
|
|
1126
|
-
this.uiStateValues.isResize = false;
|
|
1127
1125
|
}
|
|
1128
1126
|
else {
|
|
1129
1127
|
this.notify(events.contentReady, {});
|
|
@@ -2195,25 +2193,15 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
2195
2193
|
this.crudModule.refreshDataManager();
|
|
2196
2194
|
}
|
|
2197
2195
|
else {
|
|
2198
|
-
if (this.
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
this.crudModule.crudObj.targetEvent[i].groupIndex) {
|
|
2207
|
-
templateNames.push('eventTemplate_' + this.crudModule.crudObj.targetEvent[i].groupIndex);
|
|
2208
|
-
}
|
|
2209
|
-
}
|
|
2210
|
-
}
|
|
2211
|
-
this.resetTemplates(templateNames);
|
|
2196
|
+
if (this.uiStateValues) {
|
|
2197
|
+
this.uiStateValues.isPreventTimezone = true;
|
|
2198
|
+
}
|
|
2199
|
+
if (this.crudModule) {
|
|
2200
|
+
this.crudModule.refreshProcessedData();
|
|
2201
|
+
}
|
|
2202
|
+
if (this.uiStateValues) {
|
|
2203
|
+
this.uiStateValues.isPreventTimezone = false;
|
|
2212
2204
|
}
|
|
2213
|
-
var eventsData = this.eventsData || [];
|
|
2214
|
-
var blockData = this.blockData || [];
|
|
2215
|
-
var data = eventsData.concat(blockData);
|
|
2216
|
-
this.notify(events.dataReady, { processedData: this.eventBase ? this.eventBase.processData(data) : [] });
|
|
2217
2205
|
}
|
|
2218
2206
|
};
|
|
2219
2207
|
/**
|
|
@@ -2399,6 +2387,72 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
2399
2387
|
this.eventWindow.dialogClose();
|
|
2400
2388
|
}
|
|
2401
2389
|
};
|
|
2390
|
+
/**
|
|
2391
|
+
* To manually open the quick info popup based on cell or event details.
|
|
2392
|
+
*
|
|
2393
|
+
* @param {object} data Defines the cell or event data. If the data contains valid ID, it will open event quick info popup,
|
|
2394
|
+
* otherwise cell quick info popup displayed.
|
|
2395
|
+
* @returns {void}
|
|
2396
|
+
*/
|
|
2397
|
+
Schedule.prototype.openQuickInfoPopup = function (data) {
|
|
2398
|
+
var _this = this;
|
|
2399
|
+
if (this.currentView === 'Year' || isNullOrUndefined(data)) {
|
|
2400
|
+
return;
|
|
2401
|
+
}
|
|
2402
|
+
if (isNullOrUndefined(data[this.eventFields.id])) {
|
|
2403
|
+
if (this.currentView === 'Agenda' || this.currentView === 'MonthAgenda' || isNullOrUndefined(this.activeView)) {
|
|
2404
|
+
return;
|
|
2405
|
+
}
|
|
2406
|
+
var cellData = {
|
|
2407
|
+
startTime: this.activeCellsData.startTime = this.getDateTime(data[this.eventFields.startTime]),
|
|
2408
|
+
endTime: this.activeCellsData.endTime = this.getDateTime(data[this.eventFields.endTime]),
|
|
2409
|
+
isAllDay: this.activeCellsData.isAllDay =
|
|
2410
|
+
!isNullOrUndefined(data[this.eventFields.isAllDay]) ? data[this.eventFields.isAllDay] : false
|
|
2411
|
+
};
|
|
2412
|
+
var startTime = this.activeView.getAdjustedDate(new Date(cellData.startTime));
|
|
2413
|
+
if (startTime) {
|
|
2414
|
+
var query = '.' + cls.WORK_CELLS_CLASS + '[data-date="' + startTime.getTime() + '"]';
|
|
2415
|
+
if (this.activeViewOptions.group.resources.length > 0 && !this.uiStateValues.isGroupAdaptive
|
|
2416
|
+
&& this.resourceBase && this.eventBase) {
|
|
2417
|
+
cellData.groupIndex = this.eventBase.getGroupIndexFromEvent(data);
|
|
2418
|
+
query = '.' + cls.WORK_CELLS_CLASS + '[data-date="' + startTime.getTime() + '"][data-group-index="' + cellData.groupIndex + '"]';
|
|
2419
|
+
}
|
|
2420
|
+
var workCell = this.element.querySelector(query);
|
|
2421
|
+
if (workCell) {
|
|
2422
|
+
workCell.focus();
|
|
2423
|
+
cellData.element = workCell;
|
|
2424
|
+
this.notify(events.cellClick, cellData);
|
|
2425
|
+
}
|
|
2426
|
+
}
|
|
2427
|
+
}
|
|
2428
|
+
else {
|
|
2429
|
+
var app = this.getCurrentViewEvents().filter(function (item) {
|
|
2430
|
+
return data[_this.eventFields.id] === item[_this.eventFields.id];
|
|
2431
|
+
});
|
|
2432
|
+
if (app.length <= 0) {
|
|
2433
|
+
return;
|
|
2434
|
+
}
|
|
2435
|
+
var selectEvent = app[0];
|
|
2436
|
+
if (data[this.eventFields.recurrenceRule]) {
|
|
2437
|
+
var occurence = app.filter(function (x) {
|
|
2438
|
+
return x[_this.eventFields.startTime].getTime() === data[_this.eventFields.startTime].getTime();
|
|
2439
|
+
});
|
|
2440
|
+
if (occurence.length > 0) {
|
|
2441
|
+
selectEvent = occurence[0];
|
|
2442
|
+
}
|
|
2443
|
+
}
|
|
2444
|
+
var element = this.element.querySelector('div[data-guid="' + selectEvent.Guid + '"]');
|
|
2445
|
+
if (element) {
|
|
2446
|
+
this.eventBase.removeSelectedAppointmentClass();
|
|
2447
|
+
this.eventBase.addSelectedAppointments([element]);
|
|
2448
|
+
this.activeEventData = { event: selectEvent, element: element };
|
|
2449
|
+
if (this.currentView === 'Agenda' || this.currentView === 'MonthAgenda') {
|
|
2450
|
+
addClass([this.activeEventData.element], cls.AGENDA_SELECTED_CELL);
|
|
2451
|
+
}
|
|
2452
|
+
this.notify(events.eventClick, this.activeEventData);
|
|
2453
|
+
}
|
|
2454
|
+
}
|
|
2455
|
+
};
|
|
2402
2456
|
/**
|
|
2403
2457
|
* To manually close the quick info popup
|
|
2404
2458
|
*
|
|
@@ -54,8 +54,8 @@ var AgendaBase = /** @class */ (function (_super) {
|
|
|
54
54
|
'data-guid': listData[li].Guid,
|
|
55
55
|
'role': 'button',
|
|
56
56
|
'tabindex': '0',
|
|
57
|
-
'aria-
|
|
58
|
-
'aria-
|
|
57
|
+
'aria-disabled': _this.parent.eventBase.getReadonlyAttribute(listData[li]),
|
|
58
|
+
'aria-pressed': 'false',
|
|
59
59
|
'aria-grabbed': 'true',
|
|
60
60
|
'aria-label': _this.parent.getAnnouncementString(listData[li])
|
|
61
61
|
}
|
|
@@ -323,8 +323,8 @@ var AgendaBase = /** @class */ (function (_super) {
|
|
|
323
323
|
ntd.appendChild(this.createDateHeaderElement(tempData.date));
|
|
324
324
|
addClass([ntd], [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS, cls.DATE_BORDER_CLASS]);
|
|
325
325
|
var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), tempData.date.getTime());
|
|
326
|
-
ntr.setAttribute('
|
|
327
|
-
if (this.parent.element.querySelector(".e-agenda-view tr[
|
|
326
|
+
ntr.setAttribute('data-row-index', daysCount.toString());
|
|
327
|
+
if (this.parent.element.querySelector(".e-agenda-view tr[data-row-index=\"" + daysCount + "\"]")) {
|
|
328
328
|
break;
|
|
329
329
|
}
|
|
330
330
|
ntr.insertBefore(ntd, ntr.childNodes[0]);
|
|
@@ -360,13 +360,13 @@ var AgendaBase = /** @class */ (function (_super) {
|
|
|
360
360
|
};
|
|
361
361
|
AgendaBase.prototype.createTableRowElement = function (date, type) {
|
|
362
362
|
var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), date.getTime());
|
|
363
|
-
var tr = createElement('tr', { attrs: { 'role': 'row', '
|
|
363
|
+
var tr = createElement('tr', { attrs: { 'role': 'row', 'data-row-index': daysCount.toString() } });
|
|
364
364
|
var td = createElement('td', {
|
|
365
365
|
attrs: {
|
|
366
366
|
'class': (type === 'monthHeader') ? cls.MONTH_HEADER_CLASS : cls.AGENDA_CELLS_CLASS,
|
|
367
367
|
'role': 'gridcell',
|
|
368
368
|
'aria-selected': 'false',
|
|
369
|
-
'
|
|
369
|
+
'data-column-index': daysCount.toString(),
|
|
370
370
|
'data-date': date.getTime().toString()
|
|
371
371
|
}
|
|
372
372
|
});
|
|
@@ -58,6 +58,8 @@ export declare class EventBase {
|
|
|
58
58
|
getEventMaxID(resourceId?: number): number | string;
|
|
59
59
|
private activeEventData;
|
|
60
60
|
generateOccurrence(event: Record<string, any>, viewDate?: Date, oldTimezone?: string, isMaxCount?: boolean): Record<string, any>[];
|
|
61
|
+
private getDSTAdjustedTime;
|
|
62
|
+
private getDSTDiff;
|
|
61
63
|
getParentEvent(eventObj: Record<string, any>, isParent?: boolean): Record<string, any>;
|
|
62
64
|
getEventCollections(parentObj: Record<string, any>, childObj?: Record<string, any>): {
|
|
63
65
|
[key: string]: Record<string, any>[];
|
|
@@ -41,7 +41,7 @@ var EventBase = /** @class */ (function () {
|
|
|
41
41
|
if (timeZonePropChanged) {
|
|
42
42
|
this_1.processTimezoneChange(event_1, oldTimezone);
|
|
43
43
|
}
|
|
44
|
-
else if (!this_1.parent.isPrinting && !this_1.parent.uiStateValues.
|
|
44
|
+
else if (!this_1.parent.isPrinting && !this_1.parent.uiStateValues.isPreventTimezone) {
|
|
45
45
|
event_1 = this_1.processTimezone(event_1);
|
|
46
46
|
}
|
|
47
47
|
for (var level = 0; level < resourceCollection.length; level++) {
|
|
@@ -522,7 +522,7 @@ var EventBase = /** @class */ (function () {
|
|
|
522
522
|
var selectedAppointments = this.getSelectedAppointments();
|
|
523
523
|
for (var _i = 0, selectedAppointments_1 = selectedAppointments; _i < selectedAppointments_1.length; _i++) {
|
|
524
524
|
var appointment = selectedAppointments_1[_i];
|
|
525
|
-
appointment.setAttribute('aria-
|
|
525
|
+
appointment.setAttribute('aria-pressed', 'false');
|
|
526
526
|
}
|
|
527
527
|
removeClass(selectedAppointments, cls.APPOINTMENT_BORDER);
|
|
528
528
|
if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {
|
|
@@ -532,7 +532,7 @@ var EventBase = /** @class */ (function () {
|
|
|
532
532
|
EventBase.prototype.addSelectedAppointments = function (cells) {
|
|
533
533
|
for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {
|
|
534
534
|
var cell = cells_1[_i];
|
|
535
|
-
cell.setAttribute('aria-
|
|
535
|
+
cell.setAttribute('aria-pressed', 'true');
|
|
536
536
|
}
|
|
537
537
|
if (this.parent.currentView !== 'MonthAgenda') {
|
|
538
538
|
this.parent.removeSelectedClass();
|
|
@@ -880,7 +880,7 @@ var EventBase = /** @class */ (function () {
|
|
|
880
880
|
var exception = event[this.parent.eventFields.recurrenceException];
|
|
881
881
|
var maxCount;
|
|
882
882
|
if (this.parent.currentView !== 'Agenda' && isMaxCount) {
|
|
883
|
-
maxCount = util.getDateCount(
|
|
883
|
+
maxCount = util.getDateCount(viewDate, this.parent.activeView.endDate()) + 1;
|
|
884
884
|
}
|
|
885
885
|
var newTimezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();
|
|
886
886
|
var firstDay = this.parent.activeViewOptions.firstDayOfWeek;
|
|
@@ -903,6 +903,7 @@ var EventBase = /** @class */ (function () {
|
|
|
903
903
|
for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {
|
|
904
904
|
var date = dates_1[_i];
|
|
905
905
|
var clonedObject = extend({}, event, null, true);
|
|
906
|
+
date = this.getDSTAdjustedTime(date, clonedObject);
|
|
906
907
|
clonedObject[this.parent.eventFields.startTime] = new Date(date);
|
|
907
908
|
clonedObject[this.parent.eventFields.endTime] = new Date(new Date(date).setMilliseconds(duration));
|
|
908
909
|
clonedObject[this.parent.eventFields.recurrenceID] = clonedObject[this.parent.eventFields.id];
|
|
@@ -913,6 +914,21 @@ var EventBase = /** @class */ (function () {
|
|
|
913
914
|
}
|
|
914
915
|
return occurrenceCollection;
|
|
915
916
|
};
|
|
917
|
+
EventBase.prototype.getDSTAdjustedTime = function (date, event) {
|
|
918
|
+
var occurDate = date;
|
|
919
|
+
if (this.parent.timezone &&
|
|
920
|
+
(event[this.parent.eventFields.startTimezone] || event[this.parent.eventFields.endTimezone])) {
|
|
921
|
+
var eventOffset = this.getDSTDiff(event[this.parent.eventFields.startTime], new Date(date), event[this.parent.eventFields.startTimezone]);
|
|
922
|
+
var schOffset = this.getDSTDiff(event[this.parent.eventFields.startTime], new Date(date), this.parent.timezone);
|
|
923
|
+
occurDate = (new Date(date).getTime() - (eventOffset - schOffset) * 60000);
|
|
924
|
+
}
|
|
925
|
+
return occurDate;
|
|
926
|
+
};
|
|
927
|
+
EventBase.prototype.getDSTDiff = function (startDate, occurDate, timezone) {
|
|
928
|
+
var startOffset = this.parent.tzModule.offset(new Date(startDate), timezone);
|
|
929
|
+
var occurOffset = this.parent.tzModule.offset(new Date(occurDate), timezone);
|
|
930
|
+
return startOffset - occurOffset;
|
|
931
|
+
};
|
|
916
932
|
EventBase.prototype.getParentEvent = function (eventObj, isParent) {
|
|
917
933
|
if (isParent === void 0) { isParent = false; }
|
|
918
934
|
var parentEvent;
|
|
@@ -1079,7 +1095,7 @@ var EventBase = /** @class */ (function () {
|
|
|
1079
1095
|
className: cls.BLOCK_APPOINTMENT_CLASS,
|
|
1080
1096
|
attrs: {
|
|
1081
1097
|
'data-id': 'Appointment_' + record[this.parent.eventFields.id],
|
|
1082
|
-
'aria-
|
|
1098
|
+
'aria-disabled': 'true', 'aria-pressed': 'false'
|
|
1083
1099
|
}
|
|
1084
1100
|
});
|
|
1085
1101
|
var templateElement;
|