Pending Review
Last Updated: 16 May 2024 19:51 by Justin
Created by: Justin
Comments: 0
Category: UI for Blazor
Type: Bug Report
1

When SelectOnFocus="true" is enabled on the NumericTextBox control, and a format (e.g., Format="N1") is set, the SelectOnFocus functionality does not select all text if the decimal value has no trailing digits. For instance, with the value 76, the text is not selected on focus, but with the value 76.1, the text is selected correctly.


<TelerikNumericTextBox @bind-Value="@DecimalValue" Format="N1" SelectOnFocus="true"/>

@code {
    private decimal DecimalValue = 76;
}

 

Steps to Reproduce:

  1. Add a NumericTextBox control to a Blazor Server application.
  2. Set SelectOnFocus="true".
  3. Set a format, e.g., Format="N1".
  4. Enter a value such as 76 (with no trailing digits after the decimal point).
  5. Focus on the NumericTextBox.

Expected Behavior: The entire text (in this case, 76.0) should be selected when the NumericTextBox gains focus.

Actual Behavior: The text is not selected when the NumericTextBox gains focus if the value has no trailing digits after the decimal point (e.g., 76). However, if the value includes trailing digits (e.g., 76.1), the text is selected as expected.

Unplanned
Last Updated: 16 May 2024 14:23 by Matthijs
Created by: Maria
Comments: 3
Category: UI for Blazor
Type: Feature Request
57

I would like a comopnent similar to this one https://demos.telerik.com/kendo-ui/dropdowntree/index

The goal is to be able to show and select hierarchical data, because the multiselect is flat https://demos.telerik.com/blazor-ui/multiselect/overview

Pending Review
Last Updated: 16 May 2024 03:39 by Tung
Created by: Tung
Comments: 0
Category: UI for Blazor
Type: Bug Report
0

Hi,

 

Here is my demo DatePicker Demo

In Firefox, after I use the mouse to black all texts out, then DatePicker only selects the month field in the place holder. I expect to select all texts.

In Chrome or Edge, the DatePicker works as expected, after blacking texts out, it selects all texts in the place holder

Could you please check the issue?

 

Thanks and regards,

Tung

Unplanned
Last Updated: 15 May 2024 12:34 by Gert
Created by: NovaStor
Comments: 2
Category: UI for Blazor
Type: Feature Request
26

Hi.

 

I'd like to request the ability to use a TimeSpanPicker component in Blazor.

 

For example, see https://www.telerik.com/maui-ui/timespanpicker

 

Thank you.

Declined
Last Updated: 15 May 2024 12:09 by ADMIN

Currently using Telerik.DataSource.QueryableExtensions.CreateDataSourceResult() results in queryable.Count() + queryable.Skip(...).Take(...). done seperatelly. EF Core specific tests are already present it seems, based on decompiled code, I can see: "if (!sort.Any() && queryable.Provider.IsEntityFrameworkProvider())". 

Request: Add support for other ORM's that are more capable than EF Core. In case of pagination, window-function could be used to save from extra count query. A short sample bellow:

var dbResults = await queryable
	.Select(x => new {
		Item = x,
		TotalCount = Sql.Ext.Count().Over().ToValue()
	})
	.Skip(() => offset)
	.Take(() => limit)
	.ToListAsync();

var count = dbResults.FirstOrDefault()?.TotalCount ?? 0;
var items = dbResults.Select(x => x.Item);

Read more about Window functions: https://statics.teams.cdn.office.net/evergreen-assets/safelinks/1/atp-safelinks.html 

Unplanned
Last Updated: 15 May 2024 08:33 by Ben
The IsEntityFrameworkProvider method in the DataSource package returns false when the provider is Entity Framework Core. 
Unplanned
Last Updated: 15 May 2024 08:13 by Gert

When filtering or editing a Grid with enum data, the Name property of their Display parameter is respected.

However, in the initial view mode of the Grid the Name property is not applied and the enum values are rendered regardless of whether or not their Display parameter has a Name property defined.

 

==========

ADMIN EDIT

==========

In the meantime, a workaround you might try is to create a custom method to check whether Display attribute is defined and get and display its Name property, otherwise display the Enum's member name.

You can then use a Template for the column that uses enum data, cast its context to the model you are using and invoke the method on the field containing the enum. The sample below demonstrates how you can achieve this.

@using System.ComponentModel.DataAnnotations
@using System.Reflection

<TelerikGrid Data=@MyData EditMode="@GridEditMode.Inline" Pageable="true" Height="500px"
             OnUpdate="@UpdateHandler" FilterMode="@GridFilterMode.FilterRow">
    <GridColumns>
        <GridColumn Field=@nameof(SampleData.ID) Editable="false" Title="ID" />
        <GridColumn Field=@nameof(SampleData.Name) Title="Name" />
        <GridColumn Field=@nameof(SampleData.Role) Title="Position">       
            <Template>
                @{
                    var currentEmployee = context as SampleData;
                    var currentRole = GetDisplayName(currentEmployee.Role);                        
                }

                @currentRole
            </Template>
        </GridColumn>
        <GridCommandColumn>
            <GridCommandButton Command="Save" Icon="save" ShowInEdit="true">Update</GridCommandButton>
            <GridCommandButton Command="Edit" Icon="edit">Edit</GridCommandButton>
        </GridCommandColumn>
    </GridColumns>
</TelerikGrid>

@code {
    //custom method to check whether Display attribute is defined and get and display its Name property, otherwise display the Enum's member name
    public string GetDisplayName(Enum val)
    {
        return val.GetType()
                  .GetMember(val.ToString())
                  .FirstOrDefault()
                  ?.GetCustomAttribute<DisplayAttribute>(false)
                  ?.Name
                  ?? val.ToString();
    }


    public void UpdateHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;

        //update the view-model
        var index = MyData.FindIndex(i => i.ID == item.ID);
        if (index != -1)
        {
            MyData[index] = item;
        }

        //perform actual data source operations here
    }

    //model and dummy data generation
    public class SampleData
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public Role Role { get; set; }
    }

    public enum Role
    {
        [Display(Name = "Manager")]
        ManagerRole,
        [Display(Name = "Employee")]
        EmployeeRole,
        [Display(Name = "Contractor")]
        ContractorRole
    }

    public List<SampleData> MyData { get; set; }

    protected override void OnInitialized()
    {
        MyData = new List<SampleData>();

        for (int i = 0; i < 50; i++)
        {
            MyData.Add(new SampleData()
            {
                ID = i,
                Name = "name " + i,
                Role = (Role)(i % 3) // just some sample to populate initial values for the enum
            });
        }
    }
}

Declined
Last Updated: 14 May 2024 11:31 by George

See below repl

https://blazorrepl.telerik.com/GeYodYvp135zJH7N22

The first dropdown is populated correctly, it is not in a FormItem or Template

The second one, populated in the same way but inside a FormItem context does not show the data, it only redraws and shows data when entering another control i.e. the other working dropdown.

This was previously working when the application was using .net 6 and Telerik 3.6.1
It has since been updated to .net 8 and Telerik 5.1.1

What is the correct way to populate this?
Can you provide more information?

Thanks.

Unplanned
Last Updated: 08 May 2024 08:40 by ADMIN
Created by: Thomas
Comments: 0
Category: UI for Blazor
Type: Feature Request
2

Hello,

We use extensively the features of Telerik WPF RadMap and are now migrating to Blazor. So we are trying to use TelerikMap to cover our needs.

TelerikMap doesn't support WMS (most important) and vector tile (nice to have) layers.

Implementing them directly is not really important but having some class available for us to override to implement our way could be enough.

In Telerik WPF RadMap, we had TiledProvider and TiledMapSource from which we made our own implementations to cover our needs (WMS with specific parameters mostly), we override the method GetTile and from here we can do whatever we want.

It would be nice to have the same system in Blazor

Thanks

Thomas

Under Review
Last Updated: 07 May 2024 06:05 by Peili
Created by: Peili
Comments: 2
Category: UI for Blazor
Type: Feature Request
1

Hi,

We use compact sized grid all the time in our application.

However, with sorting and filtering enabled, the icons take too much space in the header cell and make the actual header text hard to read.

Please consider scale down those icons and reduce padding.

Thanks and best regards,

Peili

 

Demo: https://blazorrepl.telerik.com/mSOIQZvO51cwrorJ49

Completed
Last Updated: 06 May 2024 12:02 by ADMIN
Release 2024 Q2 (May)

We find this in our infrastructure but it can be reproduced even in Telerik docs.

Docs page: https://docs.telerik.com/blazor-ui/components/grid/grouping/overview try to drop all three columns using drag and drop in sequence: Team, Name, On Vacation.

Expected sequence: Team, Name, On Vacation

Expected sequence: Team, On Vacation, Name

All Elements are always added as 1 item. It is an important feature for us, as our customers use it frequently.

===

TELERIK EDIT:

A possible workaround is to intercept the grouping and reorder the groups:

@using Telerik.DataSource

<p>Group by a third column, so that it should come last in the Group Panel:</p>

<TelerikGrid @ref="@GridRef"
             Data="@GridData"
             Pageable="true"
             Sortable="true"
             Groupable="true"
             FilterMode="GridFilterMode.FilterRow"
             OnStateInit="@( (GridStateEventArgs<Employee> args) => OnGridStateInit(args) )"
             OnStateChanged="@( (GridStateEventArgs<Employee> args) => OnGridStateChanged(args) )">
    <GridColumns>
        <GridColumn Field="@nameof(Employee.Name)" />
        <GridColumn Field="@nameof(Employee.Team)" />
        <GridColumn Field="@nameof(Employee.Salary)" />
        <GridColumn Field="@nameof(Employee.OnVacation)" />
    </GridColumns>
</TelerikGrid>

@code {
    private TelerikGrid<Employee>? GridRef { get; set; }

    private List<Employee> GridData { get; set; } = new();

    private void OnGridStateInit(GridStateEventArgs<Employee> args)
    {
        args.GridState.GroupDescriptors = new List<GroupDescriptor>();

        args.GridState.GroupDescriptors.Add(new GroupDescriptor()
        {
            Member = nameof(Employee.Team),
            MemberType = typeof(string)
        });

        args.GridState.GroupDescriptors.Add(new GroupDescriptor()
        {
            Member = nameof(Employee.OnVacation),
            MemberType = typeof(bool)
        });
    }

    private async Task OnGridStateChanged(GridStateEventArgs<Employee> args)
    {
        if (args.PropertyName == "GroupDescriptors" && args.GridState.GroupDescriptors.Count > 2 && GridRef != null)
        {
            var secondGroupDescriptor = args.GridState.GroupDescriptors.ElementAt(1);

            args.GridState.GroupDescriptors.Remove(secondGroupDescriptor);
            args.GridState.GroupDescriptors.Add(secondGroupDescriptor);

            await GridRef.SetStateAsync(args.GridState);
        }
    }

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

        for (int i = 1; i <= 20; i++)
        {
            GridData.Add(new Employee()
            {
                Id = i,
                Name = "Name " + i,
                Team = "Team " + (i % 4 + 1),
                Salary = (decimal)rnd.Next(1000, 3000),
                OnVacation = i % 3 == 0
            });
        }
    }

    public class Employee
    {
        public int Id { get; set; }
        public string Name { get; set; } = string.Empty;
        public string Team { get; set; } = string.Empty;
        public decimal Salary { get; set; }
        public bool OnVacation { get; set; }
    }
}

 

Completed
Last Updated: 06 May 2024 07:07 by ADMIN
Release 2024 Q2 (May)
Created by: Alois
Comments: 22
Category: UI for Blazor
Type: Feature Request
112

When is Spreadsheet for Blazor available or can i use Kendo Spreadsheat?

Regards

Alois Seidler 

Unplanned
Last Updated: 06 May 2024 05:46 by ADMIN

I've determined that the TelerikDateTimePicker does not work properly on mobile devices when using AdaptiveMode.Auto. Attached are videos of the component's behaviour in both modes (None, and Auto).

Immediately after interacting with the fullscreen popup of the datepicker, I see this error in the console:

RAW:
telerik-blazor.js:50 Uncaught TypeError: r.isParent is not a function

    at p.isChild (telerik-blazor.js:50:1362352)
    at f.closePopup (telerik-blazor.js:50:1398427)
    at HTMLHtmlElement.onMouseDown (telerik-blazor.js:50:1397246)

Code:

@using Telerik.Blazor.Components
@using Telerik.Blazor

<TelerikFloatingLabel Text="Date & Time">
    <TelerikDateTimePicker Id="date-picker" @bind-Value="MyFormModel.Date" Max="@DateTime.Now.AddDays(1)"
                           Format="@DATE_FORMAT" AdaptiveMode="AdaptiveMode.Auto"
                           FillMode="@Telerik.Blazor.ThemeConstants.DateTimePicker.FillMode.Flat" />
</TelerikFloatingLabel>
@code {
    private FormModel MyFormModel { get; set; } = new FormModel();
    private const string DATE_FORMAT = "MM/dd/yyyy HH:mm";

    private class FormModel
    {
        public DateTime Date { get; set; }
    }
}

Notes:
- If we remove all of the parent components wrapping the DatePicker, it seems to function properly, but the errors remain in the console. This isn't a solution, however.

Unplanned
Last Updated: 04 May 2024 16:19 by Cirrus
Created by: Cirrus
Comments: 3
Category: UI for Blazor
Type: Feature Request
1

On Blazor Filter, please consider option to drag and drop rules to re-order the rules. It's a common user request that when creating complex rules that user has ability to move rules around without having to delete and create again. User loses information and data when rules are deleted and can be difficult to relocate in long drop downs.

Ability to drag and drop move of existing rules would improve user experience. Any change to GUI should also reflect in updated FilterDescriptor.

===

ADMIN EDIT

===

The order of the filter rules in one group does not make a difference for the FilterDescriptor. Thus, the current request applies to dragging filter rules from one group to another.

Unplanned
Last Updated: 01 May 2024 12:05 by ADMIN
Created by: Emil
Comments: 3
Category: UI for Blazor
Type: Feature Request
2
Is there a chance that there will be added a Treemap component in the near future?
Completed
Last Updated: 25 Apr 2024 13:22 by ADMIN
Release 5.0.0 (15 Nov 2023) (R1 PI1)
Created by: James
Comments: 5
Category: UI for Blazor
Type: Feature Request
32
Please add an app bar component
Declined
Last Updated: 24 Apr 2024 08:34 by ADMIN

Horizontal scrolling in the grid works when its width is set to a fixed value (px, rem, etc.). But the h scroll disappear when a percentage is assigned to the width of the grid.

This seems to be a known 'feature' to Telerik:

https://docs.telerik.com/blazor-ui/components/grid/columns/width?_gl=1*78gyue*_ga*MzUzNTU3NTM0LjE2ODU2MTc3Njk.*_ga_9JSNBCSF54*MTcxMjIyMTAxNS44My4xLjE3MTIyMjExMzQuOS4wLjA.*_gcl_au*MTA3OTA1NzUyOS4xNzEwNTE1Njgy&_ga=2.263164300.1038437897.1712221016-353557534.1685617769

A sensible behaviour is to have the horizontal scrolling enabled and at the same time being able to set the grid to percentage width.

Unplanned
Last Updated: 23 Apr 2024 22:51 by Antonio Vidal
Created by: improwise
Comments: 6
Category: UI for Blazor
Type: Feature Request
37

I'd like to have an ExpansionPanel component where I can declare my desired panel instances and their content in the markup.

Similar to https://www.telerik.com/kendo-angular-ui/components/layout/expansionpanel/

Unplanned
Last Updated: 22 Apr 2024 07:56 by ADMIN
Created by: Cirrus
Comments: 1
Category: UI for Blazor
Type: Feature Request
1

On Blazor filter field parameters, please consider adding

1/ Group options, eg using demo sample fields drop down looks like this

Id
Quantity
Freight
Country
Ship to
Ship Address

but it would be useful to allow groping fields by common categories?

Group-1
-Id
-Quantity
-Freight
Group-2
-Country
-Ship to
-Ship Address

2/ Related, can you also add sort index for group and fields so they can be sorted by index rather than field name. Sometimes groups and fields require different order that is not always alphanumerical and may change order based on other selections.

3/ Maybe consider feature parity with filter field options here querybuilder

Need More Info
Last Updated: 17 Apr 2024 15:58 by ADMIN
<TelerikDateTimePicker Value="@AttendanceDTO.WorkScheduleEndTime"
                       ValueExpression="@(() => AttendanceDTO.WorkScheduleEndTime)"
                       AdaptiveMode="@AdaptiveMode.Auto"
                       ValueChanged="@( (DateTime d) => ChangeWorkScheduleEndTime(d) )"
                       Format="dd/MM/yyyy (dddd) HH:mm"
                       Id="selected-date"
                       Enabled="!ReadOnly">
</TelerikDateTimePicker>
1 2 3 4 5 6