@syncfusion/ej2-schedule 22.2.12 → 23.1.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/ej2-schedule.min.js +3 -3
- package/dist/ej2-schedule.umd.min.js +3 -3
- package/dist/ej2-schedule.umd.min.js.map +1 -1
- package/dist/es6/ej2-schedule.es2015.js +309 -67
- package/dist/es6/ej2-schedule.es2015.js.map +1 -1
- package/dist/es6/ej2-schedule.es5.js +311 -67
- package/dist/es6/ej2-schedule.es5.js.map +1 -1
- package/dist/global/ej2-schedule.min.js +3 -3
- package/dist/global/ej2-schedule.min.js.map +1 -1
- package/dist/global/index.d.ts +2 -2
- package/package.json +16 -16
- package/src/schedule/actions/crud.d.ts +1 -1
- package/src/schedule/actions/crud.js +13 -5
- package/src/schedule/actions/data.js +29 -8
- package/src/schedule/actions/keyboard.js +1 -2
- package/src/schedule/actions/virtual-scroll.d.ts +1 -0
- package/src/schedule/actions/virtual-scroll.js +37 -2
- package/src/schedule/base/constant.d.ts +6 -0
- package/src/schedule/base/constant.js +6 -0
- package/src/schedule/base/interface.d.ts +15 -0
- package/src/schedule/base/resource.js +1 -0
- package/src/schedule/base/schedule-model.d.ts +48 -35
- package/src/schedule/base/schedule.d.ts +60 -35
- package/src/schedule/base/schedule.js +74 -6
- package/src/schedule/event-renderer/event-base.js +17 -11
- package/src/schedule/models/views-model.d.ts +10 -1
- package/src/schedule/models/views.d.ts +9 -1
- package/src/schedule/models/views.js +3 -0
- package/src/schedule/popups/event-tooltip.js +7 -3
- package/src/schedule/popups/event-window.d.ts +7 -0
- package/src/schedule/popups/event-window.js +123 -29
- package/src/schedule/popups/quick-popups.js +3 -0
- package/styles/bootstrap-dark.css +15 -0
- package/styles/bootstrap.css +15 -0
- package/styles/bootstrap4.css +15 -0
- package/styles/bootstrap5-dark.css +15 -0
- package/styles/bootstrap5.css +15 -0
- package/styles/fabric-dark.css +15 -0
- package/styles/fabric.css +15 -0
- package/styles/fluent-dark.css +15 -0
- package/styles/fluent.css +15 -0
- package/styles/highcontrast-light.css +15 -0
- package/styles/highcontrast.css +15 -0
- package/styles/material-dark.css +15 -1
- package/styles/material.css +15 -1
- package/styles/material3-dark.css +16 -2
- package/styles/material3-dark.scss +1 -1
- package/styles/material3.css +16 -2
- package/styles/material3.scss +1 -1
- package/styles/recurrence-editor/bootstrap-dark.scss +1 -1
- package/styles/recurrence-editor/bootstrap.scss +1 -1
- package/styles/recurrence-editor/bootstrap4.scss +1 -1
- package/styles/recurrence-editor/bootstrap5-dark.scss +1 -1
- package/styles/recurrence-editor/bootstrap5.scss +1 -1
- package/styles/recurrence-editor/fabric-dark.scss +1 -1
- package/styles/recurrence-editor/fabric.scss +1 -1
- package/styles/recurrence-editor/fluent-dark.scss +1 -1
- package/styles/recurrence-editor/fluent.scss +1 -1
- package/styles/recurrence-editor/highcontrast-light.scss +1 -1
- package/styles/recurrence-editor/highcontrast.scss +1 -1
- package/styles/recurrence-editor/material-dark.css +0 -1
- package/styles/recurrence-editor/material-dark.scss +1 -1
- package/styles/recurrence-editor/material.css +0 -1
- package/styles/recurrence-editor/material.scss +1 -1
- package/styles/recurrence-editor/material3-dark.css +0 -1
- package/styles/recurrence-editor/material3-dark.scss +1 -1
- package/styles/recurrence-editor/material3.css +0 -1
- package/styles/recurrence-editor/material3.scss +1 -1
- package/styles/recurrence-editor/tailwind-dark.css +0 -1
- package/styles/recurrence-editor/tailwind-dark.scss +1 -1
- package/styles/recurrence-editor/tailwind.css +0 -1
- package/styles/recurrence-editor/tailwind.scss +1 -1
- package/styles/schedule/_layout.scss +15 -0
- package/styles/schedule/_material3-definition.scss +1 -1
- package/styles/schedule/bootstrap-dark.css +15 -0
- package/styles/schedule/bootstrap-dark.scss +1 -1
- package/styles/schedule/bootstrap.css +15 -0
- package/styles/schedule/bootstrap.scss +1 -1
- package/styles/schedule/bootstrap4.css +15 -0
- package/styles/schedule/bootstrap4.scss +1 -1
- package/styles/schedule/bootstrap5-dark.css +15 -0
- package/styles/schedule/bootstrap5-dark.scss +1 -1
- package/styles/schedule/bootstrap5.css +15 -0
- package/styles/schedule/bootstrap5.scss +1 -1
- package/styles/schedule/fabric-dark.css +15 -0
- package/styles/schedule/fabric-dark.scss +1 -1
- package/styles/schedule/fabric.css +15 -0
- package/styles/schedule/fabric.scss +1 -1
- package/styles/schedule/fluent-dark.css +15 -0
- package/styles/schedule/fluent-dark.scss +1 -1
- package/styles/schedule/fluent.css +15 -0
- package/styles/schedule/fluent.scss +1 -1
- package/styles/schedule/highcontrast-light.css +15 -0
- package/styles/schedule/highcontrast-light.scss +1 -1
- package/styles/schedule/highcontrast.css +15 -0
- package/styles/schedule/highcontrast.scss +1 -1
- package/styles/schedule/material-dark.css +15 -1
- package/styles/schedule/material-dark.scss +1 -1
- package/styles/schedule/material.css +15 -1
- package/styles/schedule/material.scss +1 -1
- package/styles/schedule/material3-dark.css +16 -2
- package/styles/schedule/material3-dark.scss +1 -1
- package/styles/schedule/material3.css +16 -2
- package/styles/schedule/material3.scss +1 -1
- package/styles/schedule/tailwind-dark.css +15 -1
- package/styles/schedule/tailwind-dark.scss +1 -1
- package/styles/schedule/tailwind.css +15 -1
- package/styles/schedule/tailwind.scss +1 -1
- package/styles/tailwind-dark.css +15 -2
- package/styles/tailwind.css +15 -2
|
@@ -38,7 +38,7 @@ import { Print } from '../exports/print';
|
|
|
38
38
|
import { IRenderer, ActionEventArgs, NavigatingEventArgs, CellClickEventArgs, RenderCellEventArgs, ScrollCss, TimezoneFields } from '../base/interface';
|
|
39
39
|
import { EventClickArgs, EventRenderedArgs, PopupOpenEventArgs, UIStateArgs, DragEventArgs, ResizeEventArgs } from '../base/interface';
|
|
40
40
|
import { EventFieldsMapping, TdData, ResourceDetails, ResizeEdges, ExportOptions, SelectEventArgs } from '../base/interface';
|
|
41
|
-
import { ViewsData, PopupCloseEventArgs, HoverEventArgs, MoreEventsClickArgs, CallbackFunction } from '../base/interface';
|
|
41
|
+
import { ViewsData, PopupCloseEventArgs, HoverEventArgs, MoreEventsClickArgs, ScrollEventArgs, CallbackFunction } from '../base/interface';
|
|
42
42
|
import { CalendarUtil, CalendarType } from '../../common/calendar-util';
|
|
43
43
|
import { ResourceBase } from '../base/resource';
|
|
44
44
|
import { Timezone } from '../timezone/timezone';
|
|
@@ -93,6 +93,8 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
|
|
|
93
93
|
private eventTooltipTemplateFn;
|
|
94
94
|
private headerTooltipTemplateFn;
|
|
95
95
|
private editorTemplateFn;
|
|
96
|
+
private editorHeaderTemplateFn;
|
|
97
|
+
private editorFooterTemplateFn;
|
|
96
98
|
private quickInfoTemplatesHeaderFn;
|
|
97
99
|
private quickInfoTemplatesContentFn;
|
|
98
100
|
private quickInfoTemplatesFooterFn;
|
|
@@ -561,6 +563,28 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
|
|
|
561
563
|
* @aspType string
|
|
562
564
|
*/
|
|
563
565
|
editorTemplate: string | Function;
|
|
566
|
+
/**
|
|
567
|
+
* The template option to render the customized header of the editor window.
|
|
568
|
+
*
|
|
569
|
+
*
|
|
570
|
+
* @default null
|
|
571
|
+
* @angularType string | object
|
|
572
|
+
* @reactType string | function | JSX.Element
|
|
573
|
+
* @vueType string | function
|
|
574
|
+
* @aspType string
|
|
575
|
+
*/
|
|
576
|
+
editorHeaderTemplate: string | Function;
|
|
577
|
+
/**
|
|
578
|
+
* The template option to render the customized footer of the editor window.
|
|
579
|
+
*
|
|
580
|
+
*
|
|
581
|
+
* @default null
|
|
582
|
+
* @angularType string | object
|
|
583
|
+
* @reactType string | function | JSX.Element
|
|
584
|
+
* @vueType string | function
|
|
585
|
+
* @aspType string
|
|
586
|
+
*/
|
|
587
|
+
editorFooterTemplate: string | Function;
|
|
564
588
|
/**
|
|
565
589
|
* The template option to customize the quick window. The three sections of the quick popup whereas the header, content,
|
|
566
590
|
* and footer can be easily customized with individual template option.
|
|
@@ -744,55 +768,47 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
|
|
|
744
768
|
/**
|
|
745
769
|
* Triggers on beginning of every scheduler action.
|
|
746
770
|
*
|
|
747
|
-
* {% codeBlock src='schedule/actionBegin/index.md' %}{% endcodeBlock %}
|
|
748
|
-
*
|
|
749
771
|
* @event 'actionBegin'
|
|
750
772
|
*/
|
|
751
773
|
actionBegin: EmitType<ActionEventArgs>;
|
|
752
774
|
/**
|
|
753
775
|
* Triggers on successful completion of the scheduler actions.
|
|
754
776
|
*
|
|
755
|
-
* {% codeBlock src='schedule/actionComplete/index.md' %}{% endcodeBlock %}
|
|
756
|
-
*
|
|
757
777
|
* @event 'actionComplete'
|
|
758
778
|
*/
|
|
759
779
|
actionComplete: EmitType<ActionEventArgs>;
|
|
760
780
|
/**
|
|
761
781
|
* Triggers when a scheduler action gets failed or interrupted and an error information will be returned.
|
|
762
782
|
*
|
|
763
|
-
* {% codeBlock src='schedule/actionFailure/index.md' %}{% endcodeBlock %}
|
|
764
|
-
*
|
|
765
783
|
* @event 'actionFailure'
|
|
766
784
|
*/
|
|
767
785
|
actionFailure: EmitType<ActionEventArgs>;
|
|
768
786
|
/**
|
|
769
787
|
* Triggers before the date or view navigation takes place on scheduler.
|
|
770
788
|
*
|
|
771
|
-
* {% codeBlock src='schedule/navigating/index.md' %}{% endcodeBlock %}
|
|
772
|
-
*
|
|
773
789
|
* @event 'navigating'
|
|
774
790
|
*/
|
|
775
791
|
navigating: EmitType<NavigatingEventArgs>;
|
|
776
792
|
/**
|
|
777
793
|
* Triggers before each element of the schedule rendering on the page.
|
|
778
794
|
*
|
|
779
|
-
* {% codeBlock src='schedule/renderCell/index.md' %}{% endcodeBlock %}
|
|
780
|
-
*
|
|
781
795
|
* @event 'renderCell'
|
|
782
796
|
*/
|
|
783
797
|
renderCell: EmitType<RenderCellEventArgs>;
|
|
784
798
|
/**
|
|
785
799
|
* Triggers when the events are single clicked or on single tapping the events on the mobile devices.
|
|
786
800
|
*
|
|
787
|
-
* {% codeBlock src='schedule/eventClick/index.md' %}{% endcodeBlock %}
|
|
788
|
-
*
|
|
789
801
|
* @event 'eventClick'
|
|
790
802
|
*/
|
|
791
803
|
eventClick: EmitType<EventClickArgs>;
|
|
792
804
|
/**
|
|
793
|
-
* Triggers
|
|
805
|
+
* Triggers when the events are double clicked or on double tapping the events on the desktop devices.
|
|
794
806
|
*
|
|
795
|
-
*
|
|
807
|
+
* @event 'eventDoubleClick'
|
|
808
|
+
*/
|
|
809
|
+
eventDoubleClick: EmitType<EventClickArgs>;
|
|
810
|
+
/**
|
|
811
|
+
* Triggers before each of the event getting rendered on the scheduler user interface.
|
|
796
812
|
*
|
|
797
813
|
* @event 'eventRendered'
|
|
798
814
|
*/
|
|
@@ -800,79 +816,73 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
|
|
|
800
816
|
/**
|
|
801
817
|
* Triggers before the data binds to the scheduler.
|
|
802
818
|
*
|
|
803
|
-
* {% codeBlock src='schedule/dataBinding/index.md' %}{% endcodeBlock %}
|
|
804
|
-
*
|
|
805
819
|
* @event 'dataBinding'
|
|
806
820
|
*/
|
|
807
821
|
dataBinding: EmitType<ReturnType>;
|
|
808
822
|
/**
|
|
809
823
|
* Triggers before any of the scheduler popups opens on the page.
|
|
810
824
|
*
|
|
811
|
-
* {% codeBlock src='schedule/popupOpen/index.md' %}{% endcodeBlock %}
|
|
812
|
-
*
|
|
813
825
|
* @event 'popupOpen'
|
|
814
826
|
*/
|
|
815
827
|
popupOpen: EmitType<PopupOpenEventArgs>;
|
|
816
828
|
/**
|
|
817
829
|
* Triggers before any of the scheduler popups close on the page.
|
|
818
830
|
*
|
|
819
|
-
* {% codeBlock src='schedule/popupClose/index.md' %}{% endcodeBlock %}
|
|
820
|
-
*
|
|
821
831
|
* @event 'popupClose'
|
|
822
832
|
*/
|
|
823
833
|
popupClose: EmitType<PopupCloseEventArgs>;
|
|
824
834
|
/**
|
|
825
835
|
* Triggers when an appointment is started to drag.
|
|
826
836
|
*
|
|
827
|
-
* {% codeBlock src='schedule/dragStart/index.md' %}{% endcodeBlock %}
|
|
828
|
-
*
|
|
829
837
|
* @event 'dragStart'
|
|
830
838
|
*/
|
|
831
839
|
dragStart: EmitType<DragEventArgs>;
|
|
832
840
|
/**
|
|
833
841
|
* Triggers when an appointment is being in a dragged state.
|
|
834
842
|
*
|
|
835
|
-
* {% codeBlock src='schedule/drag/index.md' %}{% endcodeBlock %}
|
|
836
|
-
*
|
|
837
843
|
* @event 'drag'
|
|
838
844
|
*/
|
|
839
845
|
drag: EmitType<DragEventArgs>;
|
|
840
846
|
/**
|
|
841
847
|
* Triggers when the dragging of appointment is stopped.
|
|
842
848
|
*
|
|
843
|
-
* {% codeBlock src='schedule/dragStop/index.md' %}{% endcodeBlock %}
|
|
844
|
-
*
|
|
845
849
|
* @event 'dragStop'
|
|
846
850
|
*/
|
|
847
851
|
dragStop: EmitType<DragEventArgs>;
|
|
848
852
|
/**
|
|
849
853
|
* Triggers when an appointment is started to resize.
|
|
850
854
|
*
|
|
851
|
-
* {% codeBlock src='schedule/resizeStart/index.md' %}{% endcodeBlock %}
|
|
852
|
-
*
|
|
853
855
|
* @event 'resizeStart'
|
|
854
856
|
*/
|
|
855
857
|
resizeStart: EmitType<ResizeEventArgs>;
|
|
856
858
|
/**
|
|
857
859
|
* Triggers when an appointment is being in a resizing action.
|
|
858
860
|
*
|
|
859
|
-
* {% codeBlock src='schedule/resizing/index.md' %}{% endcodeBlock %}
|
|
860
|
-
*
|
|
861
861
|
* @event 'resizing'
|
|
862
862
|
*/
|
|
863
863
|
resizing: EmitType<ResizeEventArgs>;
|
|
864
864
|
/**
|
|
865
865
|
* Triggers when the resizing of appointment is stopped.
|
|
866
866
|
*
|
|
867
|
-
* {% codeBlock src='schedule/resizeStop/index.md' %}{% endcodeBlock %}
|
|
868
|
-
*
|
|
869
867
|
* @event 'resizeStop'
|
|
870
868
|
*/
|
|
871
869
|
resizeStop: EmitType<ResizeEventArgs>;
|
|
872
870
|
/**
|
|
873
|
-
* Triggers
|
|
871
|
+
* Triggers when the scroll action is started.
|
|
872
|
+
* This event triggers only when `allowVirtualScrolling` or `enableLazyLoading` properties are enabled along with resource grouping.
|
|
874
873
|
*
|
|
875
|
-
*
|
|
874
|
+
* @event 'virtualScrollStart'
|
|
875
|
+
*/
|
|
876
|
+
virtualScrollStart: EmitType<ScrollEventArgs>;
|
|
877
|
+
/**
|
|
878
|
+
* Triggers when the scroll action is stopped.
|
|
879
|
+
* This event triggers only when `allowVirtualScrolling` or `enableLazyLoading` properties are enabled along with resource grouping.
|
|
880
|
+
*
|
|
881
|
+
* @event 'virtualScrollStop'
|
|
882
|
+
*/
|
|
883
|
+
virtualScrollStop: EmitType<ScrollEventArgs>;
|
|
884
|
+
/**
|
|
885
|
+
* Triggers once the event data is bound to the scheduler.
|
|
876
886
|
*
|
|
877
887
|
* @event 'dataBound'
|
|
878
888
|
*/
|
|
@@ -918,6 +928,7 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
|
|
|
918
928
|
*/
|
|
919
929
|
sanitize(value: string, element: HTMLElement): void;
|
|
920
930
|
private initializeResources;
|
|
931
|
+
private destroyEditorWindow;
|
|
921
932
|
/**
|
|
922
933
|
* Method to render the layout elements
|
|
923
934
|
*
|
|
@@ -1207,6 +1218,20 @@ export declare class Schedule extends Component<HTMLElement> implements INotifyP
|
|
|
1207
1218
|
* @private
|
|
1208
1219
|
*/
|
|
1209
1220
|
getEditorTemplate(): CallbackFunction;
|
|
1221
|
+
/**
|
|
1222
|
+
* Method to process editor header template
|
|
1223
|
+
*
|
|
1224
|
+
* @returns {CallbackFunction} Returns the callback function
|
|
1225
|
+
* @private
|
|
1226
|
+
*/
|
|
1227
|
+
getEditorHeaderTemplate(): CallbackFunction;
|
|
1228
|
+
/**
|
|
1229
|
+
* Method to process editor footer template
|
|
1230
|
+
*
|
|
1231
|
+
* @returns {CallbackFunction} Returns the callback function
|
|
1232
|
+
* @private
|
|
1233
|
+
*/
|
|
1234
|
+
getEditorFooterTemplate(): CallbackFunction;
|
|
1210
1235
|
/**
|
|
1211
1236
|
* Method to process quick info header template
|
|
1212
1237
|
*
|
|
@@ -187,6 +187,13 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
187
187
|
this.renderElements(isSetModel);
|
|
188
188
|
}
|
|
189
189
|
};
|
|
190
|
+
Schedule.prototype.destroyEditorWindow = function () {
|
|
191
|
+
if (this.eventWindow) {
|
|
192
|
+
this.eventWindow.destroy();
|
|
193
|
+
this.eventWindow = null;
|
|
194
|
+
}
|
|
195
|
+
this.eventWindow = new EventWindow(this);
|
|
196
|
+
};
|
|
190
197
|
/**
|
|
191
198
|
* Method to render the layout elements
|
|
192
199
|
*
|
|
@@ -356,7 +363,8 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
356
363
|
headerRows: this.headerRows,
|
|
357
364
|
orientation: 'Horizontal',
|
|
358
365
|
numberOfWeeks: 0,
|
|
359
|
-
displayDate: null
|
|
366
|
+
displayDate: null,
|
|
367
|
+
enableLazyLoading: false
|
|
360
368
|
};
|
|
361
369
|
var viewOptions = this.viewCollections[this.viewIndex];
|
|
362
370
|
var viewsData = extend(scheduleOptions, viewOptions, undefined, true);
|
|
@@ -367,6 +375,11 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
367
375
|
viewsData.displayDate = viewsData.displayDate instanceof Date ? new Date(viewsData.displayDate.getTime()) :
|
|
368
376
|
new Date(viewsData.displayDate);
|
|
369
377
|
}
|
|
378
|
+
if (viewsData.enableLazyLoading && !isNullOrUndefined(viewsData.group.resources) && viewsData.group.resources.length > 0 &&
|
|
379
|
+
(['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(viewsData.option) === -1 ||
|
|
380
|
+
(viewsData.option === 'TimelineYear' && viewsData.orientation === 'Vertical'))) {
|
|
381
|
+
viewsData.allowVirtualScrolling = true;
|
|
382
|
+
}
|
|
370
383
|
return viewsData;
|
|
371
384
|
};
|
|
372
385
|
Schedule.prototype.initializeDataModule = function () {
|
|
@@ -428,6 +441,8 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
428
441
|
this.headerTooltipTemplateFn = this.templateParser(this.activeViewOptions.group.headerTooltipTemplate);
|
|
429
442
|
this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);
|
|
430
443
|
this.editorTemplateFn = this.templateParser(this.editorTemplate);
|
|
444
|
+
this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
|
|
445
|
+
this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
|
|
431
446
|
this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);
|
|
432
447
|
this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);
|
|
433
448
|
this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);
|
|
@@ -1069,6 +1084,24 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
1069
1084
|
Schedule.prototype.getEditorTemplate = function () {
|
|
1070
1085
|
return this.editorTemplateFn;
|
|
1071
1086
|
};
|
|
1087
|
+
/**
|
|
1088
|
+
* Method to process editor header template
|
|
1089
|
+
*
|
|
1090
|
+
* @returns {CallbackFunction} Returns the callback function
|
|
1091
|
+
* @private
|
|
1092
|
+
*/
|
|
1093
|
+
Schedule.prototype.getEditorHeaderTemplate = function () {
|
|
1094
|
+
return this.editorHeaderTemplateFn;
|
|
1095
|
+
};
|
|
1096
|
+
/**
|
|
1097
|
+
* Method to process editor footer template
|
|
1098
|
+
*
|
|
1099
|
+
* @returns {CallbackFunction} Returns the callback function
|
|
1100
|
+
* @private
|
|
1101
|
+
*/
|
|
1102
|
+
Schedule.prototype.getEditorFooterTemplate = function () {
|
|
1103
|
+
return this.editorFooterTemplateFn;
|
|
1104
|
+
};
|
|
1072
1105
|
/**
|
|
1073
1106
|
* Method to process quick info header template
|
|
1074
1107
|
*
|
|
@@ -1586,6 +1619,22 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
1586
1619
|
this.eventWindow.setDialogContent();
|
|
1587
1620
|
}
|
|
1588
1621
|
break;
|
|
1622
|
+
case 'editorHeaderTemplate':
|
|
1623
|
+
if (!isNullOrUndefined(this.editorHeaderTemplate)) {
|
|
1624
|
+
this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
|
|
1625
|
+
}
|
|
1626
|
+
if (this.eventWindow) {
|
|
1627
|
+
this.eventWindow.setDialogHeader();
|
|
1628
|
+
}
|
|
1629
|
+
break;
|
|
1630
|
+
case 'editorFooterTemplate':
|
|
1631
|
+
if (!isNullOrUndefined(this.editorFooterTemplate)) {
|
|
1632
|
+
this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
|
|
1633
|
+
}
|
|
1634
|
+
if (this.eventWindow) {
|
|
1635
|
+
this.eventWindow.setDialogFooter();
|
|
1636
|
+
}
|
|
1637
|
+
break;
|
|
1589
1638
|
case 'quickInfoTemplates':
|
|
1590
1639
|
if (this.quickInfoTemplates.header) {
|
|
1591
1640
|
this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);
|
|
@@ -2356,13 +2405,17 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
2356
2405
|
this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);
|
|
2357
2406
|
break;
|
|
2358
2407
|
case 'editorTemplate':
|
|
2359
|
-
|
|
2360
|
-
this.eventWindow.destroy();
|
|
2361
|
-
this.eventWindow = null;
|
|
2362
|
-
}
|
|
2363
|
-
this.eventWindow = new EventWindow(this);
|
|
2408
|
+
this.destroyEditorWindow();
|
|
2364
2409
|
this.editorTemplateFn = this.templateParser(this.editorTemplate);
|
|
2365
2410
|
break;
|
|
2411
|
+
case 'editorHeaderTemplate':
|
|
2412
|
+
this.destroyEditorWindow();
|
|
2413
|
+
this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);
|
|
2414
|
+
break;
|
|
2415
|
+
case 'editorFooterTemplate':
|
|
2416
|
+
this.destroyEditorWindow();
|
|
2417
|
+
this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);
|
|
2418
|
+
break;
|
|
2366
2419
|
case 'tooltipTemplate':
|
|
2367
2420
|
case 'headerTooltipTemplate':
|
|
2368
2421
|
if (this.eventTooltip) {
|
|
@@ -2844,6 +2897,12 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
2844
2897
|
__decorate([
|
|
2845
2898
|
Property()
|
|
2846
2899
|
], Schedule.prototype, "editorTemplate", void 0);
|
|
2900
|
+
__decorate([
|
|
2901
|
+
Property()
|
|
2902
|
+
], Schedule.prototype, "editorHeaderTemplate", void 0);
|
|
2903
|
+
__decorate([
|
|
2904
|
+
Property()
|
|
2905
|
+
], Schedule.prototype, "editorFooterTemplate", void 0);
|
|
2847
2906
|
__decorate([
|
|
2848
2907
|
Complex({}, QuickInfoTemplates)
|
|
2849
2908
|
], Schedule.prototype, "quickInfoTemplates", void 0);
|
|
@@ -2925,6 +2984,9 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
2925
2984
|
__decorate([
|
|
2926
2985
|
Event()
|
|
2927
2986
|
], Schedule.prototype, "eventClick", void 0);
|
|
2987
|
+
__decorate([
|
|
2988
|
+
Event()
|
|
2989
|
+
], Schedule.prototype, "eventDoubleClick", void 0);
|
|
2928
2990
|
__decorate([
|
|
2929
2991
|
Event()
|
|
2930
2992
|
], Schedule.prototype, "eventRendered", void 0);
|
|
@@ -2955,6 +3017,12 @@ var Schedule = /** @class */ (function (_super) {
|
|
|
2955
3017
|
__decorate([
|
|
2956
3018
|
Event()
|
|
2957
3019
|
], Schedule.prototype, "resizeStop", void 0);
|
|
3020
|
+
__decorate([
|
|
3021
|
+
Event()
|
|
3022
|
+
], Schedule.prototype, "virtualScrollStart", void 0);
|
|
3023
|
+
__decorate([
|
|
3024
|
+
Event()
|
|
3025
|
+
], Schedule.prototype, "virtualScrollStop", void 0);
|
|
2958
3026
|
__decorate([
|
|
2959
3027
|
Event()
|
|
2960
3028
|
], Schedule.prototype, "dataBound", void 0);
|
|
@@ -797,12 +797,13 @@ var EventBase = /** @class */ (function () {
|
|
|
797
797
|
});
|
|
798
798
|
}
|
|
799
799
|
};
|
|
800
|
-
EventBase.prototype.eventDoubleClick = function (
|
|
800
|
+
EventBase.prototype.eventDoubleClick = function (eventData) {
|
|
801
|
+
var _this = this;
|
|
801
802
|
if (this.parent.quickPopup) {
|
|
802
803
|
this.parent.quickPopup.quickPopupHide(true);
|
|
803
804
|
}
|
|
804
|
-
if (
|
|
805
|
-
this.activeEventData(
|
|
805
|
+
if (eventData.type === 'touchstart') {
|
|
806
|
+
this.activeEventData(eventData, true);
|
|
806
807
|
}
|
|
807
808
|
this.removeSelectedAppointmentClass();
|
|
808
809
|
this.parent.selectedElements = [];
|
|
@@ -810,14 +811,19 @@ var EventBase = /** @class */ (function () {
|
|
|
810
811
|
this.parent.activeEventData.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS)) {
|
|
811
812
|
return;
|
|
812
813
|
}
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
814
|
+
var args = extend(this.parent.activeEventData, { cancel: false, originalEvent: eventData });
|
|
815
|
+
this.parent.trigger(event.eventDoubleClick, args, function (eventDoubleClickArgs) {
|
|
816
|
+
if (!eventDoubleClickArgs.cancel) {
|
|
817
|
+
if (!isNullOrUndefined(_this.parent.activeEventData.event) &&
|
|
818
|
+
isNullOrUndefined(_this.parent.activeEventData.event[_this.parent.eventFields.recurrenceID])) {
|
|
819
|
+
_this.parent.eventWindow.openEditor(_this.parent.activeEventData.event, 'Save');
|
|
820
|
+
}
|
|
821
|
+
else {
|
|
822
|
+
_this.parent.currentAction = 'EditOccurrence';
|
|
823
|
+
_this.parent.quickPopup.openRecurrenceAlert();
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
});
|
|
821
827
|
};
|
|
822
828
|
EventBase.prototype.getEventByGuid = function (guid) {
|
|
823
829
|
return this.parent.eventsProcessed.filter(function (data) { return data.Guid === guid; })[0];
|
|
@@ -68,7 +68,7 @@ export interface ViewsModel {
|
|
|
68
68
|
endHour?: string;
|
|
69
69
|
|
|
70
70
|
/**
|
|
71
|
-
* It is used to allow or disallow the virtual scrolling functionality
|
|
71
|
+
* It is used to allow or disallow the virtual scrolling functionality.
|
|
72
72
|
*
|
|
73
73
|
* @default false
|
|
74
74
|
*/
|
|
@@ -317,4 +317,13 @@ export interface ViewsModel {
|
|
|
317
317
|
*/
|
|
318
318
|
displayDate?: Date;
|
|
319
319
|
|
|
320
|
+
/**
|
|
321
|
+
* Enables the lazy loading of events for scrolling actions only when the resources grouping property is enabled.
|
|
322
|
+
* Lazy loading allows the scheduler to fetch the appointments dynamically during scroll actions for the currently rendered resource collection.
|
|
323
|
+
* New event data is fetched on-demand as the user scrolls through the schedule content.
|
|
324
|
+
*
|
|
325
|
+
* @default false
|
|
326
|
+
*/
|
|
327
|
+
enableLazyLoading?: boolean;
|
|
328
|
+
|
|
320
329
|
}
|
|
@@ -62,7 +62,7 @@ export declare class Views extends ChildProperty<Views> {
|
|
|
62
62
|
*/
|
|
63
63
|
endHour: string;
|
|
64
64
|
/**
|
|
65
|
-
* It is used to allow or disallow the virtual scrolling functionality
|
|
65
|
+
* It is used to allow or disallow the virtual scrolling functionality.
|
|
66
66
|
*
|
|
67
67
|
* @default false
|
|
68
68
|
*/
|
|
@@ -286,4 +286,12 @@ export declare class Views extends ChildProperty<Views> {
|
|
|
286
286
|
* @default null
|
|
287
287
|
*/
|
|
288
288
|
displayDate: Date;
|
|
289
|
+
/**
|
|
290
|
+
* Enables the lazy loading of events for scrolling actions only when the resources grouping property is enabled.
|
|
291
|
+
* Lazy loading allows the scheduler to fetch the appointments dynamically during scroll actions for the currently rendered resource collection.
|
|
292
|
+
* New event data is fetched on-demand as the user scrolls through the schedule content.
|
|
293
|
+
*
|
|
294
|
+
* @default false
|
|
295
|
+
*/
|
|
296
|
+
enableLazyLoading: boolean;
|
|
289
297
|
}
|
|
@@ -122,6 +122,9 @@ var Views = /** @class */ (function (_super) {
|
|
|
122
122
|
__decorate([
|
|
123
123
|
Property()
|
|
124
124
|
], Views.prototype, "displayDate", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
Property(false)
|
|
127
|
+
], Views.prototype, "enableLazyLoading", void 0);
|
|
125
128
|
return Views;
|
|
126
129
|
}(ChildProperty));
|
|
127
130
|
export { Views };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { isNullOrUndefined, append, createElement, addClass, initializeCSPTemplate } from '@syncfusion/ej2-base';
|
|
2
|
+
import { isNullOrUndefined, append, createElement, addClass, initializeCSPTemplate, removeClass } from '@syncfusion/ej2-base';
|
|
3
3
|
import { Tooltip } from '@syncfusion/ej2-popups';
|
|
4
4
|
import * as cls from '../base/css-constant';
|
|
5
5
|
import * as util from '../base/util';
|
|
@@ -19,7 +19,7 @@ var EventTooltip = /** @class */ (function () {
|
|
|
19
19
|
cssClass: this.parent.cssClass + ' ' + cls.EVENT_TOOLTIP_ROOT_CLASS,
|
|
20
20
|
target: this.getTargets(),
|
|
21
21
|
beforeRender: this.onBeforeRender.bind(this),
|
|
22
|
-
|
|
22
|
+
beforeClose: this.onTooltipClose.bind(this),
|
|
23
23
|
enableRtl: this.parent.enableRtl,
|
|
24
24
|
enableHtmlSanitizer: this.parent.enableHtmlSanitizer
|
|
25
25
|
});
|
|
@@ -127,7 +127,11 @@ var EventTooltip = /** @class */ (function () {
|
|
|
127
127
|
}
|
|
128
128
|
this.parent.renderTemplates();
|
|
129
129
|
};
|
|
130
|
-
EventTooltip.prototype.onTooltipClose = function () {
|
|
130
|
+
EventTooltip.prototype.onTooltipClose = function (args) {
|
|
131
|
+
if (args.element) {
|
|
132
|
+
removeClass([args.element], cls.POPUP_OPEN);
|
|
133
|
+
addClass([args.element], cls.POPUP_CLOSE);
|
|
134
|
+
}
|
|
131
135
|
this.parent.resetTemplates(['tooltipTemplate', 'headerTooltipTemplate']);
|
|
132
136
|
};
|
|
133
137
|
EventTooltip.prototype.setContent = function (content) {
|
|
@@ -29,11 +29,18 @@ export declare class EventWindow {
|
|
|
29
29
|
private dialogEvent;
|
|
30
30
|
constructor(parent: Schedule);
|
|
31
31
|
private renderEventWindow;
|
|
32
|
+
private renderDialogButtons;
|
|
33
|
+
private addEventHandlers;
|
|
32
34
|
refresh(): void;
|
|
33
35
|
refreshRecurrenceEditor(): void;
|
|
34
36
|
setRecurrenceEditor(recurrenceEditor: RecurrenceEditor): void;
|
|
35
37
|
openEditor(data: Record<string, any>, type: CurrentAction, isEventData?: boolean, repeatType?: number): void;
|
|
36
38
|
setDialogContent(): void;
|
|
39
|
+
setDialogHeader(): void;
|
|
40
|
+
setDialogFooter(): void;
|
|
41
|
+
private createAdaptiveHeaderElement;
|
|
42
|
+
private getDialogHeader;
|
|
43
|
+
private getDialogFooter;
|
|
37
44
|
private preventEventSave;
|
|
38
45
|
private onBeforeOpen;
|
|
39
46
|
private onBeforeClose;
|