David Rhodes
Top achievements
Rank 1
David Rhodes
asked on 14 Nov 2019, 02:22 PM
3 Answers, 1 is accepted
0
David Rhodes
Top achievements
Rank 1
answered on 14 Nov 2019, 02:25 PM
JS
window.blazorFunctions = { moveTelerikCalendarHeader: function (id) { var calendar = $(id); var header = calendar.find(".k-calendar-header"); var monthView = calendar.find(".k-calendar-monthview"); // move the header to underneathe the month views $(header).detach().insertAfter(monthView); // the header should be hidden in CSS so need to redisplay it header.css("display", "flex"); }, // sets the month names on the Telerik Blazor Calendar setTelerikCalendarMonthNames: function (id, startMonth, year) { const monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var calendar = $(id); var monthView = calendar.find(".k-calendar-monthview"); monthView.children().each(function () { var thead = $(this).find("thead"); var rowId = "MonthNames"; var monthNameRow = $(thead).find("#" + rowId); // display eg November 2019 var monthDisplay = monthNames[startMonth] + ' ' + year; // if the row has already been added then update the existing value if (monthNameRow.length !== 0) { monthNameRow.find("th").text(monthDisplay); } else { thead.prepend('<tr id="' + rowId + '"><th colspan="7">' + monthDisplay + '</th></tr>'); } // increase the month startMonth += 1; if (startMonth > 11) { year += 1; startMonth = startMonth - 12; } }); }};
Razor
protected override async Task OnAfterRenderAsync(bool firstRender){ if (firstRender) { await JSRuntime.InvokeAsync<object>("blazorFunctions.setTelerikCalendarMonthNames", "#daysOffCalendar .k-calendar", (DateTime.Today.Month - 1), DateTime.Today.Year); await JSRuntime.InvokeAsync<object>("blazorFunctions.moveTelerikCalendarHeader", "#daysOffCalendar .k-calendar"); }}async Task DateChangedHandler(DateTime firstDateOfNewRange){ int month = firstDateOfNewRange.Month - 1; await JSRuntime.InvokeAsync<object>("blazorFunctions.setTelerikCalendarMonthNames", "#daysOffCalendar .k-calendar", month, firstDateOfNewRange.Year);}
0
David Rhodes
Top achievements
Rank 1
answered on 14 Nov 2019, 02:27 PM
a bit off css too
.k-calendar { padding-top: 10px; .k-today, .k-title { display: none; } /* initially hide the header to avoid FOUC, it is moved to bottom using js */ .k-calendar-header { display: none; justify-content: flex-end; }}0
Hello David,
Thank you for sharing your code with the community. Perhaps it would get better visibility if you post a sample (or at least a link) from your original request: https://feedback.telerik.com/blazor/1434620-calendar-labeling-on-multi-month-view-month-names-to-be-above-each-month (I'd rather you do it instead of me because all credit should go to you). If you like you can even open a pull request with a sample under a new calendar folder in this repo: https://github.com/telerik/blazor-ui.
Regards,
Marin Bratanov
Progress Telerik