The Pickers are not bound to model value when a nullable DateTime is set.
public class MyModel
{
public DateTime? Birthday { get; set; }
}
@(Html.Kendo().TimePickerFor(m => m.Birthday))
The Pickers are not bound to model value when nullable.
The Pickers are not bound to model value when a nullable DateTime is set.
Kendo UI version: 2024.4.1112
jQuery version: x.y
Browser: [all]
### Bug report
When building the scripts through the 'npx gulp scripts' command, there is an error "Error: Cannot find module './build/gulp/kendo-version'".
### Reproduction of the problem
Download any of the source bundles (Core, MVC, jQuery) and try to build the scripts.
### Environment
* **Kendo UI version: 2024.4.1112
Bug report
For the Telerik Scheduler Timeline View, since the update from somewhere in between version 2022.3.1109 to 2024.2.154, a custom timeline view cannot be selected if the view name has dot(s) in its name (e.g. "kendo.ui.customTimelineView").
Reproduction of the problem
Add a custom Timeline View by extending the kendo.ui.TimelineView
Current behavior
Unlike older versions (I know that it worked with version <= 2022.3.1109, but don't know when exactly it was introduced) now the ui blocks, when the custom select view button is clicked. Specifically, the problem is in kendo.scheduler.js at line 4554:
var viewElementToSelect = that.toolbar.find("[" + kendo.attr("name") + "=" + name + "]");
Expected behavior
In this code line, the find method does not work when the variable "name" contains something like "kendo.ui.CustomTimelineView". As a solution, I suggest escaping the name beforehand:
var nameEscaped = $.escapeSelector(name); var viewElementToSelect = that.toolbar.find("[" + kendo.attr("name") + "=" + nameEscaped + "]");
Currently, the Telerik UI for ASP.NET Core DataSource does not expose a Deferred()
API configuration. In comparison to its Telerik UI for ASP.NET MVC counterpart.
It would be beneficial to expose the ability to defer the component in the following manner:
@(Html.Kendo().DataSource<TelerikMvcApp119.Models.OrderViewModel>()
.Name("ds")
.Ajax(dataSource => dataSource
.Read(read => read.Action("AssetType_Read", "AssetTypes"))
)
.Deferred()
)
It will also enable users to employ CSP using a granular deferred initialization into a separate script tag. Annotated with the nonce
attribute
The Telerik UI for ASP.NET Core DataSource does not expose a built-in configuration for deferring the DataSource.
The Telerik UI for ASP.NET Core DataSource should expose a built-in configuration for deferring the DataSource.
### Bug report
When the deferred scripts are created, the script source points at the root of the application instead of the application's root directory.
### Reproduction of the problem
Enable the global deferred initialization and call the @(Html.Kendo().DeferredScriptFile()) method.
The rendered script tag is: <script src="/kendo-deferred-scripts-XXXX.js"></script>
But it must be: <script src="/MyWebsite/kendo-deferred-scripts-XXXX.js"></script>
### Solution:
If you add a tilde in the Url.Content(), the generated script file must be located as expected:
public HtmlString DeferredScriptFile(string nonce = "")
{
...
var scriptResult= hasDeferredScritps ? $@"<script src=""{urlHelper.Content("~/kendo-deferred-scripts-" + guid + ".js")}"" {(string.IsNullOrEmpty(nonce) ? "" : "nonce=" + '"' + nonce + '"')}></script>" : "";
var styleResult = hasDeferredStyles ? $@"<link href=""{urlHelper.Content("~/kendo-deferred-styles-" + guid + ".css")}"" {(string.IsNullOrEmpty(nonce) ? "" : "nonce=" + '"' + nonce + '"')} rel=""stylesheet""></link>" : "";
return new HtmlString(scriptResult + System.Environment.NewLine + styleResult);
}
### Environment
* **Telerik UI for ASP.NET Core version: 2023.3.1114
* **Browser:** [all]
TabStrip is not CSP compliant when the Selected() API configuration is enabled.
Selected()
API configuration for one of the items@(Html.Kendo().TabStrip()
.Name("tabstrip")
.Items(items =>
{
items.Add().Text("Details")
.Selected(true)
.LoadContentFrom("Details", "Home", Model);
})
)
Setting the Select()
API configuration will lead to the following Content Security Policy Header Report Error.
Refused to apply inline style because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'style-src' was not explicitly set, so 'default-src' is used as a fallback.
Setting the Select()
API configuration should not lead to a Content Security Policy Header Report Error.
When the Columns.Command.Edit.UpdateText property is set to Update
, the text will not be modified and will remain as the default value Save
.
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.ProductViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Command(command => {
command.Edit().UpdateText("Update"); //Will not work
}).Width(250);
})
//....
)
REPL
https://netcorerepl.telerik.com/wIuyvtcO41rAa82G36
The text should change to the specified content within UpdateText.
Set the text via JavaScript using the setOptions method and columns.command.text:
$(document).ready(function(){
var grid = $("#grid").data("kendoGrid");
var options = grid.getOptions();
//set the text for the first command in the last column
// as shown in the second example on:
//https://docs.telerik.com/kendo-ui/api/javascript/ui/grid/configuration/columns.command#columnscommandtext
options.columns[4].command[0].text = { edit: "Edit", update: "Update" };
grid.setOptions(options);
});
REPL
https://netcorerepl.telerik.com/wIYeGmOz39LL8mHN26
Hi this is a pretty basic bug. But I am using the k-i-cancel icon class but for some reason it is showing the settings icon?
I have an editable kendo grid in which I have a date field. When I choose a date through the calendar for example: 26.12.2021 on post the model binder parses the date correctly.
If I manually enter the date in the cell the model binder parses the date as it was not an UTC and since my time zone is +2h it comes in the controller as 25.12.2021 22:00
(see the attached files)
Inside my startup.cs I have defined JsonOptions like this:
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
});
In the Configure method:
var supportedCultures = new[] { new CultureInfo("bg-BG") };
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("bg-BG"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
Layout.cshtml
<script src="~/lib/kendo/js/cultures/kendo.culture.bg-BG.min.js"></script>
<script>
kendo.culture("bg-BG");
</script>
This is a strange bug I came across when making a simple grid for a small personal project. I created a class called Book, which looks like this:
[Table("Books")]
public class Book
{
[Key]
public int Id { get; set; }
[Required]
public string Title { get; set; } = null!;
public Checkout? Checkout { get; set; }
[NotMapped]
public bool CheckedOut => Checkout != null;
}
I then created a simple Razor view on which to show the books on a grid. Here is what the code for the page looks like:
@{
ViewData["Title"] = "All Books";
}
@(
Html.Kendo().Grid<LibraryMvc.Core.Entities.Book>()
.Name("bookGrid")
.Pageable(p => {
p.PageSizes(new[] {20, 50, 100 });
p.Numeric(true);
p.Input(true);
})
.Editable(e => e.Mode(GridEditMode.InLine))
.Filterable()
.Sortable()
.Scrollable()
.ToolBar(t => t.Create())
.Columns(col => {
col.Bound(c => c.Id).Title("ID");
col.Bound(c => c.Title).Title("Title");
col.Bound(c => c.CheckedOut).Title("Checked Out");
col.Command(com => {
com.Edit();
com.Destroy();
}).Title("Manage");
})
.DataSource(ds =>
ds.Ajax()
.PageSize(20)
.Model(md => {
md.Id(f => f.Id);
md.Field(f => f.Id).Editable(false);
md.Field(f => f.CheckedOut).Editable(false);
})
.Read(r => r.Action("Book_Read", "Book"))
.Create(c => c.Action("Book_Create", "Book"))
.Update(c => c.Action("Book_Update", "Book"))
.Destroy(c => c.Action("Book_Destroy", "Book"))
)
)
When running my app with this code, I noticed that client-side validation would not work on the grid. Nothing would stop me from adding multiple Book rows with empty Titles, despite Title being a [Required] property based on my Book class's Data Annotations:
I assumed I did something wrong, so I scoured the internet and Telerik's support items in hopes of finding something, but then I came across this when inspecting the page's elements in Chrome's dev tools:
Look at the script tag. For whatever reason, the kendoTextBox ended up using the Razor view's ViewData["Title"] property. Oops!
To work around this, I ended up changing my Book class's Title field to BookTitle, as shown below:
[Table("Books")]
public class Book
{
[Key]
public int Id { get; set; }
[Required]
[Column("Title")]
public string BookTitle { get; set; } = null!;
public Checkout? Checkout { get; set; }
[NotMapped]
public bool CheckedOut => Checkout != null;
}
With this property name changed, I was able to get client-side validation to work as needed:
A second workaround involved getting rid of the ViewData["Title"] definition on my Razor view:
Given all this, it looks like something that's generating the client-side validation on the page is getting tripped up over the word "Title" being used by multiple items on the page.
### Bug report
When the Dialog is configured with actions and the Content Security Policy is enabled, it throws an "Invalid template" error.
### Reproduction of the problem
1) Configure a Dialog widget with actions and set the CSP with the following content:
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' https://kendo.cdn.telerik.com https://code.jquery.com; style-src 'self' 'unsafe-inline' https://kendo.cdn.telerik.com;" />
2) Open the browser console to review the error.
A Dojo sample for reproduction: https://dojo.telerik.com/ULOyazUC
### Expected/desired behavior
The Dialog should be rendered correctly without using the 'unsafe-eval' keyword in the "script-src" directive.
### Workaround
Insert the following script before the Dialog initialization:
<script>
kendo.ui.Dialog.fn._mergeTextWithOptions = function(action) { var text = action.text; if(text) { return kendo.isFunction(text) ? text(this.options) : text; } return ""; }
</script>
### Environment
* **Kendo UI version: 2023.2.606
* **jQuery version: 3.4.1
* **Browser: [all]
When the Model for the Grid inherits the CustomTypeDescriptor, an error is thrown.
Open the attached sample project -
TelerikAspNetCoreApp3.zip
Load the About page
The following error is thrown:
An unhandled exception occurred while processing the request.
InvalidOperationException: Bound columns require a field or property access expression.
Kendo.Mvc.UI.GridBoundColumn<TModel, TValue>..ctor(Grid grid, Expression<Func<TModel, TValue>> expression)
The view should load without any errors
Validation attributes are not rendered on Kendo editors if ViewData contains same key as the model.
@{
ViewData["Title"] = "Home Page";
}
@using (Html.BeginForm())
{
@Html.Kendo().TextBoxFor(model => model.Title)
}
<script>
$(function () {
$("form").kendoValidator();
});
</script>
Validation attributes are not rendered.
Validation attributes should be rendered on the input element.
Dears,
While browsing the new components of UI for Asp Core, I found an Issue in the provided online sample (https://demos.telerik.com/aspnet-core/ripplecontainer/index)
After transferring and moving items between the lists of "RIPPLE ON LIST ITEMS", the list display the raw HTML of the items. So, I provided a screen record reproducing the issue (https://pasteboard.co/I7Fx0AW.gif).
When both UI for ASP.NET MVC and UI for ASP.NET Core Visual Studio extensions are installed and only UI for ASP.NET Core project is loaded, the notification for new version is shown for UI for ASP.NET MVC.
Test Environment:
OS Version: 22H2 OS Build 22621.1702
Edge Version: Edge(Chromium) Version 114.0.1823.37 (Official build) (64-bit)
Pre requisites:
High contrast mode: Settings->Accessibility->contrast themes-> select Aquatic/desert theme
Repro-Steps:
Users with low vision and who rely on high contrast aquatic and desert theme will face difficulties if the selected date is not visible clearly.
Hi,
From: Edit in Telerik REPL
https://demos.telerik.com/aspnet-core/gantt
Results:
One or more compilation failures occurred: /Views/Snippet.cshtml(24,18): Error RZ1006: The section block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
Thanks
Andreas
As per the subject, if you use jQuery to get a Kendo TabStrip in a ComboBox change event it inserts this div into the TabStrip control:
<div class="k-tabstrip-items-wrapper k-hstack">
<ul class="k-tabstrip-items k-reset" role="tablist"></ul>
</div>
This used to work as we were changing the selected tab in a TabStrip based on a ComboBox selection, but this no longer works. Please see the following REPL where a new div is added every time you change the ComboBox value:
https://netcorerepl.telerik.com/mxETafaT24zWOe0C50
Kind regards,
David
In the ThemeBuilder the controls do not use the latest version.
For instance while playing around with the ThemeBuilder I noticed that the primary button does not look primary like on the demos page.
Also it would be helpful to provide a page where you explain where every color is used.