Completed
Last Updated: 10 Nov 2026 15:42 by ADMIN
Release 2026 Q4 (Nov)
The file info passed in UploadSuccessEventArgs to the event contains HTML entities

e.g. for the file "Golf & Country Club.png" the file info name is "Golf & Country Club"  which leads to an exception.
Completed
Last Updated: 10 Nov 2026 13:52 by ADMIN
Release 2026 Q4 (Nov)

Bug report

Reproduction of the problem

(bug report only)
The label of the filter menu icon displays: “column filter menu settings”. In version 12.0.0 it included the name of the column field.

1. Run this example: https://blazorrepl.telerik.com/cKFaOPvO56rcaHqx16
2. Hover a filter icon in the Grid’s header with the mouse cursor.

Current behavior

(optional)
The label “column filter menu settings” appears.

Expected/desired behavior

The label text includes the column name, e.g., “Price column filter menu settings”.

Workaround:

https://blazorrepl.telerik.com/cUPYaPlO55EJNiKJ24

Environment

  • Kendo/Telerik version: 15.0.1
  • Browser: [all]
Completed
Last Updated: 10 Nov 2026 13:49 by ADMIN
Release 2026 Q4 (Nov)

 

Hello,

The issue can be reproduced in a Grid with column virtualization enabled and Navigable set to true. Please run this REPL snippet https://blazorrepl.telerik.com/QHusmyOJ027Rp5Ok38, click on any column, the appropriate row will be selected and the corresponding table cell will be focused. Try to navigate to the right by using Right cursor key - you will not be able to navigate through the whole table, values in last columns will not be displayed and the grid seems think they are in the same cell with User Number in my particular case. When you use Left cursor key and then the Right one again you will not be able to see even these columns headers.

I attached a small video to better demonstarte the issue on my particular machine.

Very thanks.

Miroslav

 

Completed
Last Updated: 10 Nov 2026 13:47 by ADMIN
Release 2026 Q4 (Nov)

Bug report

Reproduction of the problem

(bug report only)
The clear button in the ComboBox (MultiColumnComboBox, etc.) currently renders as a span element and has the following attributes:

<span class="k-clear-value" role="button" tabindex="-1" title="Clear">
  ...
</span>

Excluding a button from the Tab key sequence does not hide it from a screen reader user. A screen reader user navigating by virtual cursor (using arrow keys or "next button" shortcuts) can and will still find this span element. When they arrive at it, they will hear "Clear, button." Naturally, they will press Enter or Space to activate it.

Current behavior

(optional)
Provide additional information if the steps for reproducing the faulty behavior are not sufficient to describe the issue.

Expected/desired behavior

Make the span WCAG 4.1.2 compliant: https://www.w3.org/WAI/standards-guidelines/act/rules/97a4e1/

<span 
  class="k-clear-value" 
  role="button" 
  tabindex="-1" 
  aria-label="Clear selection"
  title="Clear">
  ...
</span>

We can also consider completely hiding the span from screen readers, by rendering aria-hidden="true" on the span element, for example: 

<span 
  class="k-clear-value" 
  role="button" 
  tabindex="-1" 
  aria-hidden="true">
</span>

The Kendo Angular ComboBox implements a similar approach. This will be in accordance with WCAG 4.1.2, because aria-hidden="true" removes the element from the accessibility tree entirely, it is no longer parsed as an active UI component by screen readers.

TicketID:

(optional)
Provide the TicketID, where the bug report initiated.

Environment

  • Kendo/Telerik version:
  • Browser: [all ]
Completed
Last Updated: 10 Nov 2026 13:46 by ADMIN
Release 2026 Q4 (Nov)

Entering dates in the Blazor spreadsheet act weird if you enter a 2 digit year. It seems to subtract a day when you remove focus from the cell.

Start by entering a date like 2/2/25:

Then hit enter or otherwise remove focus from the cell and this is what it changes it to. Notice it subtracts a day:

Then put focus back on the cell:

Now look at the editor at the top:

I note that when you enter a two digit year in Excel it defaults the century to 20 when you enter a year less than 30. It defaults a century of 19 when you enter a year >= 30. It appears that with the Telerik Blazor spreadsheet it always defaults the century to 19. You can make arguments on either side of that but the real issue here is that it subtracts a day when you enter a two digit year. It doesn't do that when you enter a 4 digit year.

The related thing that becomes an issue is when you export the spreadsheet to a byte array and evaluate the cell RawValue. When you enter a 4 digit year, you get a raw value that is a positive number and you can use FormatHelper.ConvertDoubleToDateTime to get the date value. When you enter a 2 digit year and get the raw value, it is a negative number, and when you call FormatHelper.ConvertDoubleToDateTime it returns null.

Can you please comment on the rhyme or reason the spreadsheet behaves this way? Or is this a bug(s)?

Thanks.

Completed
Last Updated: 10 Nov 2026 13:46 by ADMIN
Release 2026 Q4 (Nov)
The AriaLabel parameter should render the aria-label attribute on the ul element as per the latest accessibility standards.
Completed
Last Updated: 10 Nov 2026 13:45 by ADMIN
Release 2026 Q4 (Nov)
Loading Groups on Demand in a column with a nullable data type groups all records under the "Null" group
Completed
Last Updated: 10 Nov 2026 08:31 by ADMIN
Release 2026 Q4 (Nov)

Bug report

Reproduction of the problem

(bug report only)
Regression introduced in 15.1.0.

  1. Run this example on a mobile device: https://blazorrepl.telerik.com/wUlaGWlv26jsx5Mi00
  1. Attempt pinch-to-zoom over the Map.

Current behavior

(optional)
A js exception is thrown (see details in the related ticket).

Expected/desired behavior

Zoom in/out works as expected.

Workaround:

https://blazorrepl.telerik.com/QKbkwiFl21IX6YvX13

Environment

  • Kendo/Telerik version:
  • Browser: [ Mobile Chrome XX ]
Completed
Last Updated: 06 Nov 2026 10:50 by ADMIN
Release 2026 Q4 (Nov)
Created by: Juwon
Comments: 2
Category: DropDownButton
Type: Feature Request
7
  • I want to track when the popup element of the DropDownButton is opened and closed.
  • I also want to have an Open method via the component reference

===

ADMIN EDIT

===

For the time being, a possible option is to use the DropDownList component that exposes such events. Customize it so it can look and behave similarly to the DropDownButton.

Example implementation: https://blazorrepl.telerik.com/mekbkTPE21kwyMBU05.

Completed
Last Updated: 06 Nov 2026 09:48 by ADMIN
Release 2026 Q4 (Nov)

Example:

<PageTitle>Home</PageTitle>

<div>
    <TelerikTextBox Width="20rem" Placeholder="Pallet" DebounceDelay="1000" @bind-Value="@_textInput" OnChange="@(async (input) => await OnInputChanged(input))" />
</div>
<p>@_textInput</p>


@code {
    private string? _textInput;

    private async Task OnInputChanged(object input)
    {
        Console.WriteLine($"Immediate: function parameter: {input}, bound variable: {_textInput}");
        await Task.Delay(1000);
        Console.WriteLine($"Delayed: function parameter: {input}, bound variable: {_textInput}");
        //Make the OnChange event receive the immediate value when the DebounceDelay is set
    }
}

The DebounceDelay is set to 1 second to highlight the behavior, although we have observed it with delays less than 100 milliseconds when the input is from a barcode scanner and the Enter is part of the scan. Start the sample, type "123" in the input, and hit enter within 1 second.

The output in the console is:
Immediate: function parameter: , bound variable:
Delayed: function parameter: , bound variable: 123

Completed
Last Updated: 29 Oct 2026 15:10 by ADMIN
Release 2026 (Oct)

Bug report

Reproduction of the problem

(bug report only)
1. Run this example: https://blazorrepl.telerik.com/cUaBGOOZ34pkp6wB57
2. Inspect the MultiSelect’s input.
3. Click within the component’s input area, to open its popup.

The issue is also reproducible in the other dropdown components: https://blazorrepl.telerik.com/GUurGmvw32oPqGYu03

Current behavior

(optional)
When the dropdown opens, an aria-controls attribute is applied to the MultiSelect’s input. Its value does not match any existing DOM element.

Expected/desired behavior

The value of the aria-controls attribute should point at an existing element (e.g., the popup’s list element: https://www.telerik.com/blazor-ui/documentation/components/multiselect/accessibility/wai-aria-support#multiselect-wrapping-element ). But in this case the MultiSelect is not bound to data and a list element is not rendered in the popup.

Environment

  • Kendo/Telerik version: 14.1.0
  • jQuery version:
  • Browser: [all ]
Completed
Last Updated: 29 Oct 2026 11:57 by ADMIN
Release 2026 Q4 (Nov)
Created by: Walter
Comments: 0
Category: UI for Blazor
Type: Bug Report
0

Bug report

Reproduction of the problem

Environment

  • Version 15.1.0
  • Blazor Server, .NET 10
  • Chromium (Chrome and Playwright headless)

Grid ColumnDraggable is never destroyed
In Components/Common/Grid/Rows/TableHeaderRow.cs, Dispose() calls base.Dispose() first, which sets IsDisposed = true. It then calls DestroyColumnDraggable(), which uses InvokeAsync<object>. That method returns early when IsDisposed is true (BaseComponent.InvokeAsync<T>), so destroyColumnDraggable is never sent to the browser. DestroyColumnReorderable() and DestroyColumnResizable() work because they use InvokeVoidAsync, which has no such check.

As a result, every grid with Reorderable="true" or Groupable="true" leaves "<dataId>-telerik-ColumnDraggable" in window.TelerikBlazor._instances. Its draggable.element (the grid's .k-grid-header) keeps the whole disposed page reachable, so the page is never garbage collected.

  1. Create two routable pages. Page A has a TelerikGrid with Reorderable="true" and a TelerikTabStrip with a few tabs. Page B is empty.
  2. Open Page A, then navigate to Page B with the in-app router (no full reload).
  3. Run this in the browser console:
Object.entries(TelerikBlazor._instances)
     .filter(([k, i]) => i && i.element && !i.element.isConnected)
     .map(([k, i]) => k + ' / ' + i.constructor.name)

Sample project attached.

TelerikBlazorApp1.zip

Current behavior

(optional)
one "...-telerik-ColumnDraggable" entry per reorderable or groupable grid, all pointing at detached elements. Each pageA -> pageB round trip adds more, and the detached DOM is never released.

Expected/desired behavior

An empty array is returned. Page A's components were disposed, so their JS instances should have been destroyed.

Workaround

After each navigation, we destroy and remove any registered instance whose element is no longer in the page:

   const instances = window.TelerikBlazor && window.TelerikBlazor._instances;
   for (const key of Object.keys(instances || {})) {
       const i = instances[key];
       if (i && i.element && !i.element.isConnected) {
           try { i.destroy && i.destroy(); } catch (e) { }
           delete instances[key];
       }
   }

Suggested Fix

  1. In TableHeaderRow.DestroyColumnDraggable(), use InvokeVoidAsync, as DestroyColumnReorderable() does. Or call the destroy methods before base.Dispose().

Environment

  • Kendo/Telerik version:
  • Browser: [Chrome XX, Firefox]
Completed
Last Updated: 29 Oct 2026 11:55 by ADMIN
Release 2026 Q4 (Nov)

In version 15.1.0, the Editor causes a browser freeze when it contains a custom tool and the Value is changed programmatically. It works as expected in version 15.0.1.

The issue occurs only in WebAssembly apps.

Test page:

@using Telerik.Blazor.Components.Editor

<TelerikButton OnClick="@(() => EditorValue = "<p>baz</p><p>baz</p>")" ButtonType="@ButtonType.Button">Change Editor Value</TelerikButton>

<TelerikEditor Tools="@EditorTools"
               @bind-Value="@EditorValue">
    <EditorCustomTools>
        <EditorCustomTool Name="CustomEditorTool">
            custom tool here
        </EditorCustomTool>
    </EditorCustomTools>
</TelerikEditor>

@code {
    private string EditorValue { get; set; } = @"<p>foo</p><p>bar</p>";
    private List<IEditorTool> EditorTools { get; set; } = new();

    protected override void OnInitialized()
    {
        EditorTools.Add(new CustomTool("CustomEditorTool"));

        base.OnInitialized();
    }
}

 

Completed
Last Updated: 23 Oct 2026 09:32 by ADMIN
Release 2026 Q4 (Nov)
Created by: Kees
Comments: 5
Category: FileManager
Type: Feature Request
51

The ability to choose which options to appear in the ContextMenu.

=====

TELERIK EDIT: In the meantime, here is how to hide context menu items with CSS:

    /* Hide the Rename item in the FileManager context menu */
    .k-context-menu:has(.k-svg-i-download) .k-menu-item:nth-of-type(1) {
        display: none;
    }

    /* Hide the Delete item in the FileManager context menu */
    .k-context-menu:has(.k-svg-i-download) .k-menu-item:nth-of-type(3) {
        display: none;
    }

Here is a complete example: https://blazorrepl.telerik.com/cpPkuBEq408A36p010

 

Completed
Last Updated: 23 Oct 2026 09:32 by ADMIN
Release 2026 Q4 (Nov)
Created by: Scott
Comments: 2
Category: UI for Blazor
Type: Feature Request
78
This is a feature request for the port of the Image Editor to Blazor.
Completed
Last Updated: 23 Oct 2026 09:32 by ADMIN
Release 2026 Q4 (Nov)
Created by: Walter
Comments: 0
Category: UI for Blazor
Type: Bug Report
0

Bug report

Reproduction of the problem

(bug report only)
Environment

  • Version 15.1.0
  • Blazor Server, .NET 10
  • Chromium (Chrome and Playwright headless)

TabStrip Tab is never destroyed
Components/TabStrip/Tab.razor.cs registers each tab with initTabStripTab in OnAfterRenderAsync. Its Dispose() only releases the DotNetObjectReference; it never calls InvokeDisposeAsync(). The JS Tab.destroy() method is therefore never called, and TabStrip.destroy() does not destroy its child tabs. Every tab stays in window.TelerikBlazor._instances with its detached <li class="k-tabstrip-item">, which again keeps the disposed page reachable.

  1. Create two routable pages. PageA has TabStrip with 3 tabs. PageB is empty.
  2. Open PageA, then navigate to PageB with the in-app router (no full reload).
  3. Run this in the browser console:
Object.entries(TelerikBlazor._instances)
     .filter(([k, i]) => i && i.element && !i.element.isConnected)
     .map(([k, i]) => k + ' / ' + i.constructor.name)

Sample project attached.

TelerikBlazorApp1.zip

Current behavior

(optional)
One entry per TabStrip tab is returned, all pointing at detached elements. Each pageA -> pageB round trip adds more, and the detached DOM is never released.

Expected/desired behavior

An empty array is returned. PageA's components were disposed, so their JS instances should have been destroyed.

Workaround

After each navigation, we destroy and remove any registered instance whose element is no longer in the page:

const instances = window.TelerikBlazor && window.TelerikBlazor._instances;
   for (const key of Object.keys(instances || {})) {
       const i = instances[key];
       if (i && i.element && !i.element.isConnected) {
           try { i.destroy && i.destroy(); } catch (e) { }
           delete instances[key];
       }
   }

Suggested Fix

  1. In Tab.Dispose(), call InvokeDisposeAsync() before base.Dispose(), as TelerikTabStrip.Dispose() does.

Environment

  • Kendo/Telerik version:
  • Browser: [Chrome XX , Firefox]
Completed
Last Updated: 22 Oct 2026 14:14 by ADMIN
Release 2026 (Oct)
Created by: Hannes
Comments: 0
Category: UI for Blazor
Type: Feature Request
1

The documented lazy loading scenario is not compatible with Telerik UI for Blazor 15.0.0, because of the new ITelerikIconService. Unlike the ITelerikStringLocalizer, there is no alternative way to register this icon service outside Program.cs.

Completed
Last Updated: 22 Oct 2026 13:49 by ADMIN
Release 2026 15.0.1 (Aug)
Created by: laboratorysystemdevelopment
Comments: 0
Category: ComboBox
Type: Bug Report
2

The ComboBox and MultiColumnComboBox retain their TextField string label when the value is cleared programmatically. The issue starts to occur in version 14.1.0.

Test Page:

<ul>
    <li><code>AutoCompleteValue</code>: @AutoCompleteValue</li>
    <li><code>SelectedValue</code>: @SelectedValue</li>
    <li><code>SelectedValueNullable</code>: @SelectedValueNullable</li>
    <li><code>MultiSelectValues</code>: @string.Join(", ", MultiSelectValues)</li>
</ul>

<p>
    <TelerikButton OnClick="@(() => {
        AutoCompleteValue = string.Empty;
        SelectedValue = default;
        SelectedValueNullable = default;
        MultiSelectValues = new();
    })">Clear Values</TelerikButton>
</p>

<TelerikAutoComplete Data="@ListItems"
                     @bind-Value="@AutoCompleteValue"
                     ValueField="@nameof(ListItem.Text)"
                     Placeholder="Select Item"
                     ShowClearButton="true"
                     Width="300px" />

<br /><br />

<TelerikComboBox Data="@ListItems"
                 @bind-Value="@SelectedValue"
                 TextField="@nameof(ListItem.Text)"
                 ValueField="@nameof(ListItem.Id)"
                 Placeholder="Select Item"
                 ShowClearButton="true"
                 Width="300px" />

<TelerikComboBox Data="@ListItems"
                 @bind-Value="@SelectedValueNullable"
                 TextField="@nameof(ListItem.Text)"
                 ValueField="@nameof(ListItem.Id)"
                 Placeholder="Select Item"
                 ShowClearButton="true"
                 Width="300px" />


<br /><br />

<TelerikDropDownList Data="@ListItems"
                     @bind-Value="@SelectedValue"
                     TextField="@nameof(ListItem.Text)"
                     ValueField="@nameof(ListItem.Id)"
                     DefaultText="Select Item"
                     Width="300px" />

<TelerikDropDownList Data="@ListItems"
                     @bind-Value="@SelectedValueNullable"
                     TextField="@nameof(ListItem.Text)"
                     ValueField="@nameof(ListItem.Id)"
                     DefaultText="Select Item"
                     Width="300px" />

<br /><br />

<TelerikMultiColumnComboBox Data="@ListItems"
                            @bind-Value="@SelectedValue"
                            TextField="@nameof(ListItem.Text)"
                            ValueField="@nameof(ListItem.Id)"
                            Placeholder="Select Item"
                            ShowClearButton="true"
                            Width="300px">
    <MultiColumnComboBoxColumns>
        <MultiColumnComboBoxColumn Field="@nameof(ListItem.Id)" />
        <MultiColumnComboBoxColumn Field="@nameof(ListItem.Text)" />
    </MultiColumnComboBoxColumns>
</TelerikMultiColumnComboBox>

<TelerikMultiColumnComboBox Data="@ListItems"
                            @bind-Value="@SelectedValueNullable"
                            TextField="@nameof(ListItem.Text)"
                            ValueField="@nameof(ListItem.Id)"
                            Placeholder="Select Item"
                            ShowClearButton="true"
                            Width="300px">
    <MultiColumnComboBoxColumns>
        <MultiColumnComboBoxColumn Field="@nameof(ListItem.Id)" />
        <MultiColumnComboBoxColumn Field="@nameof(ListItem.Text)" />
    </MultiColumnComboBoxColumns>
</TelerikMultiColumnComboBox>

<br /><br />

<TelerikMultiSelect Data="@ListItems"
                    @bind-Value="@MultiSelectValues"
                    TextField="@nameof(ListItem.Text)"
                    ValueField="@nameof(ListItem.Id)"
                    Placeholder="Select Items"
                    ShowArrowButton="true"
                    ShowClearButton="true"
                    AutoClose="false"
                    Width="600px" />

@code {
    private List<ListItem> ListItems { get; set; } = new();

    private int SelectedValue { get; set; } = 3;
    private int? SelectedValueNullable { get; set; } = 3;
    private string AutoCompleteValue { get; set; } = "Item 3";

    private List<int> MultiSelectValues { get; set; } = new() { 3, 5 };

    protected override void OnInitialized()
    {
        ListItems = new List<ListItem>();

        for (int i = 1; i <= 24; i++)
        {
            ListItems.Add(new ListItem()
            {
                Id = i,
                Text = $"Item {i}"
            });
        }

        base.OnInitialized();
    }

    public class ListItem
    {
        public int Id { get; set; }
        public string Text { get; set; } = string.Empty;
    }
}

Completed
Last Updated: 22 Oct 2026 13:43 by ADMIN
Release 2026 (Oct)

The PDF Viewer may open certain files as empty, even though they have text and image content.

The issue occurs in version 14.0.0.

(Test file available in private ticket 1718294)

Completed
Last Updated: 22 Oct 2026 13:42 by ADMIN
Release 2026 (Oct)
This issue is for all date inputs when having a higher latency (physical distance between the server and the end-user) the value of the date inputs is not correct. Additionally, When typing the year in the input field, the text overflows instead of staying within the 4-digit space. For reference, check the attached screenshot.
1 2 3 4 5 6