@syncfusion/ej2-schedule 20.1.61 → 20.2.36

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.
Files changed (76) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/ej2-schedule.umd.min.js +2 -2
  3. package/dist/ej2-schedule.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-schedule.es2015.js +165 -40
  5. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  6. package/dist/es6/ej2-schedule.es5.js +170 -40
  7. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  8. package/dist/global/ej2-schedule.min.js +2 -2
  9. package/dist/global/ej2-schedule.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/helpers/e2e/index.js +9 -7
  12. package/helpers/e2e/recurrence-editor.js +41 -25
  13. package/helpers/e2e/schedule.js +44 -28
  14. package/package.json +15 -15
  15. package/src/recurrence-editor/recurrence-editor.js +4 -1
  16. package/src/schedule/actions/crud.js +9 -7
  17. package/src/schedule/base/interface.d.ts +6 -0
  18. package/src/schedule/base/schedule.d.ts +8 -0
  19. package/src/schedule/base/schedule.js +66 -0
  20. package/src/schedule/event-renderer/agenda-base.js +6 -6
  21. package/src/schedule/event-renderer/event-base.js +4 -4
  22. package/src/schedule/event-renderer/month.js +2 -3
  23. package/src/schedule/event-renderer/vertical-view.js +3 -3
  24. package/src/schedule/event-renderer/year.js +2 -2
  25. package/src/schedule/exports/excel-export.js +8 -4
  26. package/src/schedule/popups/event-window.js +2 -1
  27. package/src/schedule/popups/quick-popups.js +3 -3
  28. package/src/schedule/renderer/agenda.js +2 -2
  29. package/src/schedule/renderer/timeline-month.d.ts +1 -0
  30. package/src/schedule/renderer/timeline-month.js +9 -0
  31. package/src/schedule/renderer/timeline-view.d.ts +1 -0
  32. package/src/schedule/renderer/timeline-view.js +14 -0
  33. package/src/schedule/renderer/timeline-year.js +3 -0
  34. package/src/schedule/renderer/vertical-view.d.ts +1 -0
  35. package/src/schedule/renderer/vertical-view.js +21 -4
  36. package/src/schedule/renderer/view-base.d.ts +1 -0
  37. package/src/schedule/renderer/view-base.js +11 -0
  38. package/src/schedule/renderer/year.js +2 -1
  39. package/styles/bootstrap-dark.css +5 -1
  40. package/styles/bootstrap.css +5 -1
  41. package/styles/bootstrap4.css +5 -1
  42. package/styles/bootstrap5-dark.css +5 -1
  43. package/styles/bootstrap5.css +5 -1
  44. package/styles/fabric-dark.css +5 -1
  45. package/styles/fabric.css +5 -1
  46. package/styles/fluent-dark.css +7 -3
  47. package/styles/fluent.css +7 -3
  48. package/styles/highcontrast-light.css +5 -1
  49. package/styles/highcontrast.css +5 -1
  50. package/styles/material-dark.css +5 -1
  51. package/styles/material.css +5 -1
  52. package/styles/recurrence-editor/_fusionnew-definition.scss +15 -0
  53. package/styles/recurrence-editor/_material3-definition.scss +15 -0
  54. package/styles/schedule/_fluent-definition.scss +1 -1
  55. package/styles/schedule/_fusionnew-definition.scss +224 -0
  56. package/styles/schedule/_layout.scss +6 -1
  57. package/styles/schedule/_material3-definition.scss +224 -0
  58. package/styles/schedule/bootstrap-dark.css +5 -1
  59. package/styles/schedule/bootstrap.css +5 -1
  60. package/styles/schedule/bootstrap4.css +5 -1
  61. package/styles/schedule/bootstrap5-dark.css +5 -1
  62. package/styles/schedule/bootstrap5.css +5 -1
  63. package/styles/schedule/fabric-dark.css +5 -1
  64. package/styles/schedule/fabric.css +5 -1
  65. package/styles/schedule/fluent-dark.css +7 -3
  66. package/styles/schedule/fluent.css +7 -3
  67. package/styles/schedule/highcontrast-light.css +5 -1
  68. package/styles/schedule/highcontrast.css +5 -1
  69. package/styles/schedule/icons/_fusionnew.scss +232 -0
  70. package/styles/schedule/icons/_material3.scss +232 -0
  71. package/styles/schedule/material-dark.css +5 -1
  72. package/styles/schedule/material.css +5 -1
  73. package/styles/schedule/tailwind-dark.css +5 -1
  74. package/styles/schedule/tailwind.css +5 -1
  75. package/styles/tailwind-dark.css +5 -1
  76. package/styles/tailwind.css +5 -1
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 20.1.61
3
+ * version : 20.2.36
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
@@ -1,7 +1,9 @@
1
- "use strict";
2
- function __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4
- }
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- __export(require("./schedule"));
7
- __export(require("./recurrence-editor"));
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
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const e2e_1 = require("@syncfusion/ej2-base/helpers/e2e");
4
- class RecurrenceEditorHelper extends e2e_1.TestHelper {
5
- constructor(id, wrapperFn) {
6
- super();
7
- this.id = id;
8
- if (wrapperFn !== undefined) {
9
- this.wrapperFn = wrapperFn;
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
- return this;
12
- }
13
- getElement() {
14
- return this.selector('#' + this.id);
15
- }
16
- changeRepeatType(repeatType) {
17
- if (typeof repeatType === 'string') {
18
- this.setModel('selectedType', repeatType.toLowerCase());
19
- }
20
- else {
21
- const frequencies = this.getModel('frequencies');
22
- this.setModel('selectedType', frequencies[repeatType]);
23
- }
24
- }
25
- }
26
- exports.RecurrenceEditorHelper = RecurrenceEditorHelper;
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
+ });
@@ -1,29 +1,45 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const e2e_1 = require("@syncfusion/ej2-base/helpers/e2e");
4
- class ScheduleHelper extends e2e_1.TestHelper {
5
- constructor(id, wrapperFn) {
6
- super();
7
- this.id = id;
8
- if (wrapperFn !== undefined) {
9
- this.wrapperFn = wrapperFn;
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
- return this;
12
- }
13
- getElement() {
14
- return this.selector('#' + this.id);
15
- }
16
- getEventWindow() {
17
- return this.selector('#' + this.id + '_dialog_wrapper');
18
- }
19
- getAlertDialog() {
20
- return this.selector('#' + this.id + 'QuickDialog');
21
- }
22
- getQuickPopup() {
23
- return this.selector('#' + this.id + ' .e-quick-popup-wrapper');
24
- }
25
- getMorePopup() {
26
- return this.selector('#' + this.id + ' .e-more-popup-wrapper');
27
- }
28
- }
29
- exports.ScheduleHelper = ScheduleHelper;
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.1.59",
3
+ "_id": "@syncfusion/ej2-schedule@19.19.3",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-gDP6/wsghpQtUJ49UTmIPeJx5aTHUJKd00EBl1b0VT9McWpp3ZQJ/tK5J2vPCkHWGhhwbQrPt+ycSbySV7uEFw==",
5
+ "_integrity": "sha512-yRrF7cHt6giBASGyunHixawRX/57JGqtX3l2mBdM1AcPFrTszQGXiaYYfWrPjmUE17xtmz0/910RDHAgdYxinw==",
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.1.59.tgz",
27
- "_shasum": "add165639e70831957429402aa630c7bf8e0262b",
26
+ "_resolved": "http://nexus.syncfusion.com/repository/ej2-release/@syncfusion/ej2-schedule/-/ej2-schedule-19.19.3.tgz",
27
+ "_shasum": "c5df3df291a7c0b7d6dae1b29def618a17894953",
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.1.61",
39
- "@syncfusion/ej2-buttons": "~20.1.61",
40
- "@syncfusion/ej2-calendars": "~20.1.58",
41
- "@syncfusion/ej2-data": "~20.1.55",
42
- "@syncfusion/ej2-dropdowns": "~20.1.61",
43
- "@syncfusion/ej2-excel-export": "~20.1.55",
44
- "@syncfusion/ej2-inputs": "~20.1.61",
45
- "@syncfusion/ej2-lists": "~20.1.55",
46
- "@syncfusion/ej2-navigations": "~20.1.61",
47
- "@syncfusion/ej2-popups": "~20.1.58"
38
+ "@syncfusion/ej2-base": "~20.2.36",
39
+ "@syncfusion/ej2-buttons": "~20.2.36",
40
+ "@syncfusion/ej2-calendars": "~20.2.36",
41
+ "@syncfusion/ej2-data": "~20.2.36",
42
+ "@syncfusion/ej2-dropdowns": "~20.2.36",
43
+ "@syncfusion/ej2-excel-export": "~20.2.36",
44
+ "@syncfusion/ej2-inputs": "~20.2.36",
45
+ "@syncfusion/ej2-lists": "~20.2.36",
46
+ "@syncfusion/ej2-navigations": "~20.2.36",
47
+ "@syncfusion/ej2-popups": "~20.2.36"
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.1.61",
84
+ "version": "20.2.36",
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
@@ -632,13 +632,15 @@ var Crud = /** @class */ (function () {
632
632
  else {
633
633
  endDate = new Date(+followEvent[fields.startTime]);
634
634
  var newRecurrenceRule = followEvent[fields.recurrenceRule];
635
- var startDate = parentEvent[fields.startTime];
636
- var ruleException = (this.parent.currentAction === 'DeleteFollowingEvents') ? followEvent[fields.recurrenceException] : null;
637
- var dateCollection = generate(startDate, newRecurrenceRule, ruleException, this.parent.activeViewOptions.firstDayOfWeek);
638
- var untilDate = new Date(dateCollection.slice(-1)[0]);
639
- untilDate.setHours(endDate.getHours(), endDate.getMinutes(), endDate.getSeconds());
640
- endDate.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds());
641
- followEvent[fields.recurrenceRule] = this.getUpdatedRecurrenceRule(newRecurrenceRule, new Date(+untilDate), false);
635
+ if (newRecurrenceRule) {
636
+ var startDate = parentEvent[fields.startTime];
637
+ var ruleException = (this.parent.currentAction === 'DeleteFollowingEvents') ? followEvent[fields.recurrenceException] : null;
638
+ var dateCollection = generate(startDate, newRecurrenceRule, ruleException, this.parent.activeViewOptions.firstDayOfWeek);
639
+ var untilDate = new Date(dateCollection.slice(-1)[0]);
640
+ untilDate.setHours(endDate.getHours(), endDate.getMinutes(), endDate.getSeconds());
641
+ endDate.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds());
642
+ followEvent[fields.recurrenceRule] = this.getUpdatedRecurrenceRule(newRecurrenceRule, new Date(+untilDate), false);
643
+ }
642
644
  }
643
645
  parentEvent[fields.recurrenceRule] = this.getUpdatedRecurrenceRule(recurrenceRule, util.addDays(new Date(endDate.getTime()), -1), true);
644
646
  };
@@ -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 */
@@ -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
  *
@@ -2399,6 +2399,72 @@ var Schedule = /** @class */ (function (_super) {
2399
2399
  this.eventWindow.dialogClose();
2400
2400
  }
2401
2401
  };
2402
+ /**
2403
+ * To manually open the quick info popup based on cell or event details.
2404
+ *
2405
+ * @param {object} data Defines the cell or event data. If the data contains valid ID, it will open event quick info popup,
2406
+ * otherwise cell quick info popup displayed.
2407
+ * @returns {void}
2408
+ */
2409
+ Schedule.prototype.openQuickInfoPopup = function (data) {
2410
+ var _this = this;
2411
+ if (this.currentView === 'Year' || isNullOrUndefined(data)) {
2412
+ return;
2413
+ }
2414
+ if (isNullOrUndefined(data[this.eventFields.id])) {
2415
+ if (this.currentView === 'Agenda' || this.currentView === 'MonthAgenda' || isNullOrUndefined(this.activeView)) {
2416
+ return;
2417
+ }
2418
+ var cellData = {
2419
+ startTime: this.activeCellsData.startTime = this.getDateTime(data[this.eventFields.startTime]),
2420
+ endTime: this.activeCellsData.endTime = this.getDateTime(data[this.eventFields.endTime]),
2421
+ isAllDay: this.activeCellsData.isAllDay =
2422
+ !isNullOrUndefined(data[this.eventFields.isAllDay]) ? data[this.eventFields.isAllDay] : false
2423
+ };
2424
+ var startTime = this.activeView.getAdjustedDate(new Date(cellData.startTime));
2425
+ if (startTime) {
2426
+ var query = '.' + cls.WORK_CELLS_CLASS + '[data-date="' + startTime.getTime() + '"]';
2427
+ if (this.activeViewOptions.group.resources.length > 0 && !this.uiStateValues.isGroupAdaptive
2428
+ && this.resourceBase && this.eventBase) {
2429
+ cellData.groupIndex = this.eventBase.getGroupIndexFromEvent(data);
2430
+ query = '.' + cls.WORK_CELLS_CLASS + '[data-date="' + startTime.getTime() + '"][data-group-index="' + cellData.groupIndex + '"]';
2431
+ }
2432
+ var workCell = this.element.querySelector(query);
2433
+ if (workCell) {
2434
+ workCell.focus();
2435
+ cellData.element = workCell;
2436
+ this.notify(events.cellClick, cellData);
2437
+ }
2438
+ }
2439
+ }
2440
+ else {
2441
+ var app = this.getCurrentViewEvents().filter(function (item) {
2442
+ return data[_this.eventFields.id] === item[_this.eventFields.id];
2443
+ });
2444
+ if (app.length <= 0) {
2445
+ return;
2446
+ }
2447
+ var selectEvent = app[0];
2448
+ if (data[this.eventFields.recurrenceRule]) {
2449
+ var occurence = app.filter(function (x) {
2450
+ return x[_this.eventFields.startTime].getTime() === data[_this.eventFields.startTime].getTime();
2451
+ });
2452
+ if (occurence.length > 0) {
2453
+ selectEvent = occurence[0];
2454
+ }
2455
+ }
2456
+ var element = this.element.querySelector('div[data-guid="' + selectEvent.Guid + '"]');
2457
+ if (element) {
2458
+ this.eventBase.removeSelectedAppointmentClass();
2459
+ this.eventBase.addSelectedAppointments([element]);
2460
+ this.activeEventData = { event: selectEvent, element: element };
2461
+ if (this.currentView === 'Agenda' || this.currentView === 'MonthAgenda') {
2462
+ addClass([this.activeEventData.element], cls.AGENDA_SELECTED_CELL);
2463
+ }
2464
+ this.notify(events.eventClick, this.activeEventData);
2465
+ }
2466
+ }
2467
+ };
2402
2468
  /**
2403
2469
  * To manually close the quick info popup
2404
2470
  *
@@ -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-readonly': _this.parent.eventBase.getReadonlyAttribute(listData[li]),
58
- 'aria-selected': 'false',
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('aria-rowindex', daysCount.toString());
327
- if (this.parent.element.querySelector(".e-agenda-view tr[aria-rowindex=\"" + daysCount + "\"]")) {
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', 'aria-rowindex': daysCount.toString() } });
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
- 'aria-colindex': daysCount.toString(),
369
+ 'data-column-index': daysCount.toString(),
370
370
  'data-date': date.getTime().toString()
371
371
  }
372
372
  });
@@ -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-selected', 'false');
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-selected', 'true');
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(this.parent.activeView.startDate(), this.parent.activeView.endDate()) + 1;
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;
@@ -1079,7 +1079,7 @@ var EventBase = /** @class */ (function () {
1079
1079
  className: cls.BLOCK_APPOINTMENT_CLASS,
1080
1080
  attrs: {
1081
1081
  'data-id': 'Appointment_' + record[this.parent.eventFields.id],
1082
- 'aria-readonly': 'true', 'aria-selected': 'false'
1082
+ 'aria-disabled': 'true', 'aria-pressed': 'false'
1083
1083
  }
1084
1084
  });
1085
1085
  var templateElement;
@@ -374,7 +374,7 @@ var MonthEvent = /** @class */ (function (_super) {
374
374
  var attrs = {
375
375
  'data-id': 'Appointment_' + record[this.fields.id],
376
376
  'role': 'button', 'tabindex': '0',
377
- 'aria-readonly': this.parent.eventBase.getReadonlyAttribute(record), 'aria-selected': 'false', 'aria-grabbed': 'true',
377
+ 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-pressed': 'false', 'aria-grabbed': 'true',
378
378
  'aria-label': this.parent.getAnnouncementString(newRecord, eventSubject)
379
379
  };
380
380
  if (!isCloneElement) {
@@ -669,8 +669,7 @@ var MonthEvent = /** @class */ (function (_super) {
669
669
  'tabindex': '0',
670
670
  'data-count': count.toString(),
671
671
  'data-start-date': startDate.getTime().toString(),
672
- 'data-end-date': endDate.getTime().toString(),
673
- 'role': 'list'
672
+ 'data-end-date': endDate.getTime().toString()
674
673
  }
675
674
  });
676
675
  return moreIndicatorElement;
@@ -282,8 +282,8 @@ var VerticalEvent = /** @class */ (function (_super) {
282
282
  'data-guid': record.Guid,
283
283
  'role': 'button',
284
284
  'tabindex': '0',
285
- 'aria-readonly': this.parent.eventBase.getReadonlyAttribute(record),
286
- 'aria-selected': 'false',
285
+ 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record),
286
+ 'aria-pressed': 'false',
287
287
  'aria-grabbed': 'true',
288
288
  'aria-label': this.parent.getAnnouncementString(record)
289
289
  }
@@ -378,7 +378,7 @@ var VerticalEvent = /** @class */ (function (_super) {
378
378
  });
379
379
  var moreIndicatorElement = createElement('div', {
380
380
  className: cls.MORE_INDICATOR_CLASS,
381
- attrs: { 'tabindex': '0', 'role': 'list', 'data-index': index.toString(), 'data-count': '1' },
381
+ attrs: { 'tabindex': '0', 'data-index': index.toString(), 'data-count': '1' },
382
382
  innerHTML: '+1&nbsp;' + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more'))
383
383
  });
384
384
  innerCountWrap.appendChild(moreIndicatorElement);
@@ -84,7 +84,7 @@ var YearEvent = /** @class */ (function (_super) {
84
84
  }
85
85
  };
86
86
  YearEvent.prototype.timelineYearViewEvents = function () {
87
- var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);
87
+ var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')');
88
88
  this.cellWidth = workCell.offsetWidth;
89
89
  this.cellHeader = util.getOuterHeight(workCell.querySelector('.' + cls.DATE_HEADER_CLASS));
90
90
  var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);
@@ -369,7 +369,7 @@ var YearEvent = /** @class */ (function (_super) {
369
369
  'data-id': 'Appointment_' + record[this.fields.id],
370
370
  'data-guid': record.Guid,
371
371
  'role': 'button', 'tabindex': '0',
372
- 'aria-readonly': this.parent.eventBase.getReadonlyAttribute(record), 'aria-selected': 'false', 'aria-grabbed': 'true',
372
+ 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record), 'aria-pressed': 'false', 'aria-grabbed': 'true',
373
373
  'aria-label': this.parent.getAnnouncementString(record)
374
374
  }
375
375
  });
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import { Workbook } from '@syncfusion/ej2-excel-export';
3
- import { extend } from '@syncfusion/ej2-base';
3
+ import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';
4
4
  /**
5
5
  * Excel Export Module
6
6
  */
@@ -14,6 +14,10 @@ var ExcelExport = /** @class */ (function () {
14
14
  var exportName = excelExportOptions.fileName || 'Schedule';
15
15
  var exportType = excelExportOptions.exportType || 'xlsx';
16
16
  var isIncludeOccurrences = excelExportOptions.includeOccurrences || false;
17
+ var separator;
18
+ if (!isNullOrUndefined(excelExportOptions.separator) && excelExportOptions.separator !== ',') {
19
+ separator = excelExportOptions.separator;
20
+ }
17
21
  var eventCollection;
18
22
  if (excelExportOptions.customData) {
19
23
  eventCollection = !isIncludeOccurrences ? excelExportOptions.customData :
@@ -22,9 +26,9 @@ var ExcelExport = /** @class */ (function () {
22
26
  else {
23
27
  eventCollection = !isIncludeOccurrences ? this.parent.eventsData : this.parent.eventsProcessed;
24
28
  }
25
- this.processWorkbook(exportColumns, exportName, exportType, eventCollection);
29
+ this.processWorkbook(exportColumns, exportName, exportType, eventCollection, separator);
26
30
  };
27
- ExcelExport.prototype.processWorkbook = function (fields, name, type, eventCollection) {
31
+ ExcelExport.prototype.processWorkbook = function (fields, name, type, eventCollection, separator) {
28
32
  var _this = this;
29
33
  var columns = [];
30
34
  var rows = [];
@@ -46,7 +50,7 @@ var ExcelExport = /** @class */ (function () {
46
50
  rows.push({ index: i + 2, cells: columnData });
47
51
  });
48
52
  var workSheet = [{ columns: columns, rows: rows }];
49
- var book = new Workbook({ worksheets: workSheet }, type, this.parent.locale);
53
+ var book = new Workbook({ worksheets: workSheet }, type, this.parent.locale, undefined, separator);
50
54
  book.save(name + '.' + type);
51
55
  };
52
56
  ExcelExport.prototype.getExportColumns = function (exportOptions) {
@@ -415,6 +415,7 @@ var EventWindow = /** @class */ (function () {
415
415
  resourceData.colorField + '}"></div><div class="e-resource-text">${' + resourceData.textField + '}</div></div>';
416
416
  if (resourceData.allowMultiple) {
417
417
  var listObj = new MultiSelect({
418
+ enableRtl: this.parent.enableRtl,
418
419
  cssClass: this.parent.cssClass || '',
419
420
  dataSource: resourceData.dataSource,
420
421
  change: this.onMultiselectResourceChange.bind(this),
@@ -473,7 +474,7 @@ var EventWindow = /** @class */ (function () {
473
474
  query = (e.text !== '') ? query.where('Text', 'contains', e.text, true) : query;
474
475
  e.updateData(_this.parent.timezoneDataSource, query);
475
476
  },
476
- htmlAttributes: { 'title': this.getFieldLabel(value), 'name': fieldName },
477
+ htmlAttributes: { 'title': this.getFieldLabel(value), 'name': fieldName, role: 'option' },
477
478
  floatLabelType: 'Always',
478
479
  placeholder: this.getFieldLabel(value),
479
480
  popupHeight: '230px'
@@ -318,8 +318,8 @@ var QuickPopups = /** @class */ (function () {
318
318
  attrs: {
319
319
  'data-id': '' + eventData[fields.id],
320
320
  'data-guid': eventData.Guid, 'role': 'button', 'tabindex': '0',
321
- 'aria-readonly': this_1.parent.eventBase.getReadonlyAttribute(eventData),
322
- 'aria-selected': 'false', 'aria-grabbed': 'true', 'aria-label': this_1.parent.getAnnouncementString(eventData)
321
+ 'aria-disabled': this_1.parent.eventBase.getReadonlyAttribute(eventData),
322
+ 'aria-pressed': 'false', 'aria-grabbed': 'true', 'aria-label': this_1.parent.getAnnouncementString(eventData)
323
323
  }
324
324
  });
325
325
  var templateElement = void 0;
@@ -415,7 +415,7 @@ var QuickPopups = /** @class */ (function () {
415
415
  this.quickPopupHide();
416
416
  return;
417
417
  }
418
- var targetEle = args.event.target;
418
+ var targetEle = !isNullOrUndefined(args.event) ? args.event.target : args.element;
419
419
  if (this.parent.isAdaptive) {
420
420
  this.quickPopupHide();
421
421
  var newEventClone = this.parent.element.querySelector('.' + cls.NEW_EVENT_CLASS);
@@ -171,7 +171,7 @@ var Agenda = /** @class */ (function (_super) {
171
171
  for (var day = 0; day < this.parent.agendaDaysCount; day++) {
172
172
  var filterData = this.appointmentFiltering(agendaDate);
173
173
  var nTr = this.createTableRowElement(agendaDate, 'data');
174
- if (this.element.querySelector('tr[aria-rowindex="' + parseInt(nTr.getAttribute('aria-rowindex'), 10) + '"]')) {
174
+ if (this.element.querySelector('tr[data-row-index="' + parseInt(nTr.getAttribute('data-row-index'), 10) + '"]')) {
175
175
  agendaDate = util.addDays(agendaDate, 1);
176
176
  continue;
177
177
  }
@@ -235,7 +235,7 @@ var Agenda = /** @class */ (function (_super) {
235
235
  prepend([].slice.call(emptyTBody.childNodes), tBody);
236
236
  this.wireEventActions();
237
237
  for (var s = 0, element = tBody.children; s < element.length; s++) {
238
- if (element[s].getAttribute('aria-rowindex') === topElement.getAttribute('aria-colindex')) {
238
+ if (element[s].getAttribute('data-row-index') === topElement.getAttribute('data-column-index')) {
239
239
  var scrollToValue = element[s].offsetTop -
240
240
  this.element.querySelector('.e-agenda-item').offsetHeight;
241
241
  target.scrollTop = scrollToValue;