Unplanned
Last Updated: 07 Mar 2024 08:56 by ADMIN

Sometimes the Gantt provides better visibility when we can split tasks into segments on the same row. This is a new feature to SyncFusion and would be very useful to extend the possibilities of the Telerik Gantt as well.

This is an example of what it looks like:

I could make use of this in a couple of ways. Some of my tasks require to get to a preliminary point at a certain time and a finished point later. Those are not continuous buckets of work, but they are so closely related that it would make visual presentation more intuitive and simpler if they were displayable that way.

I might also use this as a method of displaying a higher level read-only gantt where I want to condense a few milestones or task windows into a single row.

Duplicated
Last Updated: 06 Mar 2024 12:44 by ADMIN
Created by: Enoch
Comments: 5
Category: UI for Blazor
Type: Feature Request
0

https://dynamic-linq.net/

Please consider refactoring Telerik.DataSource to allow for Dynamic Linq expressions rather than fixed Member.

1. You don't have to reinvent the wheel in creating lambda expressions. You can simplify Telerik.DataSource code to just use Dynamic Linq.

2. Allows support for Sorts & Grouping to be expressions such as "Math.Abs(field ?? 0)" rather than just "field".

Duplicated
Last Updated: 06 Mar 2024 07:01 by ADMIN
Created by: Lance
Comments: 3
Category: UI for Blazor
Type: Feature Request
3

Telerik.Blazor.DialogFactory

User types in an input string, but they have to click 'ok' with the mouse to proceed - typing enter does nothing

 

Won't Fix
Last Updated: 05 Mar 2024 08:15 by ADMIN

We have edit dialogs with editable fields on them, and we want to display a confirmation dialog if the user tries to close the edit dialog without saving. Simplified code to illustrate the issue: 

https://blazorrepl.telerik.com/GIEwwBvM54V6RbH952 

Unplanned
Last Updated: 01 Mar 2024 18:19 by Wolfgang
Created by: Nick
Comments: 1
Category: UI for Blazor
Type: Feature Request
3

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.forms.fieldcssclassprovider.getfieldcssclass?view=aspnetcore-6.0

The feature request is to provide a way for Telerik customers to define custom validation classes. It seems appropriate to have the FieldCssClassProvider override in Telerik components. Thus, if required customers would be able to apply custom styling and remove the default theme classes for valid and invalid state.

Related #1564471
Declined
Last Updated: 15 Feb 2024 16:51 by ADMIN
Created by: Paolo
Comments: 3
Category: UI for Blazor
Type: Feature Request
3

--- FOR FUTURE REQUEST ---

Could be very useful to scrolling tha grid to a specific item\row (in Normal Grd and also in Virtual Grid mode, both)  programmatically. Whithout javascript.

For example after loading a grid that show 20 items, programmatically is it possible to go (and display in grid) not the first 20 rows but for example at row 100. So the vertical scrolling bar muso go dow sice arriving and show that row.

 

Best Regards

Paolo Leonesi

Duplicated
Last Updated: 14 Feb 2024 15:09 by ADMIN
Created by: Vladimir
Comments: 0
Category: UI for Blazor
Type: Bug Report
4

Trying to group by some nullable column. Expanding the group returns the entire dataset instead of only these rows with value == null.

Use case: Some users can not be assigned to any Team. Want to group by Teams and see users not assigned to any Team.

Steps to reproduce:

  • Using Virtual Scrolling with OnRead method.
  • Have a nullable column e.g. string?.
  • Trying to group by this column gives unexpected results.

Expected results:

Expanding the group by not assigning Teams returns only these users what doesn't have any teams by applying filtering.

Actual results:

 Expanding the group by not assigning Teams returns all users without filtering.

Code:


@using Telerik.DataSource
@using Telerik.DataSource.Extensions

Scroll through the groups or expand them to load their data on demand

<TelerikGrid TItem="@object"
             LoadGroupsOnDemand="true"
             Groupable="true"
             OnStateInit="@((GridStateEventArgs<object> args) => OnStateInitHandler(args))"
             OnRead="@ReadItems"
             ScrollMode="@GridScrollMode.Virtual" PageSize="20" RowHeight="60"
             Navigable="true" Sortable="true" FilterMode="@GridFilterMode.FilterRow" Height="600px">
    <GridColumns>
        <GridColumn Field="@nameof(Employee.Name)" FieldType="@typeof(string)" Groupable="false" />
        <GridColumn Field="@nameof(Employee.Team)" FieldType="@typeof(string)" Title="Team" />
        <GridColumn Field="@nameof(Employee.Salary)" FieldType="@typeof(decimal)" Groupable="false" />
        <GridColumn Field="@nameof(Employee.IsOnLeave)" FieldType="@typeof(bool)" Title="On Vacation" />
    </GridColumns>
</TelerikGrid>

@code {
    List<object> GridData { get; set; }

    protected async Task ReadItems(GridReadEventArgs args)
    {
        // sample data retrieval, see comments in the service mimic class below
        DataEnvelope<Employee> result = await MyService.GetData(args.Request);

        if (args.Request.Groups.Count > 0)
        {
            args.Data = result.GroupedData.Cast<object>().ToList();
        }
        else
        {
            args.Data = result.CurrentPageData.Cast<object>().ToList();
        }

        args.Total = result.TotalItemCount;
    }

    void OnStateInitHandler(GridStateEventArgs<object> args)
    {
        // set initial grouping
        GridState<object> desiredState = new GridState<object>()
        {
            GroupDescriptors = new List<GroupDescriptor>()
            {
                new GroupDescriptor()
                {
                    Member = "Team",
                    MemberType = typeof(string)
                },
                new GroupDescriptor()
                {
                    Member = "IsOnLeave",
                    MemberType = typeof(bool)
                }
            }
        };

        args.GridState = desiredState;
    }

    public class Employee
    {
        public int EmployeeId { get; set; }
        public string Name { get; set; }
        public string? Team { get; set; }
        public bool IsOnLeave { get; set; }
        public decimal Salary { get; set; }
    }

    public class DataEnvelope<T>
    {
        public List<AggregateFunctionsGroup> GroupedData { get; set; }
        public List<T> CurrentPageData { get; set; }
        public int TotalItemCount { get; set; }
    }

    public static class MyService
    {
        private static List<Employee> SourceData { get; set; }
        public static async Task<DataEnvelope<Employee>> GetData(DataSourceRequest request)
        {
            if (SourceData == null)
            {
                SourceData = new List<Employee>();
                var rand = new Random();
                for (int i = 1; i <= 3; i++)
                {
                    SourceData.Add(new Employee()
                    {
                        EmployeeId = i,
                        Name = "Employee " + i.ToString(),
                        Team = "Team " + i % 100,
                        IsOnLeave = i % 3 == 0,
                        Salary = rand.Next(1000, 5000)
                    });
                }
                SourceData.Add(new Employee()
                    {
                        EmployeeId = 3,
                        Name = "Employee " + 3.ToString(),
                        Team = null,
                        IsOnLeave = 3 % 3 == 0,
                        Salary = rand.Next(1000, 5000)
                    });
            }

            await Task.Delay(500);// deliberate delay to showcase async operations, remove in a real app

            // retrieve data as needed, you can find more examples and runnable projects here
            // https://github.com/telerik/blazor-ui/tree/master/grid/datasourcerequest-on-server
            var datasourceResult = SourceData.ToDataSourceResult(request);

            DataEnvelope<Employee> dataToReturn;

            if (request.Groups.Count > 0)
            {
                dataToReturn = new DataEnvelope<Employee>
                {
                    GroupedData = datasourceResult.Data.Cast<AggregateFunctionsGroup>().ToList(),
                    TotalItemCount = datasourceResult.Total
                };
            }
            else
            {
                dataToReturn = new DataEnvelope<Employee>
                {
                    CurrentPageData = datasourceResult.Data.Cast<Employee>().ToList(),
                    TotalItemCount = datasourceResult.Total
                };
            }

            return await Task.FromResult(dataToReturn);
        }
    }
}

Declined
Last Updated: 14 Feb 2024 14:18 by ADMIN
Created by: Fabien
Comments: 1
Category: UI for Blazor
Type: Bug Report
1

Greetings,

I find input adornments very useful. However I noticed that when I click them, the control doesn't get the focus. E.g., with this code:

    <TelerikTextBox>
        <TextBoxPrefixTemplate>
            First name
        </TextBoxPrefixTemplate>
    </TelerikTextBox>

Clicking on First name doesn't do anything. I would expect the control to be focused when I do that.

You will find an image in attachment showing a green area that, when clicked, brings focus on the textbox. Input adornment is in dark gray. I'm using it as a label for the control but even if it was simply an icon, it would be strange to not be able to focus on the control when clicking it.

Declined
Last Updated: 09 Feb 2024 12:24 by ADMIN
Created by: Lennert
Comments: 1
Category: UI for Blazor
Type: Feature Request
1

The OnRowClick event of the TelerikGrid is only triggered when clicking the row with the left mouse button as discussed on the following forum post: 
https://www.telerik.com/forums/grid-onrowclick-event-for-middle-mouse-button-click

Please add support to the OnRowClick event to trigger it for a middle mouse button click (and pass the mouse button clicked in the eventargs) or add a separate OnRowClick event that is triggered on middle mouse button click.

 

 
Duplicated
Last Updated: 08 Feb 2024 08:52 by ADMIN
Created by: Oliver
Comments: 0
Category: UI for Blazor
Type: Bug Report
3

The following code successfully renders the pdf viewer when the edit form is commented out, but when indside the pdf viewer it fails to render and gives the following error:

"Telerik.Blazor.Components.TelerikComboBox`2[Telerik.Blazor.Components.PdfViewer.Models.PdfViewerZoomLevelDescriptor,System.String] requires a value for the 'ValueExpression' ValueExpression is provided automatically when using 'bind-Value'.See more at https://docs.telerik.com/blazor-ui/knowledge-base/requires-valueexpression ."

 

 

@page "/pdfBug" @* <EditForm Model="_fakeContext"> *@ <TelerikPdfViewer Data="@PdfSource" OnDownload="@OnPdfDownload" Height="600px"></TelerikPdfViewer> @* </EditForm> *@ @code { private byte[] PdfSource { get; set; } private async Task OnPdfDownload(PdfViewerDownloadEventArgs args) { args.FileName = "PDF-Viewer-Download"; } protected override void OnInitialized() { PdfSource = Convert.FromBase64String(PdfBase64); base.OnInitialized(); } private const string PdfBase64 = "JVBERi0xLjEKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDEvTWVkaWFCb3ggWy00MCAtNjQgMjYwIDgwXSA+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjE8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9BcmlhbD4+ID4+ID4+L0NvbnRlbnRzIDQgMCBSPj5lbmRvYmoKNCAwIG9iajw8L0xlbmd0aCA1OT4+CnN0cmVhbQpCVAovRjEgMTggVGYKMCAwIFRkCihUZWxlcmlrIFBkZlZpZXdlciBmb3IgQmxhem9yKSBUagpFVAplbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA1CjAwMDAwMDAwMDAgNjU1MzUgZgowMDAwMDAwMDIxIDAwMDAwIG4KMDAwMDAwMDA4NiAwMDAwMCBuCjAwMDAwMDAxOTUgMDAwMDAgbgowMDAwMDAwNDkwIDAwMDAwIG4KdHJhaWxlciA8PCAgL1Jvb3QgMSAwIFIgL1NpemUgNSA+PgpzdGFydHhyZWYKNjA5CiUlRU9G"; private FakeContext _fakeContext = new FakeContext() { Name = "Test" }; public class FakeContext { public string Name { get; set; } } }


Unplanned
Last Updated: 08 Feb 2024 08:48 by ADMIN

Telerik.Blazor.Components.TelerikSwitch`1[System.Boolean] requires a value for the 'ValueExpression' ValueExpression is provided automatically when using 'bind-Value'


This error occurs when the component is used with the EditForm component.

 

Completed
Last Updated: 26 Jan 2024 09:22 by ADMIN
Release 2024 Q1 (Jan)
Created by: Ryan
Comments: 0
Category: UI for Blazor
Type: Feature Request
22

Provide ability to define icons for input prefix and suffix. Thus, provide mechanism for built-in validation icon as well.

Example image with suffix icons to give you better perspective of the feature.

Unplanned
Last Updated: 24 Jan 2024 13:02 by ADMIN
Created by: Igor
Comments: 8
Category: UI for Blazor
Type: Feature Request
30

WPF and Xamarin supports data binding to INotifyCollectionChanged (ObservableCollection) and INotifyPropertyChanged.

This binding scenario is widely used.

So implementation of this feature allows WPF and Xamarin developers use their experience and code base in Blazor.

Duplicated
Last Updated: 19 Jan 2024 12:46 by ADMIN

Title: WCAG 1.3.1: Ensures elements with an ARIA role that require child roles contain them (#\39 374a450-079d-4586-b823-d6bc7723505f)
Tags: Accessibility, WCAG 1.3.1, aria-required-children

Issue: Ensures elements with an ARIA role that require child roles contain them (aria-required-children - https://accessibilityinsights.io/info-examples/web/aria-required-children)

Target application: Hermes Home - https://localhost/TrafficLoss

Element path: #\39 374a450-079d-4586-b823-d6bc7723505f

Snippet: <div class="k-grid-aria-root" id="9374a450-079d-4586-b823-d6bc7723505f" role="grid" aria-label="Data table">

How to fix: 
Fix any of the following:
  Element has children which are not allowed (see related nodes)
  Element has no aria-busy="true" attribute

Environment: Microsoft Edge version 111.0.1661.41

====

This accessibility issue was found using Accessibility Insights for Web 2.37.3 (axe-core 4.6.3), a tool that helps find and fix accessibility issues. Get more information & download this tool at http://aka.ms/AccessibilityInsights.

 

============================  code =============================

                           <TelerikGrid Data="@ViewModel.RDLInformation" TItem="TLSummary"
                                                        Pageable="true" 
                                                        Sortable="true" 
                                                        Groupable="false"
                                                        FilterMode="Telerik.Blazor.GridFilterMode.FilterRow"
                                                        Resizable="true" 
                                                        Reorderable="true"
                                                        Height = "100%">

....

                            </TelerikGrid>

Unplanned
Last Updated: 17 Jan 2024 07:23 by ADMIN
Created by: Ben
Comments: 6
Category: UI for Blazor
Type: Feature Request
1

Hi,

I am looking to use strongly-typed IDs in my project and it does not appear to be possible to achieve this with Telerik UI for Blazor. Instead, the popup does not go away on selection and the bound value does not update.

Note that this is not a request for binding to arbitrary complex types. I believe it would be sufficient to support value types that implement ToString / IParsable.

For example:

https://blazorrepl.telerik.com/QxvcQIPR55jFAGMF00

<h1>Hello, Telerik REPL for Blazor!</h1>
<h2>Selected Value: @SelectedValue</h2>

<TelerikDropDownList Data="@Data"
    @bind-Value="@SelectedValue"
    TextField="@nameof(SelectItem.DisplayName)"
    ValueField="@nameof(SelectItem.Value)"
    DefaultText="Select ...">
</TelerikDropDownList>

@code {
    public MyValue SelectedValue {get; set;}
    public SelectItem[] Data { get; } = new[] {
        new SelectItem(1),
        new SelectItem(2),
    };

    public readonly struct MyValue : System.IParsable<MyValue> {
        public int Value {get;}

        public MyValue(int value) {
            this.Value = value;
        }

        public override string ToString() {
            return Value.ToString();
        }

        public static MyValue Parse(string str, IFormatProvider provider) {
            return new(int.Parse(str, provider));
        }

        public static bool TryParse(string str, IFormatProvider provider, out MyValue value) {
            value = new(int.Parse(str, provider));
            return true;
        }
    }

    public class SelectItem {
        public SelectItem(int value) {
            Value = new(value);
            DisplayName = $"Item {value}";
        }

        public MyValue Value {get; set;}
        public string DisplayName {get; set;}
    }
}

Thanks,
Ben

Unplanned
Last Updated: 12 Jan 2024 10:54 by ADMIN
Created by: Paul Shearing
Comments: 4
Category: UI for Blazor
Type: Feature Request
32

The Ribbon Control (UI for ASP.NET AJAX) is totally superb.

Implementing this for Blazor would be a killer component.

Please!

 

Completed
Last Updated: 21 Dec 2023 13:23 by ADMIN
Release 5.1.0 (31 Jan 2024) (R1 2024)
Created by: Fredrik
Comments: 3
Category: UI for Blazor
Type: Feature Request
14

The Theme Builder contains a really nice looking Popover control, and I was a bit disappointed to discover that this doesn't seem to be documented or supported in UI for Blazor.

I realize I can probably use the Tooltip to achieve a similar effect, with two caveats:

  1. Tooltip requires of substantial CSS hacking to appear as the Popover control.
  2. The Popover closes on an explicit event, whereas Tooltip closes when it loses focus.

 

Is there any chance a Popover control is planned for a future release?

 

Declined
Last Updated: 15 Dec 2023 09:14 by ADMIN

Hi,

It would be VERY helpful if you integrated "Prevent the Grid from wrapping text in multiple lines and show ellipsis" into grid as an option (so we would not have to write separate code and style).

I think this is one of the most needed features since grids almost always have data that wraps line.

BR, Smiljan

Completed
Last Updated: 12 Dec 2023 07:54 by ADMIN
Release 5.1.0 (31 Jan 2024) (R1 2024)

Please Add DropDown Container so it will be possible to add Nested Custom Editors inside Grid Cell

Regards

Andrzej

---

ADMIN EDIT

A dropdown container we would create would be a popup that ties to its anchor and gives you a template to render your own content rather than render its own items based on Data. It cannot, however, be tied to a specific case for a grid or other editor, it will be up to the developer to use the container and tie it to the application logic.

It should also expose events like PopupShowing (preferred to also cater for keyboard navigation) or ExpandClick so you can know when it is going to be expanded and, for example, fetch fresh data for scenarios with highly volatile data (example here).

---

Completed
Last Updated: 01 Dec 2023 14:07 by ADMIN
Release 5.1.0 (31 Jan 2024) (R1 2024)
Created by: Peter
Comments: 1
Category: UI for Blazor
Type: Bug Report
3

So, brand new machine (Win 11 pro 64bit), brand new install of Visual Studio & Telerik, use the Telerik templates to create a new Blazor Server project.

When I run the application (with changes or first run), it takes almost a minute to start the application.

Without changes it starts in 2 seconds.

The fix is to add the following to the application's csproj file.

  <PropertyGroup>
    <UseRazorBuildServer>false</UseRazorBuildServer>
  </PropertyGroup>

After the fix, it takes an just a little longer to run than without changes.  Since I have not heard back on my support ticket, I wanted to report this as a bug so hopefully it can get upvoted and we can get an answer to this issue. 

Original support ticket https://www.telerik.com/account/support-center/view-ticket/1621737 

My Setup:

7950x, 32 gb DDR5 ram, WD Black SSD 850x SSD and slower internet 150mbit/s

Similar problem with my new laptop which is about 50% slower but exactly the same issue.

Peter