Planned
Last Updated: 19 Nov 2024 09:55 by ADMIN
Scheduled for 2025 Q2 (May)
Created by: Janick
Comments: 2
Category: UI for ASP.NET Core
Type: Feature Request
4

Consider the use of TextWriter async methods for the HTML Helpers, for example the WriteInitializationScript methods.  In certain scenarios the use of the synchronous methods causes an exception: System.InvalidOperationException: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.

This can be resolved by explicitly enabling synchronous operations

services.Configure<IISServerOptions>(options =>
    {
        options.AllowSynchronousIO = true;
    });

though synchronous operations have been disabled by default at framework level as of .NET 3.0.

Planned
Last Updated: 19 Nov 2024 08:58 by ADMIN
Scheduled for 2025 Q1 (Feb)
Created by: Kaya
Comments: 0
Category: DateTimePickers
Type: Feature Request
1

This just seems like a minor oversight since the Enable(bool) method exists on the DatePicker html helper and other Kendo taghelpers support the enable or enabled attribute, but there doesn't seem to be an enable-like attribute for the kendo-datepicker. Thanks!

<kendo-datepicker for="ReadOnlyDate" enable="false"></kendo-datepicker>

Planned
Last Updated: 19 Nov 2024 08:58 by ADMIN
Scheduled for 2025 Q1 (Feb)
Created by: Alistair
Comments: 0
Category: Wizard
Type: Feature Request
3

Currently, the Content function for Steps in a Wizard only accepts a string value (see API here). 
This means that in order to add a partial view (bound to the current model and its properties), the most straightforward way I could find was to put the partial view (and any wrappers) in its own file and add an extension method "ToHtmlString()". For example:

@model MyModel

@(Html.Kendo().Wizard().Steps(step => {

step.Add().Content(Html.Partial("~/Path/To/View/Wrapper.cshtml", Model).ToHtmlString());

})

using Microsoft.AspNetCore.Html;
using System.IO;

public static class HtmlContentExtensions
{
    public static string ToHtmlString(this IHtmlContent htmlContent)
    {
        if (htmlContent is HtmlString htmlString)
        {
            return htmlString.Value;
        }

        using StringWriter writer = new();
        htmlContent.WriteTo(writer, System.Text.Encodings.Web.HtmlEncoder.Default);
        return writer.ToString();
    }
}
This is not ideal, as it requires the usage of Html.Partial (which displays a warning in the latest versions of .NET 8). It is also awkward as it sometimes means that new view files need to be created for the explicit purpose of being a "wrapper" even though they do not contain much content. And lastly, it also requires an extension method, so it's not immediately easy for other Telerik users to use.

In the Telerik TabStrip, a better approach is possible, as the Content for Items can take in a function which accepts Razor syntax (see API here). For instance:

@model MyModel @(Html.Kendo().TabStrip().Items(tabstrip => { tabstrip.Add()

.Content(@<div id="@Model.TabContainer" class="myTabWrapperClass">

@await Html.PartialAsync("~/Path/To/View.cshtml", Model)

</div>); })

In this case, we can use Html.PartialAsync (avoiding .NET 8 warnings), we don't need an extension method, and it is easy to add any required "wrapping" such as a div with an ID, without needing a whole separate view.

If we had the option to use the same approach with Wizard Steps, that would be ideal!

Unplanned
Last Updated: 18 Nov 2024 13:42 by David
Created by: David
Comments: 0
Category: Grid
Type: Feature Request
0

By default, when the "paste" command is added, the default option is "insert" mode ("Paste (Insert)"). Is it possible to add an option that allows setting the default paste mode to "replace" ("Paste (Replace)")?

Unplanned
Last Updated: 18 Nov 2024 12:41 by Ben
Created by: Ben
Comments: 0
Category: Scheduler
Type: Feature Request
1

In the Scheduler's Timeline view when there are events with the same Start and End dates and one of them is resized, the Scheduler reorders the events automatically, placing the longest event on top and the shortest event at the bottom of the slot. The same occurs in other views, for example, in the Week view the events are automatically reordered from left to right (longest to shortest).

It would be nice to be able to control this behavior and disable it through a dedicated option.

Completed
Last Updated: 13 Nov 2024 13:27 by ADMIN
Release 2024 Q4 (Nov)
Created by: Peter
Comments: 5
Category: DateTimePickers
Type: Feature Request
0

.NET 6 introduced DateOnly and TimeOnly types, but none of the relevant date/time controls support these types.

There is already a feature request to support DateOnly in DatePicker; this feature request is about adding support for TimeOnly to TimePicker.

Unplanned
Last Updated: 13 Nov 2024 13:21 by Luis
Created by: Luis
Comments: 0
Category: Grid
Type: Feature Request
1

Currently, when using the default Grid search functionality and the column filter menus, we observe the following:

  • When a column filter is applied first, using the Search feature afterward overrides the column filters, applying the search filter with the "contains" operator to the specified columns.
  • Conversely, when a search is performed first and then followed by a column filter, the grid generally functions as expected.

However, there’s a specific scenario where this does not work properly:

  • If a search is performed and then a column filter is applied to a column where the search criteria are relevant, the Grid returns no data.

For example:

  • After searching for "2018," the expected columns displayed in the filters (notably, the ContractNumber is among them).

  • When a column filter is subsequently applied to ContractNumber (e.g., setting it to "2018-CR0018"), the Grid removes the ContractNumber from the search filters and adds the column filter with an "AND" operator. This setup returns no data because of the search filters and the "AND" operator.


Expected Behavior and Alternative

This functionality behaves correctly in the Telerik UI for Blazor Grid component - the search and column filters are managed as separate objects.

Is it possible to enhance the Grid filtering similar to the Blazor Grid?

Completed
Last Updated: 11 Nov 2024 15:10 by ADMIN
Release 2024 Q4 (Nov)
Created by: n/a
Comments: 0
Category: UI for ASP.NET Core
Type: Feature Request
2

At this stage, the Serialize() method depends on Newtonsoft.Json:

using Newtonsoft.Json;

namespace Kendo.Mvc.Infrastructure
{
    public class DefaultJavaScriptSerializer : IJavaScriptSerializer
    {
        public string Serialize(object value)
        {
            return JsonConvert.SerializeObject(value).Replace(@"<", @"\u003c").Replace(@">", @"\u003e");
        }
    }
}

Is it possible to remove the dependency and use the System.Text.Json serializer instead?

Completed
Last Updated: 11 Nov 2024 11:24 by ADMIN
Release 2024 Q4 (Nov)
Created by: Brian
Comments: 2
Category: Grid
Type: Feature Request
17
The DateOnly type has been introduced in .NET 6 but isn't supported by Telerik DatePickers although Telerik is compatible with .NET 7 now.

I'd like DateOnly support to be introduced to Telerik UI for ASP.NET Core because my Grid uses that type and issues occur in the Grid's PopUp and InLine editing fields that are bound to DateOnly fields.
Unplanned
Last Updated: 11 Nov 2024 07:42 by ADMIN

Hi, is there a way to configure the grid so that when it's grouped and later sorted, the grouping state (expanded/collapsed) is preserved?

Kind Regards

Erwin

Unplanned
Last Updated: 01 Nov 2024 19:44 by Phillip
Created by: Phillip
Comments: 0
Category: Grid
Type: Feature Request
1

It would be convenient to have built-in MultiColumnComboBox editing for the Grid.

I was hoping the component would show the addresses formatted in columns (as per a fields list) and then return the address concatenated into a single to the grid field (e.g. from .DataTextField("FullAddress")).

Declined
Last Updated: 21 Oct 2024 15:10 by Pedro
Created by: Pedro
Comments: 2
Category: TextBox
Type: Feature Request
1
I would like you to implement the asp-for attribute functionality in the TextBox element used with TagHelpers, i.e. <kendo-textbox asp-for="FieldOfModel" />. Currently it works using HtmlHelpers, with @(Html.Kendo().TextBoxFor(m => m.Email)) but if you use asp-for in a <kendo-textbox> it gives an error.
Unplanned
Last Updated: 16 Oct 2024 08:10 by ADMIN
Created by: David
Comments: 4
Category: ColorPicker
Type: Feature Request
1

When my company's users create a new "customer site" they upload the customer's logo and then choose some colours that will form the basis of theming for the customer's site.  In that way, a customer will 'feel' like they have their own branded experience when using 'their' website.

The colours are inevitably based on the customer's logo.  To use the colour picker component, I have to train my users to go to Paint, load the logo, choose the colour using the colour picker, go into the palette and 'copy the crazy 6-digit numbers that may contain letters of the alphabet that starts with a #' and paste that into the colour picker of our web site.

Rather, I would prefer if they could simply use an eyedropper from the ColorPicker component using functionality similar to https://imagecolorpicker.com/en  It would save training and greatly improve the useability of my website.

Can I put that forward as being a feature request?

Thanks

Dave A

 

Unplanned
Last Updated: 10 Oct 2024 09:14 by Amit
Created by: Amit
Comments: 0
Category: MultiSelect
Type: Feature Request
1

Implement an AllowCustom option in the MultiSelect, which would make possible to select a custom value that is not present in the data.

This option is available in the Kendo UI for Angular MultiSelect:
https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/multiselectcomponent#allowcustom
https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/custom-values

Unplanned
Last Updated: 07 Oct 2024 09:32 by Aiden
Created by: Aiden
Comments: 0
Category: Editor
Type: Feature Request
0

Consider changing the design for the ColorPicker's input mode selection.

Currently, this is done through clicking a button with "up" and "down" arrow icons:

A more UI-friendly design for the mode selection would be nice to have, for instance, a radio group, dropdown, switch, etc.

 

Unplanned
Last Updated: 07 Oct 2024 08:26 by Aiden
Created by: Aiden
Comments: 0
Category: Editor
Type: Feature Request
0

When the fonts and font size dropdown is selected, it will be helpful to view the preview of fonts before applying it to text. Similarly for font size also it will be good to preview them.

Unplanned
Last Updated: 07 Oct 2024 08:01 by Aiden

In the table wizard the caption alignment dropdown looks very long than required

### Suggestion

Either the dropdown size can be collapsed, or we can describe the images to accommodate the longer size:

Unplanned
Last Updated: 23 Sep 2024 16:05 by Emily
Created by: Emily
Comments: 3
Category: Grid
Type: Feature Request
3

I'm in the process of rewriting all Kendo components to use CSP compatible templates. I'm looking at https://docs.telerik.com/aspnet-core/html-helpers/template/overview which shows how we'd use TemplateComponentName() for popup editors and that we would need to rewrite everything in the popup editor to use Kendo Template's AddHtml or AddComponent methods.

Original:

<div class="mb-2 row required"> @Html.LabelFor(model => model.FileName, new { @class = "col-sm-4 col-form-label fw-bold text-sm-end" }) <div class="col-sm-6"> @(Html.Kendo().TextBoxFor(model => model.FileName).HtmlAttributes(new { @class = "w-100" })) </div> </div> <div class="mb-2 row"> @Html.LabelFor(model => model.FileDescription, new { @class = "col-sm-4 col-form-label fw-bold text-sm-end" }) <div class="col-sm-6"> @(Html.Kendo().TextBoxFor(model => model.FileDescription).HtmlAttributes(new { @class = "w-100" })) </div> </div>

Rewritten:

@(Html.Kendo().Template()
	.AddHtml("<div class='mb-2 row required'>")
	.AddHtml(@<text>
		@Html.LabelFor(model => model.FileName, new { @class = "col-sm-4 col-form-label fw-bold text-sm-end" })
	</text>)
	.AddHtml("<div class='col-sm-6'>")
	.AddComponent(c => c.TextBoxFor(model => model.FileName).HtmlAttributes(new { @class = "w-100" }))
	.AddHtml("</div></div>")

	.AddHtml("<div class='mb-2 row'>")
	.AddHtml(@<text>
		@Html.LabelFor(model => model.FileDescription, new { @class = "col-sm-4 col-form-label fw-bold text-sm-end" })
	</text>)
	.AddHtml("<div class='col-sm-6'>")
	.AddComponent(c => c.TextBoxFor(model => model.FileDescription).HtmlAttributes(new { @class = "w-100" }))
	.AddHtml("</div></div>")
)

While this works, this markup seems much harder to read than the original. Could this be made to be simpler? Ideally I'd like to be able to drop my existing mix of html and kendo components in one method and it'd parse through to render the template properly.

 

Completed
Last Updated: 12 Sep 2024 13:07 by ADMIN
Release 2024 Q3 (Aug)
Preserve the selection when the enter key is pressed for the popup calendar of the DateRangePicker 
Unplanned
Last Updated: 05 Sep 2024 11:19 by Carl

When creating columns in a TagHelper Grid definition, the Width property allows only numbers:

                                <column field="OrderID" width="100">
                                </column>

This does not match the width property in the Kendo UI and HtmlHelpers Grid definitions which allow string values to be entered as well:
https://docs.telerik.com/kendo-ui/api/javascript/ui/grid/configuration/columns.width

That way, the developer will be able to add rem and other unit values in TagHelper syntax as well.

Also, it would be convenient if there is a new property similar to this:

                                <column field="OrderID" tooltip="Unique Number of the Order">
                                </column>
The alternative workaround of setting html-attributes is not applying to header <th> cells which makes it unusable:
                                <column field="Freight"
                                        html-attributes='new Dictionary<string, object>{ ["style"] = "width: 30rem;" }'>
                                </column>

1 2 3 4 5 6