Unplanned
Last Updated: 07 Nov 2025 14:02 by ADMIN
Created by: CHING CHENG
Comments: 1
Category: Spreadsheet
Type: Bug Report
1

'SLOPE' and 'LINEST' Formulas do not work ?

 

Completed
Last Updated: 07 Nov 2025 13:45 by ADMIN
Release 2025 Q4 (Nov)

Using the TelerikTabSrip, If the first tab is not visible when rendered, the tab content for all tabs doesnt render.

Replicated here https://blazorrepl.telerik.com/cpEWGOPk22VW8be254

If you change the code to make the first tab visible, all is well.

You can make other tabs invisible, and all is well.

 

 
Planned
Last Updated: 07 Nov 2025 13:00 by ADMIN
Scheduled for 2025 Q4 (Nov)
Created by: Philip
Comments: 0
Category: TimePicker
Type: Bug Report
4

Description

Regression that is observed in version 11.2.0. The system time should be at least 55 minutes past the hour (e.g., 13:55 or 14:57).

Related to: #12372

Steps To Reproduce

  1. Set the time on your machine to 55 past the hour, e.g., 13:55.
  2. Open a new instance of Chrome and navigate to https://blazorrepl.telerik.com/mpvYQQlw54P2j07S42
  3. Run the example
  4. Click in the clock icon in the picker, to open its dropdown.
  5. Click the Set button.

Actual Behavior

The TimePicker ignores the highlighted minutes part (45) and sets the minutes to 00. For example, if your current system time is 13:55, clicking the Set button will set the value to 13:00.

Expected Behavior

The highlighted minutes should be set in the value. For example, if your current system time is 13:55, clicking the Set button should set the value to 13:45.

Browser

All

Last working version of Telerik UI for Blazor (if regression)

No response

Planned
Last Updated: 07 Nov 2025 08:46 by ADMIN
Scheduled for 2026 Q1 (Feb)

The value in a numeric textbox cannot be changed for negative numerbes unless you erase all the text and restart.

 

<TelerikNumericTextBox Decimals="4"Max="5"Value="-4.56m"Id="general"></TelerikNumericTextBox>

 

    
Planned
Last Updated: 07 Nov 2025 08:46 by ADMIN
Scheduled for 2026 Q1 (Feb)

The issue occurs only if the Signature is initially rendered in a container with display: none style. If I use visibility: hidden, I don't see a problem.

Real use case in which this is a problem: an accordion where the second pane is not opened.

Reproduction code: https://blazorrepl.telerik.com/QfYeuZPv28LlBmBx56.

Steps to reproduce:

  1. Test signinig in the Signature #1 pane - Signature behaves properly.
  2. Open the  Signature #2 pane and test signing - the scale is wrong.
Unplanned
Last Updated: 07 Nov 2025 07:25 by Justin
Created by: Justin
Comments: 0
Category: Upload
Type: Feature Request
1

Please expose the modified date of the selected and uploaded files, similar to the standard Blazor <InputFile> component.

This request applies to both the FileSelect and the Upload components.

Completed
Last Updated: 06 Nov 2025 20:32 by Greg
Release 9.0.0
Created by: Chris
Comments: 4
Category: TabStrip
Type: Feature Request
33

One can generally loop through a collection of items to create several TabStrip instances as shown in the Tabs Collection article.

However, when I am dynamically adding or removing tabs I am hitting a variety of problems targeting:

  • The active tab is not correctly set;
  • The focus is not always set on the active tab;
  • Upon adding/removing a tab, all tabs are re-created and thus their content cannot be persisted;

Please add support for dynamic tabs.

Duplicated
Last Updated: 06 Nov 2025 20:31 by Greg
Currently the TabStrip solution for dynamic tabs is very inefficient, any change to the collection of Tabs (add/remove) would trigger the render of all tabs, even the ones that were already loaded, in scenarios where the Tab content contains complex components with nested components at different levels this is a pain, not only to load components but to load necessary information related to the component. It would be a breeze if we could reuse a component instance instead of creating a new one or only re-render (maybe with ShouldRender) the new added Tab.
Pending Review
Last Updated: 06 Nov 2025 17:12 by Rob

I realize we can build Blazor components to associate "label" to controls, but IMHO, this should come standard with any control tool set. Reasons:

1.  Coding simplicity

2.  Automatic theme inheritance

3.  Flexibility in label positioning relative to the control (left, right, top, bottom)

Example:

<TelerikCheckBox Label="Is Chasssis" LabelPosition="left" @bind-Value="equipment.IsChassis"/>

 

I realize you folks put some effort into a "Floating Label", but my users have rejected this implementation because:

1.  Having Text in a label as a means to identify the label makes them think a value is already provided (so they try to remove it or call for support).

2.  When typing in the label and the appearance of the label identification appears above adds to their confusion as they are used to seeing validation errors appearing above a label.

 

 

 

Completed
Last Updated: 06 Nov 2025 14:57 by ADMIN
Release 2025 Q4 (Nov)
Created by: Mattia
Comments: 0
Category: Grid
Type: Bug Report
1

Description

Regression introduced in version 10.0.0.

Steps To Reproduce

  1. Run this example: https://blazorrepl.telerik.com/GJkCGCvE51aGglud38
  2. Filter a Grid column and observe the log below the component.

Actual Behavior

The OnStateChanged event fires 4 times

Expected Behavior

The OnStateChanged event fires 2 times (see https://www.telerik.com/blazor-ui/documentation/components/grid/state#onstatechanged).

Browser

All

Last working version of Telerik UI for Blazor (if regression)

9.1.0

Pending Review
Last Updated: 06 Nov 2025 14:06 by Daniel
Created by: Daniel
Comments: 0
Category: Scheduler
Type: Bug Report
0

The appointments are not on the right position in the scheduler, on day and week views.
They appear slight downwards. See screenshot from your demo pages.

The first appoinments are right. Later in time the appointments are off.

This is true for all themes.

Tested on Windows 11, with Brave, Firefox and Edge.

 

Best regards

Daniel Hüttenberger

Unplanned
Last Updated: 06 Nov 2025 13:58 by Daniel

The appointments at the start of the day seem accurate. If you scroll down, the position of the appointments does not line up with the grid line for the hour that it starts at or ends at. The issue can be observed in the live demo.

 

Unplanned
Last Updated: 05 Nov 2025 09:20 by Victoria

The FileManager TreeView does not expand automatically in some scenarios, which can cause the TreeView and ListView UI to be inconsistent:

  • Programmatic Path change.
  • When clicking on a folder in the TreeView.
  • When navigating to a folder from the ListView, while its parent is not already expanded.

Here is a test page and steps to reproduce.

Test 1

  1. Copy `/folder-16/folder-17` in the textbox and hit Enter.
  2. The FileManager navigates to the specified folder and the TreeView selects it, but does not expand.

Test 2

  1. Click on `folder-16` in the TreeView.
  2. The TreeView does not expand, but it should.
  3. Double-click `folder-17` in the ListView.
  4. The FileManager navigates and the TreeView selects the new folder, but does not expand.

<p>/folder-16/folder-17</p>

<TelerikTextBox @bind-Value="@DirectoryPath" Width="max-content" OnChange="@(() => FileManagerRef!.Rebind())" />

<TelerikFileManager @ref="@FileManagerRef"
                    Data="@FileManagerData"
                    @bind-Path="@DirectoryPath"
                    View="@FileManagerViewType.ListView"
                    EnableLoaderContainer="false"
                    OnDownload="@OnDownloadHandler"
                    NameField="@(nameof(FlatFileEntry.Name))"
                    SizeField="@(nameof(FlatFileEntry.Size))"
                    PathField="@(nameof(FlatFileEntry.Path))"
                    ExtensionField="@(nameof(FlatFileEntry.Extension))"
                    IsDirectoryField="@(nameof(FlatFileEntry.IsDirectory))"
                    HasDirectoriesField="@(nameof(FlatFileEntry.HasDirectories))"
                    IdField="@(nameof(FlatFileEntry.Id))"
                    ParentIdField="@(nameof(FlatFileEntry.ParentId))"
                    DateCreatedField="@(nameof(FlatFileEntry.DateCreated))"
                    DateCreatedUtcField="@(nameof(FlatFileEntry.DateCreatedUtc))"
                    DateModifiedField="@(nameof(FlatFileEntry.DateModified))"
                    DateModifiedUtcField="@(nameof(FlatFileEntry.DateModifiedUtc))"
                    Class="my-filemanager">
</TelerikFileManager>

@code {
    private TelerikFileManager<FlatFileEntry>? FileManagerRef { get; set; }

    private List<FlatFileEntry>? FileManagerData { get; set; }

    public string? DirectoryPath { get; set; } = string.Empty;

    private readonly string RootPath = string.Empty;

    public async Task<bool> OnDownloadHandler(FileManagerDownloadEventArgs args)
    {
        await Task.Delay(1);

        return true;
    }

    private int FolderLevelCount { get; set; } = 5;
    private int FilesInFolderCount { get; set; } = 5;
    private int FoldersInFolderCount { get; set; } = 2;
    private int FolderNameCounter { get; set; }
    private readonly List<string> FileExtensions = new() {
            ".txt", ".pdf", ".docx", ".xlsx", ".png", ".jpg", ".gif", ".zip", ".css", ".html", ".mp3", ".mpg"
        };

    protected override async Task OnInitializedAsync()
    {
        await Task.CompletedTask;

        DirectoryPath = RootPath;

        FileManagerData = LoadFlatDataAsync();

        await base.OnInitializedAsync();
    }

    private List<FlatFileEntry> LoadFlatDataAsync()
    {
        List<FlatFileEntry> data = new List<FlatFileEntry>();

        string rootDataPath = string.IsNullOrEmpty(RootPath) ? "/" : RootPath;

        PopulateChildren(data, null, rootDataPath, 1);

        return data;
    }

    private void PopulateChildren(List<FlatFileEntry> data, string? parentId, string parentPath, int level)
    {
        var rnd = Random.Shared;

        for (int i = 1; i <= FilesInFolderCount; i++)
        {
            string itemId = Guid.NewGuid().ToString();
            string itemExtension = FileExtensions[rnd.Next(0, FileExtensions.Count)];
            string itemName = $"{itemExtension.Substring(1)}-file-{(FolderNameCounter != default ? string.Concat(FolderNameCounter, "-") : string.Empty)}{i}";
            string itemPath = Path.Combine(parentPath, string.Concat(itemName, itemExtension));

            data.Add(new FlatFileEntry()
            {
                Id = itemId,
                ParentId = parentId,
                Name = itemName,
                IsDirectory = false,
                HasDirectories = false,
                DateCreated = DateTime.Now,
                DateCreatedUtc = DateTime.Now.ToUniversalTime(),
                DateModified = DateTime.Now,
                DateModifiedUtc = DateTime.Now.ToUniversalTime(),
                Path = itemPath,
                Extension = itemExtension,
                Size = rnd.Next(1_000, 3_000_000)
            });
        }

        if (level < FolderLevelCount)
        {
            for (int i = 1; i <= FoldersInFolderCount; i++)
            {
                var itemId = Guid.NewGuid().ToString();
                var itemName = $"folder-{++FolderNameCounter}";
                var itemPath = Path.Combine(parentPath, itemName);

                data.Add(new FlatFileEntry()
                {
                    Id = itemId,
                    ParentId = parentId,
                    Name = itemName,
                    IsDirectory = true,
                    HasDirectories = level < FolderLevelCount - 1,
                    DateCreated = DateTime.Now,
                    DateCreatedUtc = DateTime.Now.ToUniversalTime(),
                    DateModified = DateTime.Now,
                    DateModifiedUtc = DateTime.Now.ToUniversalTime(),
                    Path = itemPath,
                    Size = rnd.Next(100_000, 10_000_000)
                });

                PopulateChildren(data, itemId, itemPath, level + 1);
            }
        }
    }

    public class FlatFileEntry : FileEntry
    {
        public string Id { get; set; } = Guid.NewGuid().ToString();

        public string ParentId { get; set; }
    }

    public class FileEntry
    {
        public string Name { get; set; }

        public long Size { get; set; }

        public string Path { get; set; }

        public string Extension { get; set; }

        public bool IsDirectory { get; set; }

        public bool HasDirectories { get; set; }

        public DateTime DateCreated { get; set; }

        public DateTime DateCreatedUtc { get; set; }

        public DateTime DateModified { get; set; }

        public DateTime DateModifiedUtc { get; set; }
    }
}

Unplanned
Last Updated: 05 Nov 2025 08:59 by ADMIN
Created by: Christian
Comments: 9
Category: Grid
Type: Feature Request
10
I would like to use Virtual Scrolling and Hierarchy for the Grid. 
Completed
Last Updated: 04 Nov 2025 15:11 by ADMIN
Created by: Tamas
Comments: 1
Category: UI for Blazor
Type: Feature Request
0
It would be beneficial to add an IsPrimary attribute to the TelerikButton, in order to allow to distuingish the primary buttons.
Won't Fix
Last Updated: 04 Nov 2025 11:12 by ADMIN

The problem is that the ValueChanged fires without an actual change in the Editor content - just click in it. I reproduce this issue in the following scenario:

  • The value contains a self-closing tag.
  • I click in the Editor the first time. Consecutive clicks in the Editor do not cause ValueChanged to fire.

Reproduction: https://blazorrepl.telerik.com/wfaxnvPv19jUCGhd15.

Completed
Last Updated: 04 Nov 2025 09:24 by ADMIN
Release 2025 Q4 (Nov)
Created by: Werner
Comments: 8
Category: Grid
Type: Feature Request
39
I would like to put my "Add new record" button there (which requires this) so that I don't have to use the toolbar - this will let me conserve vertical space.
Planned
Last Updated: 03 Nov 2025 14:15 by ADMIN
Scheduled for 2025 Q4 (Nov)
Created by: Amanatios Amanatidis
Comments: 0
Category: ToolBar
Type: Bug Report
2

For example, when the OverflowMode of a Toolbar is set to ToolBarOverflowMode.None/Scroll, changing a tool’s parameters programmatically can cause overflowed tools to disappear.

Reproduction example: https://blazorrepl.telerik.com/mzYKQEYM23bGXmvN56

In the meantime, a possible alternative is to use Adaptive="false" instead OverflowMode="ToolBarOverflowMode.None"

Unplanned
Last Updated: 03 Nov 2025 08:45 by Jorge
Created by: Jorge
Comments: 0
Category: Grid
Type: Feature Request
1

Please add support for programmatic exporting of Grids (SaveAsExcelFileAsync() and ExportToExcelAsync() ) with a GridExcelExportOptions argument and multi-column headers.

===

A potential workaround is to programmatically click the built-in export command button, which can even be hidden:

@using Telerik.Blazor.Components.Grid

@inject IJSRuntime JS

<PageTitle>Home</PageTitle>

<TelerikGrid Data="@GridData">
    <GridToolBarTemplate>
        <TelerikButton OnClick="@ExportGridWithOtherColumns">Export Programmatically</TelerikButton>
        <GridCommandButton Class="hidden-export-button" Command="ExcelExport">Export Natively</GridCommandButton>
    </GridToolBarTemplate>
    <GridSettings>
        <GridExcelExport OnBeforeExport="@OnGridBeforeExport" />
    </GridSettings>
    <GridColumns>
        <GridColumn Field="@nameof(Product.Id)" Width="100px" />
        <GridColumn Field="@nameof(Product.Name)" Width="120px" />
        <GridColumn Title="Product Details">
            <Columns>
                <GridColumn Field="@nameof(Product.Group)" Width="180px" />
                <GridColumn Field="@nameof(Product.Price)" DisplayFormat="{0:c2}" Width="120px" />
                <GridColumn Field="@nameof(Product.Quantity)" DisplayFormat="{0:n0}" Width="120px" />
                <GridColumn Field="@nameof(Product.Released)" DisplayFormat="{0:d}" Width="180px" />
                <GridColumn Field="@nameof(Product.Discontinued)" Width="100px" />
            </Columns>
        </GridColumn>
    </GridColumns>
</TelerikGrid>

<style>
    .hidden-export-button {
        display: none;
    }
</style>

<script suppress-error="BL9992">
    function clickExportCommandButton() {
        let hiddenExportButton = document.querySelector(".hidden-export-button");
        if (hiddenExportButton) {
            hiddenExportButton.click();
        }
    }
</script>

@code {
    private List<Product> GridData { get; set; } = new();

    private void OnGridBeforeExport(GridBeforeExcelExportEventArgs args)
    {
        List<string> exportableColumnFields = new List<string> { nameof(Product.Name), nameof(Product.Price), nameof(Product.Quantity) };
        List<GridExcelExportColumn> ColumnsToExport = new();

        foreach (GridExcelExportColumn column in args.Columns)
        {
            if (exportableColumnFields.Contains(column.Field))
            {
                ColumnsToExport.Add(column);
            }
        }

        args.Columns = ColumnsToExport;
    }

    private async Task ExportGridWithOtherColumns()
    {
        await JS.InvokeVoidAsync("clickExportCommandButton");
    }

    protected override void OnInitialized()
    {
        var rnd = Random.Shared;

        for (int i = 1; i <= 7; i++)
        {
            GridData.Add(new Product()
            {
                Id = i,
                Name = $"Name {i} {(char)rnd.Next(65, 91)}{(char)rnd.Next(65, 91)}",
                Group = $"Group {i % 3 + 1}",
                Price = rnd.Next(1, 100) * 1.23m,
                Quantity = rnd.Next(0, 10000),
                Released = DateTime.Today.AddDays(-rnd.Next(60, 1000)),
                Discontinued = i % 4 == 0
            });
        }
    }

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; } = string.Empty;
        public string Group { get; set; } = string.Empty;
        public decimal Price { get; set; }
        public int Quantity { get; set; }
        public DateTime Released { get; set; }
        public bool Discontinued { get; set; }
    }
}

Unplanned
Last Updated: 31 Oct 2025 12:16 by Scott
The column menu correctly repositions itself (to the left or top) when first opened, depending on available screen space. However, when expanding a submenu such as Columns, the menu does not adjust its position to ensure the expanded content remains visible within the viewport.
1 2 3 4 5 6