@syncfusion/ej2-schedule 20.4.52 → 21.1.35

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 (114) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/ej2-schedule.min.js +2 -2
  3. package/dist/ej2-schedule.umd.min.js +2 -2
  4. package/dist/ej2-schedule.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-schedule.es2015.js +374 -153
  6. package/dist/es6/ej2-schedule.es2015.js.map +1 -1
  7. package/dist/es6/ej2-schedule.es5.js +409 -174
  8. package/dist/es6/ej2-schedule.es5.js.map +1 -1
  9. package/dist/global/ej2-schedule.min.js +2 -2
  10. package/dist/global/ej2-schedule.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +16 -16
  13. package/src/common/calendar-util.d.ts +7 -0
  14. package/src/recurrence-editor/recurrence-editor.d.ts +10 -0
  15. package/src/recurrence-editor/recurrence-editor.js +3 -3
  16. package/src/schedule/actions/action-base.js +5 -0
  17. package/src/schedule/actions/crud.js +14 -2
  18. package/src/schedule/actions/data.d.ts +14 -2
  19. package/src/schedule/actions/data.js +26 -2
  20. package/src/schedule/actions/drag.js +6 -1
  21. package/src/schedule/actions/keyboard.d.ts +1 -1
  22. package/src/schedule/actions/keyboard.js +17 -15
  23. package/src/schedule/actions/virtual-scroll.js +2 -2
  24. package/src/schedule/base/interface.d.ts +23 -23
  25. package/src/schedule/base/resource.js +8 -7
  26. package/src/schedule/base/schedule-model.d.ts +34 -27
  27. package/src/schedule/base/schedule.d.ts +57 -27
  28. package/src/schedule/base/schedule.js +56 -9
  29. package/src/schedule/base/type.d.ts +66 -1
  30. package/src/schedule/event-renderer/agenda-base.js +6 -2
  31. package/src/schedule/event-renderer/event-base.d.ts +1 -0
  32. package/src/schedule/event-renderer/event-base.js +27 -10
  33. package/src/schedule/event-renderer/month.js +4 -5
  34. package/src/schedule/event-renderer/vertical-view.d.ts +0 -1
  35. package/src/schedule/event-renderer/vertical-view.js +6 -30
  36. package/src/schedule/event-renderer/year.d.ts +1 -0
  37. package/src/schedule/event-renderer/year.js +135 -54
  38. package/src/schedule/models/event-settings-model.d.ts +11 -2
  39. package/src/schedule/models/event-settings.d.ts +10 -2
  40. package/src/schedule/models/event-settings.js +3 -0
  41. package/src/schedule/models/fields-model.d.ts +4 -2
  42. package/src/schedule/models/fields.d.ts +6 -4
  43. package/src/schedule/models/fields.js +2 -2
  44. package/src/schedule/models/header-rows-model.d.ts +5 -5
  45. package/src/schedule/models/header-rows.d.ts +5 -5
  46. package/src/schedule/models/quick-info-templates-model.d.ts +3 -3
  47. package/src/schedule/models/quick-info-templates.d.ts +3 -3
  48. package/src/schedule/models/views-model.d.ts +16 -15
  49. package/src/schedule/models/views.d.ts +16 -15
  50. package/src/schedule/popups/event-tooltip.js +2 -1
  51. package/src/schedule/popups/event-window.js +27 -6
  52. package/src/schedule/popups/quick-popups.js +32 -10
  53. package/src/schedule/renderer/header-renderer.js +1 -0
  54. package/src/schedule/renderer/month-agenda.d.ts +2 -1
  55. package/src/schedule/renderer/month-agenda.js +5 -0
  56. package/src/schedule/renderer/month.d.ts +1 -0
  57. package/src/schedule/renderer/month.js +5 -3
  58. package/src/schedule/renderer/timeline-year.js +12 -8
  59. package/src/schedule/renderer/vertical-view.js +1 -1
  60. package/src/schedule/renderer/view-base.js +3 -4
  61. package/src/schedule/renderer/year.js +5 -1
  62. package/styles/bootstrap-dark.css +99 -89
  63. package/styles/bootstrap.css +99 -89
  64. package/styles/bootstrap4.css +99 -89
  65. package/styles/bootstrap5-dark.css +110 -100
  66. package/styles/bootstrap5.css +110 -100
  67. package/styles/fabric-dark.css +98 -88
  68. package/styles/fabric.css +98 -88
  69. package/styles/fluent-dark.css +109 -99
  70. package/styles/fluent.css +109 -99
  71. package/styles/highcontrast-light.css +98 -88
  72. package/styles/highcontrast.css +98 -88
  73. package/styles/material-dark.css +98 -88
  74. package/styles/material.css +98 -88
  75. package/styles/recurrence-editor/_bootstrap5-definition.scss +1 -1
  76. package/styles/recurrence-editor/_fluent-definition.scss +1 -1
  77. package/styles/recurrence-editor/_tailwind-definition.scss +1 -1
  78. package/styles/schedule/_bootstrap-dark-definition.scss +8 -1
  79. package/styles/schedule/_bootstrap-definition.scss +8 -1
  80. package/styles/schedule/_bootstrap4-definition.scss +7 -0
  81. package/styles/schedule/_bootstrap5-definition.scss +17 -10
  82. package/styles/schedule/_fabric-dark-definition.scss +7 -0
  83. package/styles/schedule/_fabric-definition.scss +7 -0
  84. package/styles/schedule/_fluent-definition.scss +15 -8
  85. package/styles/schedule/_fusionnew-definition.scss +7 -0
  86. package/styles/schedule/_highcontrast-definition.scss +7 -0
  87. package/styles/schedule/_highcontrast-light-definition.scss +7 -0
  88. package/styles/schedule/_layout.scss +63 -48
  89. package/styles/schedule/_material-dark-definition.scss +7 -0
  90. package/styles/schedule/_material-definition.scss +7 -0
  91. package/styles/schedule/_tailwind-definition.scss +17 -10
  92. package/styles/schedule/_theme.scss +40 -41
  93. package/styles/schedule/bootstrap-dark.css +99 -89
  94. package/styles/schedule/bootstrap.css +99 -89
  95. package/styles/schedule/bootstrap4.css +99 -89
  96. package/styles/schedule/bootstrap5-dark.css +110 -100
  97. package/styles/schedule/bootstrap5.css +110 -100
  98. package/styles/schedule/fabric-dark.css +98 -88
  99. package/styles/schedule/fabric.css +98 -88
  100. package/styles/schedule/fluent-dark.css +109 -99
  101. package/styles/schedule/fluent.css +109 -99
  102. package/styles/schedule/highcontrast-light.css +98 -88
  103. package/styles/schedule/highcontrast.css +98 -88
  104. package/styles/schedule/material-dark.css +98 -88
  105. package/styles/schedule/material.css +98 -88
  106. package/styles/schedule/tailwind-dark.css +106 -96
  107. package/styles/schedule/tailwind.css +106 -96
  108. package/styles/tailwind-dark.css +106 -96
  109. package/styles/tailwind.css +106 -96
  110. package/GitLeaksReport.json +0 -1
  111. package/gitleaks-ci/gitleaks +0 -0
  112. package/gitleaks-ci.tar.gz +0 -0
  113. package/styles/recurrence-editor/_material3-definition.scss +0 -13
  114. package/styles/schedule/_material3-definition.scss +0 -283
@@ -1,4 +1,4 @@
1
- import { Component, ModuleDeclaration, Property, Event, Animation, Collection, append } from '@syncfusion/ej2-base';import { EventHandler, EmitType, Browser, Internationalization, getDefaultDateObject, cldrData, L10n } from '@syncfusion/ej2-base';import { getValue, compile, extend, isNullOrUndefined, NotifyPropertyChanges, INotifyPropertyChanged, Complex } from '@syncfusion/ej2-base';import { getElement, removeClass, addClass, classList, remove } from '@syncfusion/ej2-base';import { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';import { HeaderRenderer } from '../renderer/header-renderer';import { Scroll } from '../actions/scroll';import { ScheduleTouch } from '../actions/touch';import { KeyboardInteraction } from '../actions/keyboard';import { Data } from '../actions/data';import { View, CurrentAction, ReturnType, WeekRule } from '../base/type';import { EventBase } from '../event-renderer/event-base';import { InlineEdit } from '../event-renderer/inline-edit';import { QuickPopups } from '../popups/quick-popups';import { EventTooltip } from '../popups/event-tooltip';import { EventWindow } from '../popups/event-window';import { Render } from '../renderer/renderer';import { Day } from '../renderer/day';import { Week } from '../renderer/week';import { WorkWeek } from '../renderer/work-week';import { Month } from '../renderer/month';import { Year } from '../renderer/year';import { Agenda } from '../renderer/agenda';import { MonthAgenda } from '../renderer/month-agenda';import { TimelineViews } from '../renderer/timeline-view';import { TimelineMonth } from '../renderer/timeline-month';import { TimelineYear } from '../renderer/timeline-year';import { WorkHours } from '../models/work-hours';import { TimeScale } from '../models/time-scale';import { QuickInfoTemplates } from '../models/quick-info-templates';import { HeaderRows } from '../models/header-rows';import { Crud } from '../actions/crud';import { Resize } from '../actions/resize';import { DragAndDrop } from '../actions/drag';import { VirtualScroll } from '../actions/virtual-scroll';import { WorkCellInteraction } from '../actions/work-cells';import { WorkHoursModel, ViewsModel, EventSettingsModel, GroupModel, ResourcesModel, TimeScaleModel } from '../models/models';import { QuickInfoTemplatesModel, HeaderRowsModel } from '../models/models';import { EventSettings } from '../models/event-settings';import { Group } from '../models/group';import { Resources } from '../models/resources';import { ICalendarExport } from '../exports/calendar-export';import { ICalendarImport } from '../exports/calendar-import';import { ExcelExport } from '../exports/excel-export';import { Print } from '../exports/print';import { IRenderer, ActionEventArgs, NavigatingEventArgs, CellClickEventArgs, RenderCellEventArgs, ScrollCss, TimezoneFields } from '../base/interface';import { EventClickArgs, EventRenderedArgs, PopupOpenEventArgs, UIStateArgs, DragEventArgs, ResizeEventArgs } from '../base/interface';import { EventFieldsMapping, TdData, ResourceDetails, ResizeEdges, StateArgs, ExportOptions, SelectEventArgs } from '../base/interface';import { ViewsData, PopupCloseEventArgs, HoverEventArgs, MoreEventsClickArgs, CallbackFunction } from '../base/interface';import { CalendarUtil, Gregorian, Islamic, CalendarType } from '../../common/calendar-util';import { ResourceBase } from '../base/resource';import { Timezone, timezoneData } from '../timezone/timezone';import { RecurrenceEditor } from '../../recurrence-editor/recurrence-editor';import * as events from '../base/constant';import * as cls from '../base/css-constant';import * as util from '../base/util';
1
+ import { Component, ModuleDeclaration, Property, Event, Animation, Collection, append } from '@syncfusion/ej2-base';import { EventHandler, EmitType, Browser, Internationalization, getDefaultDateObject, cldrData, L10n } from '@syncfusion/ej2-base';import { getValue, compile, extend, isNullOrUndefined, NotifyPropertyChanges, INotifyPropertyChanged, Complex } from '@syncfusion/ej2-base';import { getElement, removeClass, addClass, classList, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';import { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';import { HeaderRenderer } from '../renderer/header-renderer';import { Scroll } from '../actions/scroll';import { ScheduleTouch } from '../actions/touch';import { KeyboardInteraction } from '../actions/keyboard';import { Data } from '../actions/data';import { View, CurrentAction, ReturnType, WeekRule } from '../base/type';import { EventBase } from '../event-renderer/event-base';import { InlineEdit } from '../event-renderer/inline-edit';import { QuickPopups } from '../popups/quick-popups';import { EventTooltip } from '../popups/event-tooltip';import { EventWindow } from '../popups/event-window';import { Render } from '../renderer/renderer';import { Day } from '../renderer/day';import { Week } from '../renderer/week';import { WorkWeek } from '../renderer/work-week';import { Month } from '../renderer/month';import { Year } from '../renderer/year';import { Agenda } from '../renderer/agenda';import { MonthAgenda } from '../renderer/month-agenda';import { TimelineViews } from '../renderer/timeline-view';import { TimelineMonth } from '../renderer/timeline-month';import { TimelineYear } from '../renderer/timeline-year';import { WorkHours } from '../models/work-hours';import { TimeScale } from '../models/time-scale';import { QuickInfoTemplates } from '../models/quick-info-templates';import { HeaderRows } from '../models/header-rows';import { Crud } from '../actions/crud';import { Resize } from '../actions/resize';import { DragAndDrop } from '../actions/drag';import { VirtualScroll } from '../actions/virtual-scroll';import { WorkCellInteraction } from '../actions/work-cells';import { WorkHoursModel, ViewsModel, EventSettingsModel, GroupModel, ResourcesModel, TimeScaleModel } from '../models/models';import { QuickInfoTemplatesModel, HeaderRowsModel } from '../models/models';import { EventSettings } from '../models/event-settings';import { Group } from '../models/group';import { Resources } from '../models/resources';import { ICalendarExport } from '../exports/calendar-export';import { ICalendarImport } from '../exports/calendar-import';import { ExcelExport } from '../exports/excel-export';import { Print } from '../exports/print';import { IRenderer, ActionEventArgs, NavigatingEventArgs, CellClickEventArgs, RenderCellEventArgs, ScrollCss, TimezoneFields } from '../base/interface';import { EventClickArgs, EventRenderedArgs, PopupOpenEventArgs, UIStateArgs, DragEventArgs, ResizeEventArgs } from '../base/interface';import { EventFieldsMapping, TdData, ResourceDetails, ResizeEdges, StateArgs, ExportOptions, SelectEventArgs } from '../base/interface';import { ViewsData, PopupCloseEventArgs, HoverEventArgs, MoreEventsClickArgs, CallbackFunction } from '../base/interface';import { CalendarUtil, Gregorian, Islamic, CalendarType } from '../../common/calendar-util';import { ResourceBase } from '../base/resource';import { Timezone, timezoneData } from '../timezone/timezone';import { RecurrenceEditor } from '../../recurrence-editor/recurrence-editor';import * as events from '../base/constant';import * as cls from '../base/css-constant';import * as util from '../base/util';
2
2
  import {ComponentModel} from '@syncfusion/ej2-base';
3
3
 
4
4
  /**
@@ -61,18 +61,18 @@ export interface ScheduleModel extends ComponentModel{
61
61
  /**
62
62
  * To set the active view on scheduler, the `currentView` property can be used and it usually accepts either of the following available
63
63
  * view options. The view option specified in this property will be initially loaded on the schedule.
64
- * * Day
65
- * * Week
66
- * * WorkWeek
67
- * * Month
68
- * * Year
69
- * * Agenda
70
- * * MonthAgenda
71
- * * TimelineDay
72
- * * TimelineWeek
73
- * * TimelineWorkWeek
74
- * * TimelineMonth
75
- * * TimelineYear
64
+ * * `Day`: Denotes Day view of the scheduler.
65
+ * * `Week`: Denotes Week view of the scheduler.
66
+ * * `WorkWeek`: Denotes Work Week view of the scheduler.
67
+ * * `Month`: Denotes Month view of the scheduler.
68
+ * * `Year`: Denotes Year view of the scheduler.
69
+ * * `Agenda`: Denotes Agenda view of the scheduler.
70
+ * * `MonthAgenda`: Denotes Month Agenda view of the scheduler.
71
+ * * `TimelineDay`: Denotes Timeline Day view of the scheduler.
72
+ * * `TimelineWeek`: Denotes Timeline Week view of the scheduler.
73
+ * * `TimelineWorkWeek`: Denotes Timeline Work Week view of the scheduler.
74
+ * * `TimelineMonth`: Denotes Timeline Month view of the scheduler.
75
+ * * `TimelineYear`: Denotes Timeline Year view of the scheduler.
76
76
  *
77
77
  * {% codeBlock src='schedule/currentView/index.md' %}{% endcodeBlock %}
78
78
  *
@@ -86,13 +86,12 @@ export interface ScheduleModel extends ComponentModel{
86
86
  * Schedule displays all the views namely `Day`, `Week`, `Work Week`, `Month` and `Agenda`.
87
87
  *
88
88
  * Example for array of views:
89
- * {% codeBlock src="schedule/view-api/index.ts" %}{% endcodeBlock %}
89
+ * {% codeBlock src="schedule/views/index.md" %}{% endcodeBlock %}
90
90
  *
91
91
  * Example for array of view objects:
92
- * {% codeBlock src="schedule/view-api/array.ts" %}{% endcodeBlock %}
93
- * {% codeBlock src='schedule/views/index.md' %}{% endcodeBlock %}
92
+ * {% codeBlock src='schedule/viewOption/index.md' %}{% endcodeBlock %}
94
93
  *
95
- * @default '['Day', 'Week', 'WorkWeek', 'Month', 'Agenda']'
94
+ * @default '["Day", "Week", "WorkWeek", "Month", "Agenda"]'
96
95
  */
97
96
  views?: View[] | ViewsModel[];
98
97
 
@@ -182,9 +181,9 @@ export interface ScheduleModel extends ComponentModel{
182
181
  /**
183
182
  * It allows the Scheduler to display week numbers based on following available week options. The week
184
183
  * option specified in this property will be initially loaded on the schedule.
185
- * * FirstDay
186
- * * FirstFourDayWeek
187
- * * FirstFullWeek
184
+ * * `FirstDay`: Denotes that the first week of the year starts on the first day of the year and ends before the following designated first day of the week.
185
+ * * `FirstFourDayWeek`:Denotes that the first week of the year is the first week with four or more days before the designated first day of the week.
186
+ * * `FirstFullWeek`: Denotes that the first week of the year begins on the first occurrence of the designated first day of the week on or after the first day of the year.
188
187
  *
189
188
  * {% codeBlock src='schedule/weekRule/index.md' %}{% endcodeBlock %}
190
189
  *
@@ -242,6 +241,14 @@ export interface ScheduleModel extends ComponentModel{
242
241
  */
243
242
  timeFormat?: string;
244
243
 
244
+ /**
245
+ * Specifies whether to enable the rendering of untrusted HTML values in the Schedule component.
246
+ * When this property is enabled, the component will sanitize any suspected untrusted strings and scripts before rendering them.
247
+ *
248
+ * @default true
249
+ */
250
+ enableHtmlSanitizer?: boolean;
251
+
245
252
  /**
246
253
  * When set to `true`, If valid, the scroll on the all day row is activated when the all day row
247
254
  * height reaches the max height when the all day row is expanded.
@@ -362,9 +369,9 @@ export interface ScheduleModel extends ComponentModel{
362
369
  * The template option which is used to render the customized work cells on the Schedule. Here, the template accepts either
363
370
  * the string or HTMLElement as template design and then the parsed design is displayed onto the work cells.
364
371
  * The fields accessible via template are as follows.
365
- * * date
366
- * * groupIndex
367
- * * type
372
+ * * `date`: Returns the date of the cell.
373
+ * * `groupIndex`: Returns the group index of the cell.
374
+ * * `type`: Returns the type of the work cell.
368
375
  *
369
376
  * Refer to the below code snippet.
370
377
  *
@@ -551,8 +558,8 @@ export interface ScheduleModel extends ComponentModel{
551
558
  * Template option to customize the resource header bar. Here, the template accepts either
552
559
  * the string or HTMLElement as template design and then the parsed design is displayed onto the resource header cells.
553
560
  * The following can be accessible via template.
554
- * * resource - All the resource fields.
555
- * * resourceData - object collection of current resource.
561
+ * * `resource` - All the resource fields.
562
+ * * `resourceData` - Object collection of current resource.
556
563
  *
557
564
  * Refer to the below code snippet.
558
565
  *
@@ -586,7 +593,7 @@ export interface ScheduleModel extends ComponentModel{
586
593
 
587
594
  /**
588
595
  * Allows defining the collection of resources to be displayed on the Schedule. The resource collection needs to be defined
589
- * with unique resource names to identify it along with the respective dataSource and field mapping options.
596
+ * with unique resource names to identify it along with the respective dataSource and field mapping options.
590
597
  *
591
598
  * {% codeBlock src='schedule/resources/index.md' %}{% endcodeBlock %}
592
599
  *
@@ -596,7 +603,7 @@ export interface ScheduleModel extends ComponentModel{
596
603
 
597
604
  /**
598
605
  * Allows defining the collection of custom header rows to display the year, month, week, date and hour label as an individual row
599
- * on the timeline view of the scheduler.
606
+ * on the timeline view of the scheduler.
600
607
  *
601
608
  * {% codeBlock src='schedule/headerRows/index.md' %}{% endcodeBlock %}
602
609
  *
@@ -184,18 +184,18 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
184
184
  /**
185
185
  * To set the active view on scheduler, the `currentView` property can be used and it usually accepts either of the following available
186
186
  * view options. The view option specified in this property will be initially loaded on the schedule.
187
- * * Day
188
- * * Week
189
- * * WorkWeek
190
- * * Month
191
- * * Year
192
- * * Agenda
193
- * * MonthAgenda
194
- * * TimelineDay
195
- * * TimelineWeek
196
- * * TimelineWorkWeek
197
- * * TimelineMonth
198
- * * TimelineYear
187
+ * * `Day`: Denotes Day view of the scheduler.
188
+ * * `Week`: Denotes Week view of the scheduler.
189
+ * * `WorkWeek`: Denotes Work Week view of the scheduler.
190
+ * * `Month`: Denotes Month view of the scheduler.
191
+ * * `Year`: Denotes Year view of the scheduler.
192
+ * * `Agenda`: Denotes Agenda view of the scheduler.
193
+ * * `MonthAgenda`: Denotes Month Agenda view of the scheduler.
194
+ * * `TimelineDay`: Denotes Timeline Day view of the scheduler.
195
+ * * `TimelineWeek`: Denotes Timeline Week view of the scheduler.
196
+ * * `TimelineWorkWeek`: Denotes Timeline Work Week view of the scheduler.
197
+ * * `TimelineMonth`: Denotes Timeline Month view of the scheduler.
198
+ * * `TimelineYear`: Denotes Timeline Year view of the scheduler.
199
199
  *
200
200
  * {% codeBlock src='schedule/currentView/index.md' %}{% endcodeBlock %}
201
201
  *
@@ -208,13 +208,12 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
208
208
  * Schedule displays all the views namely `Day`, `Week`, `Work Week`, `Month` and `Agenda`.
209
209
  *
210
210
  * Example for array of views:
211
- * {% codeBlock src="schedule/view-api/index.ts" %}{% endcodeBlock %}
211
+ * {% codeBlock src="schedule/views/index.md" %}{% endcodeBlock %}
212
212
  *
213
213
  * Example for array of view objects:
214
- * {% codeBlock src="schedule/view-api/array.ts" %}{% endcodeBlock %}
215
- * {% codeBlock src='schedule/views/index.md' %}{% endcodeBlock %}
214
+ * {% codeBlock src='schedule/viewOption/index.md' %}{% endcodeBlock %}
216
215
  *
217
- * @default '['Day', 'Week', 'WorkWeek', 'Month', 'Agenda']'
216
+ * @default '["Day", "Week", "WorkWeek", "Month", "Agenda"]'
218
217
  */
219
218
  views: View[] | ViewsModel[];
220
219
  /**
@@ -296,9 +295,9 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
296
295
  /**
297
296
  * It allows the Scheduler to display week numbers based on following available week options. The week
298
297
  * option specified in this property will be initially loaded on the schedule.
299
- * * FirstDay
300
- * * FirstFourDayWeek
301
- * * FirstFullWeek
298
+ * * `FirstDay`: Denotes that the first week of the year starts on the first day of the year and ends before the following designated first day of the week.
299
+ * * `FirstFourDayWeek`:Denotes that the first week of the year is the first week with four or more days before the designated first day of the week.
300
+ * * `FirstFullWeek`: Denotes that the first week of the year begins on the first occurrence of the designated first day of the week on or after the first day of the year.
302
301
  *
303
302
  * {% codeBlock src='schedule/weekRule/index.md' %}{% endcodeBlock %}
304
303
  *
@@ -350,6 +349,13 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
350
349
  * @default null
351
350
  */
352
351
  timeFormat: string;
352
+ /**
353
+ * Specifies whether to enable the rendering of untrusted HTML values in the Schedule component.
354
+ * When this property is enabled, the component will sanitize any suspected untrusted strings and scripts before rendering them.
355
+ *
356
+ * @default true
357
+ */
358
+ enableHtmlSanitizer: boolean;
353
359
  /**
354
360
  * When set to `true`, If valid, the scroll on the all day row is activated when the all day row
355
361
  * height reaches the max height when the all day row is expanded.
@@ -458,9 +464,9 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
458
464
  * The template option which is used to render the customized work cells on the Schedule. Here, the template accepts either
459
465
  * the string or HTMLElement as template design and then the parsed design is displayed onto the work cells.
460
466
  * The fields accessible via template are as follows.
461
- * * date
462
- * * groupIndex
463
- * * type
467
+ * * `date`: Returns the date of the cell.
468
+ * * `groupIndex`: Returns the group index of the cell.
469
+ * * `type`: Returns the type of the work cell.
464
470
  *
465
471
  * Refer to the below code snippet.
466
472
  *
@@ -628,8 +634,8 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
628
634
  * Template option to customize the resource header bar. Here, the template accepts either
629
635
  * the string or HTMLElement as template design and then the parsed design is displayed onto the resource header cells.
630
636
  * The following can be accessible via template.
631
- * * resource - All the resource fields.
632
- * * resourceData - object collection of current resource.
637
+ * * `resource` - All the resource fields.
638
+ * * `resourceData` - Object collection of current resource.
633
639
  *
634
640
  * Refer to the below code snippet.
635
641
  *
@@ -660,7 +666,7 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
660
666
  group: GroupModel;
661
667
  /**
662
668
  * Allows defining the collection of resources to be displayed on the Schedule. The resource collection needs to be defined
663
- * with unique resource names to identify it along with the respective dataSource and field mapping options.
669
+ * with unique resource names to identify it along with the respective dataSource and field mapping options.
664
670
  *
665
671
  * {% codeBlock src='schedule/resources/index.md' %}{% endcodeBlock %}
666
672
  *
@@ -669,7 +675,7 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
669
675
  resources: ResourcesModel[];
670
676
  /**
671
677
  * Allows defining the collection of custom header rows to display the year, month, week, date and hour label as an individual row
672
- * on the timeline view of the scheduler.
678
+ * on the timeline view of the scheduler.
673
679
  *
674
680
  * {% codeBlock src='schedule/headerRows/index.md' %}{% endcodeBlock %}
675
681
  *
@@ -890,7 +896,7 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
890
896
  /**
891
897
  * Method to render react templates
892
898
  *
893
- * @param {Function} callBack - specifies the callBack method
899
+ * @param {Function} callback - Specifies the callBack method
894
900
  * @returns {void}
895
901
  * @private
896
902
  */
@@ -903,6 +909,14 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
903
909
  * @private
904
910
  */
905
911
  resetTemplates(templates?: string[]): void;
912
+ /**
913
+ * Method to sanitize any suspected untrusted strings and scripts before rendering them.
914
+ *
915
+ * @param {string} value - A string value representing the HTML string value to be sanitized.
916
+ * @returns {string} A sanitized Html string.
917
+ * @private
918
+ */
919
+ sanitize(value: string): string;
906
920
  private initializeResources;
907
921
  /**
908
922
  * Method to render the layout elements
@@ -1260,6 +1274,13 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
1260
1274
  * @private
1261
1275
  */
1262
1276
  templateParser(template: string): CallbackFunction;
1277
+ /**
1278
+ * Retrieves the selected cells.
1279
+ *
1280
+ * @returns {Element[]} The elements of currently selected cells will be returned.
1281
+ * @private
1282
+ */
1283
+ getSelectedCells(): Element[];
1263
1284
  /**
1264
1285
  * Method to generate the announcement string
1265
1286
  *
@@ -1488,6 +1509,15 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
1488
1509
  * @returns {void}
1489
1510
  */
1490
1511
  addEvent(data: Record<string, any> | Record<string, any>[]): void;
1512
+ /**
1513
+ * Generates the occurrences of a single recurrence event based on the provided event.
1514
+ *
1515
+ * @function generateEventOccurrences
1516
+ * @param {Object} event Accepts the parent recurrence event from which the occurrences are generated.
1517
+ * @param {Date} startDate Accepts the start date for the event occurrences. If not provided, the event's start date will be used.
1518
+ * @returns {Object[]} Returns the collection of occurrence event objects.
1519
+ */
1520
+ generateEventOccurrences(event: Record<string, any>, startDate?: Date): Record<string, any>[];
1491
1521
  /**
1492
1522
  * Allows the Scheduler events data to be exported as an Excel file either in .xlsx or .csv file formats.
1493
1523
  * By default, the whole event collection bound to the Scheduler gets exported as an Excel file.
@@ -21,7 +21,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
21
21
  import { Component, Property, Event, Animation, Collection, append } from '@syncfusion/ej2-base';
22
22
  import { EventHandler, Browser, Internationalization, getDefaultDateObject, cldrData, L10n } from '@syncfusion/ej2-base';
23
23
  import { getValue, compile, extend, isNullOrUndefined, NotifyPropertyChanges, Complex } from '@syncfusion/ej2-base';
24
- import { getElement, removeClass, addClass, classList, remove } from '@syncfusion/ej2-base';
24
+ import { getElement, removeClass, addClass, classList, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';
25
25
  import { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';
26
26
  import { HeaderRenderer } from '../renderer/header-renderer';
27
27
  import { Scroll } from '../actions/scroll';
@@ -135,7 +135,7 @@ var Schedule = /** @class */ (function (_super) {
135
135
  /**
136
136
  * Method to render react templates
137
137
  *
138
- * @param {Function} callBack - specifies the callBack method
138
+ * @param {Function} callback - Specifies the callBack method
139
139
  * @returns {void}
140
140
  * @private
141
141
  */
@@ -159,6 +159,19 @@ var Schedule = /** @class */ (function (_super) {
159
159
  this.clearTemplate(templates);
160
160
  }
161
161
  };
162
+ /**
163
+ * Method to sanitize any suspected untrusted strings and scripts before rendering them.
164
+ *
165
+ * @param {string} value - A string value representing the HTML string value to be sanitized.
166
+ * @returns {string} A sanitized Html string.
167
+ * @private
168
+ */
169
+ Schedule.prototype.sanitize = function (value) {
170
+ if (this.enableHtmlSanitizer) {
171
+ return SanitizeHtmlHelper.sanitize(value);
172
+ }
173
+ return value;
174
+ };
162
175
  Schedule.prototype.initializeResources = function (isSetModel) {
163
176
  if (isSetModel === void 0) { isSetModel = false; }
164
177
  if (this.resources.length > 0) {
@@ -372,7 +385,7 @@ var Schedule = /** @class */ (function (_super) {
372
385
  followingID: this.eventSettings.fields.followingID
373
386
  };
374
387
  this.setEditorTitles();
375
- this.dataModule = new Data(this.eventSettings.dataSource, this.eventSettings.query);
388
+ this.dataModule = new Data(this, this.eventSettings.dataSource, this.eventSettings.query);
376
389
  this.crudModule = new Crud(this);
377
390
  };
378
391
  Schedule.prototype.setEditorTitles = function () {
@@ -789,13 +802,18 @@ var Schedule = /** @class */ (function (_super) {
789
802
  * @private
790
803
  */
791
804
  Schedule.prototype.removeSelectedClass = function () {
792
- var selectedCells = this.getSelectedElements();
805
+ var selectedCells = this.getSelectedCells();
793
806
  for (var _i = 0, selectedCells_1 = selectedCells; _i < selectedCells_1.length; _i++) {
794
807
  var cell = selectedCells_1[_i];
795
- cell.setAttribute('aria-selected', 'false');
808
+ if (this.currentView !== 'Year') {
809
+ cell.setAttribute('aria-selected', 'false');
810
+ }
796
811
  cell.removeAttribute('tabindex');
797
812
  }
798
813
  removeClass(selectedCells, cls.SELECTED_CELL_CLASS);
814
+ if (this.keyboardInteractionModule && this.keyboardInteractionModule.selectedCells.length > 0) {
815
+ this.keyboardInteractionModule.selectedCells = [];
816
+ }
799
817
  };
800
818
  /**
801
819
  * Method to add selected class
@@ -807,9 +825,11 @@ var Schedule = /** @class */ (function (_super) {
807
825
  * @private
808
826
  */
809
827
  Schedule.prototype.addSelectedClass = function (cells, focusCell, isPreventScroll) {
810
- for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {
811
- var cell = cells_1[_i];
812
- cell.setAttribute('aria-selected', 'true');
828
+ if (this.currentView !== 'Year') {
829
+ for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {
830
+ var cell = cells_1[_i];
831
+ cell.setAttribute('aria-selected', 'true');
832
+ }
813
833
  }
814
834
  addClass(cells, cls.SELECTED_CELL_CLASS);
815
835
  if (focusCell) {
@@ -1175,6 +1195,15 @@ var Schedule = /** @class */ (function (_super) {
1175
1195
  }
1176
1196
  return undefined;
1177
1197
  };
1198
+ /**
1199
+ * Retrieves the selected cells.
1200
+ *
1201
+ * @returns {Element[]} The elements of currently selected cells will be returned.
1202
+ * @private
1203
+ */
1204
+ Schedule.prototype.getSelectedCells = function () {
1205
+ return [].slice.call(this.element.querySelectorAll('.' + cls.SELECTED_CELL_CLASS));
1206
+ };
1178
1207
  /**
1179
1208
  * Method to generate the announcement string
1180
1209
  *
@@ -1633,6 +1662,7 @@ var Schedule = /** @class */ (function (_super) {
1633
1662
  case 'dataSource':
1634
1663
  case 'query':
1635
1664
  case 'fields':
1665
+ case 'includeFiltersInQuery':
1636
1666
  this.initializeDataModule();
1637
1667
  state.isDataManager = true;
1638
1668
  break;
@@ -1865,7 +1895,10 @@ var Schedule = /** @class */ (function (_super) {
1865
1895
  * @returns {Element[]} The elements of currently selected cells will be returned.
1866
1896
  */
1867
1897
  Schedule.prototype.getSelectedElements = function () {
1868
- return [].slice.call(this.element.querySelectorAll('.' + cls.SELECTED_CELL_CLASS));
1898
+ if (this.keyboardInteractionModule && this.keyboardInteractionModule.selectedCells.length > 0) {
1899
+ return this.keyboardInteractionModule.selectedCells;
1900
+ }
1901
+ return this.getSelectedCells();
1869
1902
  };
1870
1903
  /**
1871
1904
  * To get the resource collection
@@ -2032,6 +2065,17 @@ var Schedule = /** @class */ (function (_super) {
2032
2065
  Schedule.prototype.addEvent = function (data) {
2033
2066
  this.crudModule.addEvent(data);
2034
2067
  };
2068
+ /**
2069
+ * Generates the occurrences of a single recurrence event based on the provided event.
2070
+ *
2071
+ * @function generateEventOccurrences
2072
+ * @param {Object} event Accepts the parent recurrence event from which the occurrences are generated.
2073
+ * @param {Date} startDate Accepts the start date for the event occurrences. If not provided, the event's start date will be used.
2074
+ * @returns {Object[]} Returns the collection of occurrence event objects.
2075
+ */
2076
+ Schedule.prototype.generateEventOccurrences = function (event, startDate) {
2077
+ return (this.eventBase) ? this.eventBase.generateOccurrence(event, startDate) : [];
2078
+ };
2035
2079
  /**
2036
2080
  * Allows the Scheduler events data to be exported as an Excel file either in .xlsx or .csv file formats.
2037
2081
  * By default, the whole event collection bound to the Scheduler gets exported as an Excel file.
@@ -2707,6 +2751,9 @@ var Schedule = /** @class */ (function (_super) {
2707
2751
  __decorate([
2708
2752
  Property(null)
2709
2753
  ], Schedule.prototype, "timeFormat", void 0);
2754
+ __decorate([
2755
+ Property(true)
2756
+ ], Schedule.prototype, "enableHtmlSanitizer", void 0);
2710
2757
  __decorate([
2711
2758
  Property(false)
2712
2759
  ], Schedule.prototype, "enableAllDayScroll", void 0);
@@ -3,10 +3,35 @@
3
3
  */
4
4
  /**
5
5
  * An enum that denotes the view mode of the Scheduler.
6
+ * ```props
7
+ * Day :- Denotes Day view of the scheduler.
8
+ * Week :- Denotes Week view of the scheduler.
9
+ * WorkWeek :- Denotes Work Week view of the scheduler.
10
+ * Month :- Denotes Month view of the scheduler.
11
+ * Year :- Denotes Year view of the scheduler.
12
+ * Agenda :- Denotes Agenda view of the scheduler.
13
+ * MonthAgenda :- Denotes Month Agenda view of the scheduler.
14
+ * TimelineDay :- Denotes Timeline Day view of the scheduler.
15
+ * TimelineWeek :- Denotes Timeline Week view of the scheduler.
16
+ * TimelineWorkWeek :- Denotes Timeline Work Week view of the scheduler.
17
+ * TimelineMonth :- Denotes Timeline Month view of the scheduler.
18
+ * TimelineYear :- Denotes Timeline Year view of the scheduler.
19
+ * ```
6
20
  */
7
21
  export declare type View = 'Day' | 'Week' | 'WorkWeek' | 'Month' | 'Year' | 'Agenda' | 'MonthAgenda' | 'TimelineDay' | 'TimelineWeek' | 'TimelineWorkWeek' | 'TimelineMonth' | 'TimelineYear';
8
22
  /**
9
23
  * An enum that holds the actions available in scheduler.
24
+ * ```props
25
+ * Add :- Denotes the current action of the scheduler is appointment creation.
26
+ * Save :- Denotes the current action of the scheduler is editing the appointment.
27
+ * Delete :- Denotes the current action is deleting the appointment.
28
+ * DeleteOccurrence :- Denotes the current action is deleting single occurrence of a recurrence.
29
+ * DeleteSeries :- Denotes the current action is deleting the entire series of recurrence appointment.
30
+ * EditOccurrence :- Denotes the current action is editing single occurrence of a recurrence.
31
+ * EditSeries :- Denotes the current action is editing the entire series of recurrence appointment.
32
+ * EditFollowingEvents :- Denotes the current action is editing the following appointments in a recurrence.
33
+ * DeleteFollowingEvents :- Denotes the current action is deleting the following appointments in a recurrence.
34
+ * ```
10
35
  */
11
36
  export declare type CurrentAction = 'Add' | 'Save' | 'Delete' | 'DeleteOccurrence' | 'DeleteSeries' | 'EditOccurrence' | 'EditSeries' | 'EditFollowingEvents' | 'DeleteFollowingEvents';
12
37
  /**
@@ -18,30 +43,70 @@ export declare type ReturnType = {
18
43
  aggregates?: Record<string, any>;
19
44
  };
20
45
  /**
21
- * An enum that holds the available popup types in the scheduler.
46
+ * An enum that holds the available popup types in the scheduler. They are
47
+ * ```props
48
+ * DeleteAlert :- Denotes the popup showing delete confirmation message.
49
+ * EditEventInfo :- Denotes the quick popup on the events in responsive mode.
50
+ * Editor :- Denotes the detailed editor window.
51
+ * EventContainer :- Denotes the more indicator popup.
52
+ * QuickInfo :- Denotes the quick popup.
53
+ * RecurrenceAlert :- Denotes the popup showing recurrence alerts.
54
+ * RecurrenceValidationAlert :- Denotes the popup showing recurrence validation alerts.
55
+ * ValidationAlert :- Denotes the popup showing validation alerts.
56
+ * ViewEventInfo :- Denotes the quick popup on the cells in responsive mode.
57
+ * ```
22
58
  */
23
59
  export declare type PopupType = 'Editor' | 'EventContainer' | 'QuickInfo' | 'RecurrenceAlert' | 'DeleteAlert' | 'ViewEventInfo' | 'EditEventInfo' | 'ValidationAlert' | 'RecurrenceValidationAlert';
24
60
  /**
25
61
  * An enum that holds the header row type in the timeline scheduler.
62
+ * ```props
63
+ * Year :- Denotes the year row in the header bar.
64
+ * Month :- Denotes the month row in the header bar.
65
+ * Week :- Denotes the week row in the header bar.
66
+ * Date :- Denotes the date row in the header bar.
67
+ * Hour :- Denotes the hour row in the header bar.
68
+ * ```
26
69
  */
27
70
  export declare type HeaderRowType = 'Year' | 'Month' | 'Week' | 'Date' | 'Hour';
28
71
  /**
29
72
  * An enum that holds the orientation modes of the scheduler.
73
+ * ```props
74
+ * Vertical :- Denotes the vertical orientation of Timeline Year view.
75
+ * Horizontal :- Denotes the horizontal orientation of Timeline Year view.
76
+ * ```
30
77
  */
31
78
  export declare type Orientation = 'Vertical' | 'Horizontal';
32
79
  /**
33
80
  * An enum that holds the supported excel file formats.
81
+ * ```props
82
+ * csv :- Denotes the excel file format is csv.
83
+ * xlsx :- Denotes the excel file format is xlsx.
84
+ * ```
34
85
  */
35
86
  export declare type ExcelFormat = 'csv' | 'xlsx';
36
87
  /**
37
88
  * An enum that holds the type where the quick info template applies.
89
+ * ```props
90
+ * Both :- Denotes the template applies both to the event and cell.
91
+ * Cell :- Denotes the template applies only to the cell.
92
+ * Event :- Denotes the template applies to the event alone.
93
+ * ```
38
94
  */
39
95
  export declare type TemplateType = 'Both' | 'Cell' | 'Event';
40
96
  /**
41
97
  * An enum that holds the different type of week number options in the scheduler.
98
+ * ```props
99
+ * FirstDay :- Denotes that the first week of the year starts on the first day of the year and ends before the following designated first day of the week.
100
+ * FirstFourDayWeek :- Denotes that the first week of the year is the first week with four or more days before the designated first day of the week.
101
+ * FirstFullWeek :- Denotes that the first week of the year begins on the first occurrence of the designated first day of the week on or after the first day of the year.
102
+ * ```
42
103
  */
43
104
  export declare type WeekRule = 'FirstDay' | 'FirstFourDayWeek' | 'FirstFullWeek';
44
105
  /**
45
106
  * An enum that holds the options to render the spanned events in all day row or time slot.
107
+ * ```props
108
+ * AllDayRow :- Denotes the rendering of spanned events in an all-day row.
109
+ * TimeSlot :- Denotes the rendering of spanned events in an time slot row.
110
+ * ```
46
111
  */
47
112
  export declare type SpannedEventPlacement = 'AllDayRow' | 'TimeSlot';
@@ -110,9 +110,13 @@ var AgendaBase = /** @class */ (function (_super) {
110
110
  if (!isNullOrUndefined(eventLocation) && eventLocation !== '') {
111
111
  eventSubject += ',';
112
112
  }
113
- appSubjectWrap.appendChild(createElement('div', { className: cls.SUBJECT_CLASS, innerHTML: eventSubject }));
113
+ var appSubjectText = createElement('div', { className: cls.SUBJECT_CLASS });
114
+ appSubjectText.innerText = this.parent.sanitize(eventSubject);
115
+ appSubjectWrap.appendChild(appSubjectText);
114
116
  if (!isNullOrUndefined(eventLocation) && eventLocation !== '') {
115
- appSubjectWrap.appendChild(createElement('div', { className: cls.LOCATION_CLASS, innerHTML: eventLocation }));
117
+ var appLocation = createElement('div', { className: cls.LOCATION_CLASS });
118
+ appLocation.innerText = this.parent.sanitize(eventLocation);
119
+ appSubjectWrap.appendChild(appLocation);
116
120
  }
117
121
  if (!isNullOrUndefined(event[fieldMapping.recurrenceRule])) {
118
122
  var iconClass = (event[fieldMapping.id] === event[fieldMapping.recurrenceID]) ?
@@ -87,6 +87,7 @@ export declare class EventBase {
87
87
  updateEventMinimumDuration(startEndHours: Record<string, Date>, startTime: Date, endTime: Date): Record<string, Date>;
88
88
  createEventWrapper(type?: string, index?: number): HTMLElement;
89
89
  getPageCoordinates(e: MouseEvent & TouchEvent): (MouseEvent & TouchEvent) | Touch;
90
+ renderSpannedIcon(element: HTMLElement, spanEvent: Record<string, any>): void;
90
91
  private unWireEvents;
91
92
  destroy(): void;
92
93
  }
@@ -236,12 +236,7 @@ var EventBase = /** @class */ (function () {
236
236
  };
237
237
  EventBase.prototype.filterEvents = function (startDate, endDate, appointments, resourceTdData) {
238
238
  if (appointments === void 0) { appointments = this.parent.eventsProcessed; }
239
- var fieldMapping = this.parent.eventFields;
240
- var predicate = new Predicate(fieldMapping.startTime, 'greaterthanorequal', startDate).
241
- and(new Predicate(fieldMapping.endTime, 'greaterthanorequal', startDate)).
242
- and(new Predicate(fieldMapping.startTime, 'lessthan', endDate)).
243
- or(new Predicate(fieldMapping.startTime, 'lessthanorequal', startDate).
244
- and(new Predicate(fieldMapping.endTime, 'greaterthan', startDate)));
239
+ var predicate = this.parent.dataModule.getStartEndQuery(startDate, endDate);
245
240
  var filter = new DataManager({ json: appointments }).executeLocal(new Query().where(predicate));
246
241
  if (resourceTdData) {
247
242
  filter = this.filterEventsByResource(resourceTdData, filter);
@@ -558,7 +553,7 @@ var EventBase = /** @class */ (function () {
558
553
  return;
559
554
  }
560
555
  var activeEle = document.activeElement;
561
- var selectedCell = this.parent.getSelectedElements();
556
+ var selectedCell = this.parent.getSelectedCells();
562
557
  if (selectedCell.length > 0 && ((activeEle && (this.parent.element.contains(activeEle) ||
563
558
  selectedCell.indexOf(activeEle) !== -1)) || isFocused)) {
564
559
  if (this.parent.keyboardInteractionModule) {
@@ -1118,9 +1113,8 @@ var EventBase = /** @class */ (function () {
1118
1113
  templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);
1119
1114
  }
1120
1115
  else {
1121
- var appointmentSubject = createElement('div', {
1122
- className: cls.SUBJECT_CLASS, innerHTML: eventSubject
1123
- });
1116
+ var appointmentSubject = createElement('div', { className: cls.SUBJECT_CLASS });
1117
+ appointmentSubject.innerText = this.parent.sanitize(eventSubject);
1124
1118
  templateElement = [appointmentSubject];
1125
1119
  }
1126
1120
  append(templateElement, appointmentWrapper);
@@ -1303,6 +1297,29 @@ var EventBase = /** @class */ (function () {
1303
1297
  return eventArgs && eventArgs.changedTouches ? eventArgs.changedTouches[0] : e.changedTouches ? e.changedTouches[0] :
1304
1298
  eventArgs || e;
1305
1299
  };
1300
+ EventBase.prototype.renderSpannedIcon = function (element, spanEvent) {
1301
+ var iconElement = createElement('div', { className: cls.EVENT_INDICATOR_CLASS + ' ' + cls.ICON });
1302
+ if (spanEvent.isLeft) {
1303
+ var iconLeft = iconElement.cloneNode();
1304
+ addClass([iconLeft], cls.EVENT_ICON_LEFT_CLASS);
1305
+ prepend([iconLeft], element);
1306
+ }
1307
+ if (spanEvent.isRight) {
1308
+ var iconRight = iconElement.cloneNode();
1309
+ addClass([iconRight], cls.EVENT_ICON_RIGHT_CLASS);
1310
+ append([iconRight], element);
1311
+ }
1312
+ if (spanEvent.isTop) {
1313
+ var iconTop = iconElement.cloneNode();
1314
+ addClass([iconTop], cls.EVENT_ICON_UP_CLASS);
1315
+ prepend([iconTop], element);
1316
+ }
1317
+ if (spanEvent.isBottom) {
1318
+ var iconBottom = iconElement.cloneNode();
1319
+ addClass([iconBottom], cls.EVENT_ICON_DOWN_CLASS);
1320
+ append([iconBottom], element);
1321
+ }
1322
+ };
1306
1323
  EventBase.prototype.unWireEvents = function () {
1307
1324
  var appElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));
1308
1325
  for (var _i = 0, appElements_1 = appElements; _i < appElements_1.length; _i++) {