Hello,
I have a kendo UI Scheduler which is used to load events.
I have an issue that when I close an item and it reloads the data, the calendar scrolls up to the top, losing the focus.
Here's a snippet of code:
doubleClickInSingleClick(event: any, popupInstance: any) { if (this.eventClickTime == 0) { // set first click this.eventClickTime = new Date().getTime(); } else { // compare first click to this click and see if they occurred within double click threshold if (new Date().getTime() - this.eventClickTime < 250) { // double click occurred this.productInstanceId = event.id; this.popupInstanceRef = this.modalService.open(popupInstance, { size: "xl", }); this.popupInstanceRef.result.then(noop, () => { this.calendarBehavior.loadCalendarData(); }); this.eventClickTime = 0; } else { // not a double click so set as a new first click this.eventClickTime = new Date().getTime(); } } }
And here's the HTML
<div id="scheduler" style="overflow-x: auto; white-space: nowrap">
<kendo-scheduler
#schedulerComponent
[kendoSchedulerBinding]="(this.calendarBehavior.events | async)!"
style="overflow: none; min-width: 750px"
[loading]="(this.calendarBehavior.loading| async)!"
[selectedDate]="this.calendarBehavior.selectedDate"
[selectedViewIndex]="3"
(dateChange)="this.calendarBehavior.onDateChange($event)"
>
<kendo-scheduler-day-view>
<ng-template kendoSchedulerEventTemplate let-event="event">
<div (click)="doubleClickInSingleClick(event, instanceModal)">
<!-- Added this hidden label as calendar sorting bu the text inside the event, where can sort by alerts and can have un expected sortion -->
<label style="width: 1px; height: 1px; color: transparent"
>{{ event.dataItem.dataItem.instance.productSku }}
{{ event.dataItem.dataItem.instance.groupNumber }}
</label>
<span
*ngIf="
event.dataItem.instance.ticketCount <
event.dataItem.instance.bookedCount
"
class="ticket-alert-icon"
style="font-size: 10px"
>
<i class="fas fa-ticket-alt"></i>
<i class="fas fa-exclamation-circle text-warning bg-light"></i>
</span>
<span
*ngIf="event.dataItem.instance.tourOperatedByPartner"
class="partner-icon"
>
<i class="fas fa-handshake"></i>
</span>
<span *ngFor="let iconPath of event.description.split(';')"
><img
*ngIf="event.description.length > 0"
class="alert-icon"
src="{{ this.calendarBehavior.getImageUrl(iconPath) }}"
width="10"
/> </span
>
<span
[style.color]="event.dataItem.dataItem.titleColor"
[style.font-size.px]="'10'"
>
{{ event.title }} </span
>
</div>
</ng-template>
</kendo-scheduler-day-view>
<kendo-scheduler-week-view> </kendo-scheduler-week-view>
<kendo-scheduler-month-view>
<ng-template kendoSchedulerEventTemplate let-event="event">
<div (click)="doubleClickInSingleClick(event, instanceModal)">
<span
[style.color]="event.dataItem.dataItem.titleColor"
[style.font-size.px]="'10'"
>
{{ event.title }}</span
>
</div>
</ng-template>
</kendo-scheduler-month-view>
<kendo-scheduler-agenda-view>
<ng-template kendoSchedulerEventTemplate let-event="event">
<div (click)="doubleClickInSingleClick(event, instanceModal)">
<!-- Added this hidden label as calendar sorting bu the text inside the event, where can sort by alerts and can have un expected sortion -->
<label style="width: 1px; height: 1px; color: transparent"
>{{ event.dataItem.dataItem.instance.productSku }}
{{ event.dataItem.dataItem.instance.groupNumber }}</label
>
<span
*ngIf="
event.dataItem.instance.ticketsRequired &&
event.dataItem.instance.ticketCount <
event.dataItem.instance.bookedCount
"
class="ticket-alert-icon"
>
<i class="fas fa-ticket-alt"></i>
<i class="fas fa-exclamation-circle text-warning bg-light"></i>
</span>
<span *ngIf="event.dataItem.instance.tourOperatedByPartner" class="partner-icon">
<i class="fas fa-handshake"></i>
</span>
<span *ngFor="let iconPath of event.description.split(';')"
><img
*ngIf="event.description.length > 0"
class="alert-icon"
src="{{ this.calendarBehavior.getImageUrl(iconPath) }}"
width="24"
/> </span
>
<span [style.color]="event.dataItem.dataItem.titleColor">
{{event.dataItem.instance.tourOperatedByPartner ? event.dataItem.instance.companyName + " - " : ""}}{{ event.title }} </span
>
</div>
</ng-template>
</kendo-scheduler-agenda-view>
</kendo-scheduler>
If I comment the this. calendar behavior.loadCalendarData(); the scroll position is maintained. is there a simple way I can tell the Scheduler to maintain the position?
On a really old version of Kendo UI components, it was not pushing to the top.
Any suggestion?
Thanks
Hi,
Thank you very much for the details provided.
I will need some more time to investigate the matter and will get back to you with an update by the end of the day.
Thank you for your patience.
Regards,Georgi
Progress Telerik