If the element of the tooltip is on top of the screen (almost outside of the viewport), hovering the remaining part of the element makes the tooltip create a flashing effect.
Please watch the attached video.
When I place a tooltip on drawer item, it just flickers randomly
![[video-to-gif output image]](https://im3.ezgif.com/tmp/ezgif-3-4372cd0f87.gif)
https://blazorrepl.telerik.com/wQbbmbGb05hzznPh45
(bug report only)
Regression introduced in 9.0.0.
1. Run the code posted below and export the Grid.
2. Open the exported Excel file.
<TelerikGrid Data=@GridData
Pageable="true" Sortable="true" Resizable="true" Reorderable="true"
ShowColumnMenu="true" FilterMode="@GridFilterMode.FilterMenu"
Width="800px" Height="400px">
<GridToolBar>
<GridToolBarExcelExportTool>
Export to Excel
</GridToolBarExcelExportTool>
</GridToolBar>
<GridExport>
<GridExcelExport FileName="telerik-grid-export" AllPages="false" />
</GridExport>
<GridColumns>
<GridColumn Title="Personal Information">
<Columns>
<GridColumn Field=@nameof(Customer.FirstName) Title="First Name" Width="100px" />
<GridColumn Field=@nameof(Customer.LastName) Title="Last Name" Width="100px" />
</Columns>
</GridColumn>
<GridColumn Title="Company">
<Columns>
<GridColumn Field=@nameof(Customer.CompanyName) Title="Name" />
<GridColumn Field=@nameof(Customer.HasCompanyContract) Title="Has Contract" Width="120px" />
</Columns>
</GridColumn>
<GridColumn Title="Contact Details">
<Columns>
<GridColumn Field="@nameof(Customer.Email)" Title="Email"></GridColumn>
<GridColumn Field="@nameof(Customer.Phone)" Title="Phone"></GridColumn>
<GridColumn Field="@nameof(Customer.City)" Title="City"></GridColumn>
</Columns>
</GridColumn>
</GridColumns>
</TelerikGrid>
@code {
public List<Customer> GridData { get; set; }
public class Customer
{
public int Id { get; set; }
public string PasswordHash { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string CompanyName { get; set; }
public bool HasCompanyContract { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string City { get; set; }
}
// generation of dummy data
protected override void OnInitialized()
{
GridData = GenerateData();
}
List<Customer> GenerateData()
{
var data = new List<Customer>();
string[] fNames = new string[] { "Nancy", "John", "Orlando", "Jane", "Bob", "Juan" };
string[] lNames = new string[] { "Harris", "Gates", "Smith", "Caprio", "Gash", "Gee" };
string[] cNames = new string[] { "Acme", "Northwind", "Contoso" };
string[] cities = new string[] { "Denver", "New York", "LA", "London", "Paris", "Helsinki", "Moscow", "Sofia" };
Random rnd = new Random();
for (int i = 0; i < 150; i++)
{
string fName = fNames[rnd.Next(0, fNames.Length)];
string lName = lNames[rnd.Next(0, lNames.Length)];
string cName = cNames[rnd.Next(0, cNames.Length)];
data.Add(new Customer
{
Id = i,
PasswordHash = "not shown",
FirstName = fName,
LastName = lName,
CompanyName = cName,
HasCompanyContract = i % 3 == 0,
Email = $"{fName}.{lName}@{cName}.com",
Phone = $"{rnd.Next(100, 999)}-555-{rnd.Next(100, 999)}",
City = cities[rnd.Next(0, cities.Length)]
});
}
return data;
}
}
(optional)
The “Personal Information”, “Company”, “Contact Details” headers are not exported.
The multi-column headers are exported.
(bug report only)
Reproducible in the demos: https://demos.telerik.com/blazor-ui/dropdowntree/overview
(optional)
For a brief moment the filter input in the dropdown appears focused, but then the focus moves to the first item in the list. If the user clicks the “down arrow” icon to open the dropdown, the filter input is focused as expected.
The filter input is focused regardless where in the component the user clicks.
(bug report only)
(optional)
Provide additional information if the steps for reproducing the faulty behavior are not sufficient to describe the issue.
The FontFamily tool should keep its value when an unordered list is added/removed.
(bug report only)
1. Run this example: https://blazorrepl.telerik.com/cAkKcTYZ39RLN4r548
2. Open the ComboBox popup and navigate through the items in the list by holding down “Down Arrow” key, or by pressing the key rapidly.
(optional)
An exception is thrown and instead of continuing with the next batch of items, navigation is stuck on the first item in the list.
Navigation continues from the next loaded batch of items.
I am resetting the Grid State by calling Grid.SetState(null). This doesn't reset ColumnState<T>.Locked boolean to false and the columns remain locked.
---
ADMIN EDIT
---
A possible workaround for the time being is to additionally loop through the ColumnStates collection of the State and set the Locked property to false for each column.
I have the following configuration:
Editor component in Grid EditorTemplate and the Grid editing mode is popup
Here is a REPL example https://blazorrepl.telerik.com/QeuUwsvb15sxbLuB04
The popup that opens when editing the Grid resizes when I type in the Editor
Steps to reproduce the issue:
1. Run the REPL example
2. Click the Edit button in the Grid
3. Resize the popup
4. Start to type something in the Editor
5. The popup resizes
When a user navigates the DatePicker’s calendar using arrow keys, the component updates aria-activedescendant in the wrong order; it removes the id reference from the current cell before assigning it to the new cell. This creates a brief window in which aria-activedescendant points to an id that doesn't exist in the DOM.
(bug report only)
1. Run this example: https://blazorrepl.telerik.com/GgEKuoPQ289mGAyo13
Inspect the selected date in the calendar, select "break on attribute modification" for the td element of the selected date and the next td element. Navigate with "Right Arrow" key from the selected to the next date.
(optional)
The id of the selected date's td element is removed, but the DatePicker input’s aria-activedescendant attribute still has this id as value. Then the newly focused cell gets an id and it is set to the aria-activedescendant.
The element referenced by aria-activedescendant must be in the DOM (https://www.w3.org/TR/wai-aria-1.2/#aria-activedescendant)
(bug report only)
Run this example and follow the instructions in it: https://blazorrepl.telerik.com/GAkAvYaB36nYAsr539
(optional)
Indent does not work inside lists.
Indent works inside lists.
(bug report only)
The issue is reproducible when SlotDivisions is set to 1. If it is set to 2, or 3, the events are displayed correcty.
1. Run the following example: https://blazorrepl.telerik.com/wKOgYNbv564C2KOK04
(optional)
Events overlap.
Events are shown stacked.
Hello,
after playing with AI chat integration with telerikgrid, few bumps up shows:
lets have this scenario- request from aichat, to perform some filtering/operations on grid with clumn names like col1,col2,col3... generic.
public async Task<GridAIResponse> GetGridAIData(GridAIRequestDescriptor request)
{
var options = new ChatOptions();
var columnsx = JsonSerializer.Deserialize<List<GridAIColumn>>(JsonSerializer.Serialize(request.Columns));
options.Tools = new List<AITool>();
options.Tools.Clear();
1) //describe the columns or general behavior like "aprox, arround, near"
var ff = ChatOptionsExtensions.GetFilter(columnsx);
ForceSetDescription(ff, @"
If users enters phrases like 'aprox', 'arround', 'near',
operate with field value in between ±10 %.
Example: 'dimensions arround 1000' results in: 'dimension >= 900 AND dimension<= 1100'.
");
options.Tools.Add(ff);
options.Tools.Add(ChatOptionsExtensions.GetSort(columnsx));
ChatResponse completion = await _chatClient.GetResponseAsync(conversationMessages, options);
....
return completion.ExtractGridResponse();
}how to extend "GridAIRequestDescriptor"?
1) - ability to describe column(add). but Description is readonly (coders should add titles or any text manually from column definition - be aware. grid IColumn is accessible only by reflection just now)
OR
2) - ability to specify the "meaninfgull name" (place, where coders can add this)
OR
3)- instead of using just "Fieldname" of the column, use/add the Title(which is more understandable for LLM)
OR
4) field mapping translation layer. GridColumn.Field -> something descriptive and back after fetching response from LLM
fieldnames are mostly "system DB name" and cannot be changed. So FieldName="Column44qty" and Title="qty available stock", you get the point which one tells you more.
new[]
{
new {
Field = "Column44qty",
Title = ""qty available stock",
Type = "number",
Description = "......",
Values = new[] { "x", "yyy", "zzz" }
},...
}
all points 1-4 are not needed, just one of them is ok.
If the ComboBox Value is set during initialization and the ValueMapper executes too fast and before the component has rendered, its Value doesn't show.
The problem also occurs in the MultiColumnComboBox.
Possible workarounds:
To reproduce:
@using Telerik.DataSource
@using Telerik.DataSource.Extensions
<p>ComboBox Value: @ComboBoxValue</p>
<TelerikComboBox ItemHeight="30"
OnRead="@OnComboBoxRead"
PageSize="20"
ScrollMode="@DropDownScrollMode.Virtual"
TItem="@ListItem"
TValue="@(int?)"
@bind-Value="@ComboBoxValue"
ValueMapper="@ComboBoxValueMapper"
Width="240px" />
@code {
private List<ListItem>? ComboBoxData { get; set; }
private int? ComboBoxValue { get; set; } = 3;
private async Task OnComboBoxRead(ReadEventArgs args)
{
DataSourceResult result = await ComboBoxData.ToDataSourceResultAsync(args.Request);
args.Data = result.Data;
args.Total = result.Total;
}
private async Task<ListItem?> ComboBoxValueMapper(int? selectValue)
{
// Triggers the bug
await Task.Yield();
ListItem? result = ComboBoxData?.FirstOrDefault(x => selectValue == x.Value);
return result;
}
protected override void OnInitialized()
{
ComboBoxData = Enumerable
.Range(1, 1234)
.Select(x => new ListItem()
{
Value = x,
Text = $"Item {x}"
})
.ToList();
}
public class ListItem
{
public int Value { get; set; }
public string Text { get; set; } = string.Empty;
}
}
Please consider adding a pluggable runtime localization provider for Telerik UI for Blazor, primarily targeting Blazor WebAssembly scenarios.
This request is not critical for ASP.NET MVC / Razor / Blazor Server, where IDisplayMetadataProvider already provides a valid extensibility point for custom localization. However, Blazor WebAssembly has no equivalent mechanism, which creates a significant limitation.
In Blazor WebAssembly:
DisplayAttribute is static and reflection‑basedIDisplayMetadataProvider are not availableAs a result, Telerik components can only resolve UI text via:
DisplayAttribute.resx resourcesThis makes it impossible to integrate:
In modern Blazor WebAssembly (SPA) applications, localization is often:
Other libraries already support this model through pluggable localization providers.
A good example is FluentValidation, which allows localization logic to be resolved at runtime via DI, including custom providers and non‑resource‑based implementations.
References:
Because Telerik UI for Blazor does not expose a similar extensibility point, developers are forced to manually specify labels, headers, and enum texts throughout the UI, losing the benefits of automatic localization.
Introduce an optional localization provider that Telerik components can use when resolving UI text:
DisplayAttributeThis would significantly improve Telerik UI’s suitability for enterprise and multi‑tenant Blazor WASM applications, without impacting existing server‑side solutions.
I use TelerikPdfViewer to let my users annotate PDF documents (highlights, text boxes, drawings). Since the component only provides a built-in Download button (client-side) and not a Save to backend, I implemented a custom Save button that:
1. Calls await pdfViewerRef.GetFileAsync() to retrieve th e annotated PDF as byte[].
2. Sends the bytes to my server via a Blazor service call.
3. The server persists them to a file share with File.WriteAllBytesAsync(path, bytes).
Simplified:
<PdfViewerToolBarCustomTool>
<TelerikButton OnClick="@SaveAnnotationsAsync">Save</TelerikButton>
</PdfViewerToolBarCustomTool>
var annotatedPdf = await pdfViewerRef.GetFileAsync();
await _scanFlowApi.SaveAnnotatedDocumentAsync(documentId, annotatedPdf);
// server-side: await File.WriteAllBytesAsync(path, annotatedPdf, ct);
It works — the annotations are saved and I can reopen the file in the viewer without issues. But after saving and opening the file in Adobe Reader, closing it shows the prompt "Do you want to save the changes made to this document?" — even though the user hasn't modified anything in Adobe. The PDF seems to contain incremental updates appended at the end.