I would like a Blazor PropertyGrid with
-- that could be bound to an instance of a custom Type that implemented INotifyPropertyChanged
-- with expandable/collapsible sections with the ability to prevent a user from expanding a collapsed section (e.g. the user lacks privileges to see that section's data)
-- would keep track of its UI state including collapsed sections (similar to the excellent implementation in Telerik's Blazor Grid)
-- that would allow the use of all Telerik Blazor editors as cell-value editors
I am interested in using this component primarily as a data-entry UX in a data-entry-intensive line-of-business application. Such a grid offers standard navigation on all data-entry screens in the application, eliminating tab-order, thereby greatly simplifying the end-user experience. The expanding/collapsing sections make it very economical in its use of screen real-estate. I have used such a component (from a competitor of Telerik) in a WinForms application with excellent results.
Please add an OTP Input component to Telerik UI for Blazor. It already exists in Kendo UI for jQuery, Kendo UI for Angular, ASP.NET Core and ASP.NET MVC, but Blazor is missing it.
It’s very common for two-factor authentication and email/SMS code verification. Today we have to build it ourselves with multiple TextBoxes and JS interop.
Main features, similar to the Blazor Bootstrap OTPInput:
@bind-Value and an event when all fields are filledautocomplete="one-time-code"Support multiple users editing the same content in an editor.
This would be similar to the editor in something like confluence or online Word.
Regards
With Blazor server, clicking the NOW button (obviously) sets the time to the time on the server since that's where the code is running. Is there a way to trap the NOW button click or somehow give it an offset or define the value that NOW means so NOW will mean the time that the user is sitting in?
---
TELERIK EDIT
In the meantime, here are a few possible workarounds:
1. Use the DateTimePicker's ValueChanged event to detect new values that are very close or match the server's current DateTime. In such cases, you can assume that the user has clicked on TODAY / NOW, and set the local user time as a component value.
Server Time on UI Refresh: @DateTime.Now.ToLongTimeString()
<br />
User Local Time on Page Load: @LocalTime?.ToLongTimeString()
<br />
User Local Time Offset: @LocalOffset
<br />
<br />
<TelerikDateTimePicker Value="@PickerValue"
ValueChanged="@( (DateTime? newValue) => PickerValueChanged(newValue) )"
ValueExpression="@( () => LocalTime )"
Format="yyyy-MMM-dd HH:mm:ss"
Width="240px" />
<!-- Move JS code to a separate JS file in production -->
<script suppress-error="BL9992">
function getLocalTime() {
var d = new Date();
return d.getTimezoneOffset();
}
</script>
@code {
private DateTime? PickerValue { get; set; }
private DateTime? LocalTime { get; set; }
private int LocalOffset { get; set; }
private void PickerValueChanged(DateTime? newValue)
{
DateTime serverNow = DateTime.Now;
DateTime utcNow = DateTime.UtcNow;
TimeSpan nowTolerance = new TimeSpan(0, 0, 10);
if (newValue - serverNow < nowTolerance)
{
PickerValue = utcNow.AddMinutes(-LocalOffset);
}
else
{
PickerValue = newValue;
}
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
LocalOffset = await js.InvokeAsync<int>("getLocalTime");
LocalTime = DateTime.UtcNow.AddMinutes(-LocalOffset);
StateHasChanged();
}
await base.OnAfterRenderAsync(firstRender);
}
}
2. Use the DatePicker's HeaderTemplate with a custom TODAY / NOW button.
3. Hide the NOW button with CSS:
<style>
.no-now-button .k-time-now {
display: none;
}
</style>
<TelerikDateTimePicker @bind-Value="@PickerValue"
Format="yyyy-MMM-dd HH:mm:ss"
PopupClass="no-now-button"
Width="240px" />
@code {
private DateTime? PickerValue { get; set; }
}
I would be much appreciated feature if we could export a pivot grid to excel in the same way that we can export a grid to excel.
Extra Credit: As an added bonus, if the excel export was actually in an Excel Pivot Table format, that would be awesome.
When I override the IsValid method to return a ValidationResult the Incell & Inline edit modes allow the editing to be continued even if an invalid value is present.
===
Telerik edit: A possible workaround is to cancel OnUpdate and possibly, OnEdit too. Here is a complete example:
https://blazorrepl.telerik.com/QyaWxkvv10stL8jB06
===
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.
Hi Team,
I would like a parameter that allows users to select a time from the TimePicker popup without having to press Set.
Current behaviour
Selecting an hour or minute in the popup changes its internal pending selection, but does not update the bound Value or fire the public ValueChanged callback. Users must press Set to apply the selection. Clicking outside the popup discards it.
Requested behaviour
Please consider adding an AutoCommit Boolean parameter, defaulting to false to preserve existing behaviour.
When enabled:
- Each valid hour/minute selection immediately updates Value and fires ValueChanged.
- The popup stays open so users can adjust both hours and minutes.
- Clicking outside closes the popup and retains the latest selected time.
- Pressing Set is no longer required.
I have been trying to improve my Lighthouse score with Google and one of the items it is tagging is the "telerik-blazor.js" file. I have seen new practices where the JavaScript is imported as needed, see this article here from Microsoft.
Can you please consider this in the future?
===
Telerik edit: A possible workaround is to build the Telerik JavaScript file without some of the components that you don't need.
I my understanding, the simplest way to get a coding agent provide better assistance to a very specific product like telerik blazor, is by just providing the documentation.
My first experiments with the telerik mcp server are not succesful. I would think that linking the full documentation directly to the coding agent can seriously lead to better results.
AI Coding agents are doing a great job with more standard frontend framework like react, they seem to be common knowledge. We know that Blazor and in particular Telerik blazor is a niche product (not only niche, but also NICE), so coding agents needs to have clear instructions on everything.
Of course, i don't know how your documentation system works, and how easy it would be to generate .md files from this?
Thanks for looking into this matter
Don't hesitate to contact me directly for further questions or whatsoever.
warm regards
paul
Please support ColumnVirtualization in a Grid that also has multi-column headers (column bands) and locked columns, all three at once.
Follows ticket 1720022, where Ivan Danchev confirmed two defects in this combination (Telerik UI for Blazor 15.1.0, Blazor Server, ScrollMode Virtual, 45 columns of fixed px width in bands, the first band locked, Grid Width in px):
1. A band's header colspan is computed from its visible leaf columns and ignores the columns hidden by virtualization, so the header row goes out of step with the data rows and a band partly in view shows no title.
2. With any locked column the virtualizer merges every hidden column into one spacer cell. The spacer is a whole number of columns wide, so it cannot match an arbitrary scroll offset and leaves an empty strip, narrower than one column, between the locked block and the first scrolled column, in the header and every row. The spacer also carries the first hidden column's band into the header row.
Why it matters: on Blazor Server every rendered cell is a component held on the circuit. For our 45-column logbook grid the cells and loading placeholders are most of each user's memory (about 50 MB of render tree), and column virtualization would cut that by about two thirds. Wide data grids are usually grouped into bands with an identifying block locked on the left, so the combination is the normal case for a grid wide enough to need column virtualization.
Related: feedback items 1546425 and 1538964.
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