Search code examples
angularkendo-uitelerikkendo-ui-angular2kendo-datepicker

How to enable closing of calendar when the same date is chosen kendo-datepicker Angular?


I have a <kendo-datepicker/>. It works perfectly, however it does not give a chance to select the previous date twice.

For example, if I choose the following date 1.1.2018, then <kendo-datepicker/> closes with selected date. It is okay.
However, if I want to select the same date 1.1.2018, then <kendo-datepicker/> does not close with selected date.

You can reproduce this behaviour at Basic Usage of Overview of kendo-datepicker.

Is it possible to choose the same date(1.1.2018) after I chosen the date(1.1.2018)?


Solution

  • I decided to handle click event at the day of calendar and use toggle method on kendo-datepicker to collapse calendar.

    So we have kendo-datepicker:

    <kendo-datepicker #kendoDataPicker>
        <ng-template kendoCalendarCellTemplate let-date>
            <div (click)="handleClickCell(kendoDataPicker, date)">
                {{date.getDate()}}
            </div>
        </ng-template>
    </kendo-datepicker>
    

    and JavaScript code:

    handleClickCell(kendoDataPicker : any, selectedDate: any){
        if( kendoDataPicker.hasOwnProperty('_value')
            && typeof( kendoDataPicker._value)!=='undefined'
            && typeof( selectedDate)!=='undefined'
            && selectedDate.toString() === kendoDataPicker._value.toString()
          ){
                kendoDataPicker.toggle();
        }
    }
    

    It is so cool that toggle() method of kendo-datepicker method can work out whether calendar should be collapsed or not.