Completed
Last Updated: 20 Mar 2023 10:17 by ADMIN
Created by: Roman
Comments: 2
Category: UI for Blazor
Type: Bug Report
0

OnRowRender in version 4 style is applied through one line.

 

@* Conditional styling/formatting for rows (including locked/frozen columns). *@

<style>
    /*the following selectors target the locked/frozen columns*/
    /*===*/
    .k-grid .k-master-row.myCustomRowFormatting .k-grid-content-sticky,
    .k-grid .k-master-row.myCustomRowFormatting.k-alt .k-grid-content-sticky
    /*===*/
    {
        background-color: inherit;
    }

    .k-grid tr.myCustomRowFormatting:hover {
        background-color: red !important;
    }

    .k-grid tr.myCustomRowFormatting {
        background-color: #90EE90;
    }
</style>

<TelerikGrid Data="@MyData"
             Height="446px"
             Pageable="true"
             Width="450px"
             OnRowRender="@OnRowRenderHandler">
    <GridColumns>
        <GridColumn Field="@(nameof(SampleData.Id))" Width="120px" Locked="true" />
        <GridColumn Field="@(nameof(SampleData.Name))" Width="200px" Title="Employee Name" />
        <GridColumn Field="@(nameof(SampleData.Team))" Width="200px" Title="Team" />
    </GridColumns>
</TelerikGrid>

@code {
    void OnRowRenderHandler(GridRowRenderEventArgs args)
    {
        var item = args.Item as SampleData;

        //conditional applying Class
        if (true)
        {
            args.Class = "myCustomRowFormatting";
        }
    }

    public IEnumerable<SampleData> MyData = Enumerable.Range(1, 30).Select(x => new SampleData
    {
        Id = x,
        Name = "name " + x,
        Team = "team " + x % 5
    });

    public class SampleData
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Team { get; set; }
    }
}
Duplicated
Last Updated: 15 Mar 2023 21:13 by ADMIN

After the update

we're having this issue when trying to build our project.

The needed nuget package it's already added and even adding the Telerik.DataSource as a package that's not needed in theory we're not able to build.

Error CS0012 The type 'CompositeFilterDescriptor' is defined in an assembly that is not referenced. You must add a reference to assembly 'Telerik.DataSource, Version=2.1.3.0, Culture=neutral, PublicKeyToken=29ac1a93ec063d92'.

 

 


Duplicated
Last Updated: 14 Mar 2023 18:01 by ADMIN

Title: WCAG 4.1.2: Ensures elements with ARIA roles have all required ARIA attributes (.k-splitbar)
Tags: Accessibility, WCAG 4.1.2, aria-required-attr

Issue: Ensures elements with ARIA roles have all required ARIA attributes (aria-required-attr - https://accessibilityinsights.io/info-examples/web/aria-required-attr)

Target application: xxx

Element path: .k-splitbar

Snippet: <div tabindex="0" role="separator" class="k-splitbar k-splitbar-vertical k-splitbar-draggable-vertical">

How to fix: 
Fix any of the following:
  Required ARIA attribute not present: aria-valuenow

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 ===============================

    <TelerikTabStrip TabPosition="Telerik.Blazor.TabPosition.Top" @ref="@TabStrip" Height="100%">
        @{
            foreach (var console in ViewModel.AvailableConsoles)
            {
                <TabStripTab Title="@console.Title" Disabled="@console.Disabled">
                    <div style="height:100%">
                        @RenderContent(console)
                    </div>
                 </TabStripTab>
            }
        }
    </TelerikTabStrip>
Completed
Last Updated: 14 Mar 2023 10:34 by ADMIN
Release 4.1.0 (15/03/2023)

The Visible parameter removes the underlying render fragment when set to false.

Please expose APIs (maybe Show/Hide methods) to keep the DOM in tree but only modify visibility / display CSS attributes to hide/show the telerik window element. This would allow developer to retain content / state of the window which may need to be displayed very frequently.

Completed
Last Updated: 14 Mar 2023 07:23 by ADMIN
Created by: Pratik
Comments: 1
Category: UI for Blazor
Type: Feature Request
0

For Example, I have DTO like below, how on Form I will Display Lable for FormItem from value get from Display Name

    public class DepartmentRequestDTO
    {
        [Display(Name = "Department Id")]
        [Required(ErrorMessage = "Department Id" + ErrorConstant.RequiredMsg)]
        public int DepartmentId { get; set; }

        [Display(Name = "Department Name")]
        //[Required(ErrorMessage = "Department Name" + ErrorConstant.RequiredMsg)]
        [Required]
        [StringLength(50, MinimumLength = 3)]
        public string Name { get; set; }

        [Display( Name = "Remarks")]
        //[Required(ErrorMessage = "Remarks" + ErrorConstant.RequiredMsg)]
        [StringLength(250, MinimumLength = 3)]
        public string Remarks { get; set; }
    }
Declined
Last Updated: 11 Mar 2023 16:51 by Michal
Created by: Michal
Comments: 9
Category: UI for Blazor
Type: Bug Report
0

Hello,

 i am fighting with ability to have inputs inside grid->gridtoolbar, but Tabindex of all inputs are automtically somehow reset to tabindex="-1" except the first one. All inputs mean: both telerik and standard html.

Is there any steps how tell the grid to NOT reset the tabindex?

Here is repo, focus on seccond,third input on finall html colde(all except "eAA") are with tabindex=-1

https://blazorrepl.telerik.com/GdalYJby04A79c4X38

Expected behaviour:

- maintain tabindex as it was set
or - if automatic indexing is necessary, number it incrementaly

Thank You for info

Unplanned
Last Updated: 09 Mar 2023 09:04 by ADMIN
Created by: Hristian Stefanov
Comments: 0
Category: UI for Blazor
Type: Feature Request
2
Expose a GridTooBar component, which will offer a typed declaration of internal components, just like the regular ToolBar component.
Duplicated
Last Updated: 24 Feb 2023 16:42 by Constantinos Petridis

I would like to be able to change the multiselect tags, mainly colors, forground and background, of both dropdown elements (shown in list) and selected values shown in textbox like the image bellow

Duplicated
Last Updated: 24 Feb 2023 11:57 by ADMIN
Created by: eDAD
Comments: 0
Category: UI for Blazor
Type: Bug Report
0
NVDA and Narrator are not announcing separator value and position.
Test Environment:

Windows 11 Pro Version 22H2 OS build 22621.674

Chrome Version 106.0.5249.119 (Official Build) (64-bit)

Edge Version 106.0.1370.52 (Official build) (64-bit)
NVDA Version 2022.3.1

Repro-Steps:
  1. Hit the URL:Blazor Splitter Overview - Telerik UI for Blazor
  2. Turn on NVDA/Narrator
  3. Tab till Preview under Creating Splitter for Blazor
  4. Tab till separator
  5. Verify that NVDA/Narrator is separator along with value like "50 separator" or not
Actual Result:

NVDA is announcing separator along with value like "50 ".

Narrator is announcing as "Seperator".


Expected Result:
NVDA /Narrator should announce separator value with respect to position value for the separator.

User Impact:
Screen reader users may confuse if it's not announcing with respect to position value for the separator
Declined
Last Updated: 23 Feb 2023 08:41 by ADMIN
Created by: Daniel
Comments: 1
Category: UI for Blazor
Type: Feature Request
1

The default `ButtonType` looks for any matching form and triggers validation and submission of the form.
This can very quickly lead to unintended behaviour.

The default should be a regular button that does not invoke any additional functions.

Completed
Last Updated: 21 Feb 2023 14:05 by ADMIN
Release 4.1.0 (15/03/2023)
Created by: Gerald
Comments: 1
Category: UI for Blazor
Type: Feature Request
1

Hi,

Could you expose the Print Command of Blazor PDF Viewer? I would like to call it from within my code.

 

Regards

Gerald Man

Duplicated
Last Updated: 16 Feb 2023 10:10 by ADMIN
Created by: eDAD
Comments: 1
Category: UI for Blazor
Type: Bug Report
0

On applying aquatic and desert theme, Separator is not visible

Repro Steps:

  1. Hit the URL:Blazor Splitter Overview - Telerik UI for Blazor
  2. Turn on High contrast theme
  3. Tab till Preview under Creating Splitter for Blazor
  4. Tab till separator
  5. Verify that separator is visible on applying aquatic and desert theme or not

Actual Result: On applying aquatic and desert Theme, Separator is not visible.

Expected Result: 
On applying aquatic and desert Theme, Separator should be visible

User Impact:
Users who rely on the contrast themes may feel difficulty if the close buttons in Feedback popup are not completely visible.
Declined
Last Updated: 16 Feb 2023 09:16 by ADMIN
Created by: Nicolas
Comments: 1
Category: UI for Blazor
Type: Feature Request
1

Hi

Telerik Autocomplete does not have a ValueTemplate.

Mostly the Value is an Id, which in most examples does not make sense to be displayed to the User when selected.

 

Kind regards

Nicolas

 

Duplicated
Last Updated: 10 Feb 2023 11:57 by ADMIN

It is impossible to customize the Text and Icon for the Telerik Upload Blazor Component. It always sans "Select Files". This is not easy to see at a glance.

Requests:

  1. Add a Title attribute to the upload component that lets you change the text from the default "Select Files". 
  2. Add the ability to set the Icon on the upload button.

Proposed Code:


<TelerikUpload Title="Upload Files" Icon="@SvgIcon.Upload" ... />

I had to write some hacky JavaScript interop to accomplish this:

function setTelerikUploadButtonText(text) {
    // Finds all the telerik blazor upload components on the page and changes the text of the upload button.

    let replaced = 0;

    const defaultText = "Upload";

    // Find all the buttons with class "k-upload-button". There should be one for each upload component.
    const buttons = document.getElementsByClassName("k-upload-button");

    for (let i = 0; i < buttons.length; i++) {
        // Find the span with class "k-button-text" and change its text.
        const spans = buttons[i].getElementsByClassName("k-button-text");

        if (spans.length > 0) {

            // Add horizontal padding to the span.
            spans[0].classList.add("px-2");
            
            // Change the text.
            spans[0].innerHTML = text ?? defaultText;

            // Insert a font awesome icon.
            spans[0].insertAdjacentHTML('afterbegin', '<i class="fas fa-upload"></i>&nbsp;');
            
            // Track how many buttons were updated.
            replaced++;
        }
    }
    
    console.info("setTelerikUploadButtonText: " + replaced + " buttons updated.");
    
    return replaced;
}



/// <summary>
    /// Finds all the telerik blazor upload components on the page and changes the text of the upload button.
    /// </summary>
    /// <returns>The number of upload components button text that were found &amp; replaced.</returns>
    public static async Task SetTelerikUploadButtonText(this IJSRuntime jSRuntime,
        string text = "Upload Files")
    {
        await jSRuntime.InvokeVoidAsync("setTelerikUploadButtonText", text);
    }

 

Screenshot:

Completed
Last Updated: 10 Feb 2023 06:59 by ADMIN
Created by: Gold Star
Comments: 2
Category: UI for Blazor
Type: Bug Report
1
Whenever I add TelerikGrid to a razer page my intellisense breaks and leaves everything white. I'm using Telerik UI for Blazor v4. The other Telerik components are fine but this one kills it.
Completed
Last Updated: 10 Feb 2023 06:57 by ADMIN
Created by: Ben
Comments: 1
Category: UI for Blazor
Type: Bug Report
0
Just came across this while looking at source code...
Unplanned
Last Updated: 27 Jan 2023 09:18 by ADMIN
Created by: Buddhi
Comments: 1
Category: UI for Blazor
Type: Bug Report
5
I am using Telerik blazor grid and it is groupable and can be edited cell itself. i have used a button to group the grid.but after grouping when i am going to edit a cell ,entire grid is getting loaded.
following you can see a my code sample .how we can edit cell without loading grid .


@using System.ComponentModel.DataAnnotations 

<TelerikButton ThemeColor="primary" OnClick="@SetGridGroup">Group</TelerikButton>


<TelerikGrid Data=@MyData EditMode="@GridEditMode.Incell" Pageable="true" Height="500px"
            OnUpdate="@UpdateHandler" 
            OnEdit="@EditHandler" 
            OnDelete="@DeleteHandler"
            OnCreate="@CreateHandler" 
            OnCancel="@OnCancelHandler"
            Groupable="true">
    <GridToolBarTemplate>
        <GridCommandButton Command="Add" Icon="@FontIcon.Plus">Add Employee</GridCommandButton>
    </GridToolBarTemplate>
    <GridColumns>
        <GridColumn Field=@nameof(SampleData.ID) Title="ID" Editable="false" />
        <GridColumn Field=@nameof(SampleData.FirstName) Title="Name" />
        <GridColumn Field=@nameof(SampleData.LastName) Title="Last Name" />

        <GridColumn Field=@nameof(SampleData.Team ) Title="Team" />
        <GridCommandColumn>
            <GridCommandButton Command="Delete" Icon="@FontIcon.Trash">Delete</GridCommandButton>
        </GridCommandColumn>
    </GridColumns>
</TelerikGrid>
@code {
    async Task SetGridGroup()
    {
        GridState<SampleData> desiredState = new GridState<SampleData>()
        {
            GroupDescriptors = new List<GroupDescriptor>()
            {
                new GroupDescriptor()
                {
                    Member = "Team",
                    MemberType = typeof(string)
                },
                
            },
            // choose indexes of groups to be collapsed (they are all expanded by default)
            CollapsedGroups = new List<int>() { 0 },
        };
        await Grid.SetStateAsync(desiredState);
    }
    void EditHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;
        // prevent opening for edit based on conditionif (item.ID < 3)
        {
            args.IsCancelled = true;// the general approach for cancelling an event
        }
        Console.WriteLine("Edit event is fired.");
    }
    async Task UpdateHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;
        await MyService.Update(item);
        await GetGridData();
        Console.WriteLine("Update event is fired.");
    }
    async Task DeleteHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;
        await MyService.Delete(item);
        await GetGridData();
        Console.WriteLine("Delete event is fired.");
    }
    async Task CreateHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;
        await MyService.Create(item);
        await GetGridData();
        Console.WriteLine("Create event is fired.");
    }
    void OnCancelHandler(GridCommandEventArgs args)
    {
        SampleData item = (SampleData)args.Item;
        Console.WriteLine("Cancel event is fired. Can be useful when people decide to not satisfy validation");
    }
    public class SampleData
    {
        publicint ID { get; set; }
        [Required]
        public string FirstName { get; set; }
        public string LastName { get; set; }

        public string Team {get;set;}
    }
    public List<SampleData> MyData { get; set; }
    async Task GetGridData()
    {
        MyData = await MyService.Read();
    }
    protected override async Task OnInitializedAsync()
    {
        await GetGridData();
    }
   publicstaticclassMyService
    {
        private static List<SampleData> _data { get; set; } = new List<SampleData>();
        public static async Task Create(SampleData itemToInsert)
        {
            itemToInsert.ID = _data.Count + 1;
            _data.Insert(0, itemToInsert);
        }
        publicstaticasync Task<List<SampleData>> Read()
        {
            if (_data.Count < 1)
            {
                for (int i = 1; i < 50; i++)
                {
                    _data.Add(new SampleData()
                    {
                        ID = i,
                        FirstName = "Name " + i.ToString(),
                        LastName = "Last Name " + i.ToString(),

                        Team="Team" +(i%5).ToString()
                    });
                }
            }
            returnawait Task.FromResult(_data);
        }
        public static async Task Update(SampleData itemToUpdate)
        {
            var index = _data.FindIndex(i => i.ID == itemToUpdate.ID);
            if (index != -1)
            {
                _data[index] = itemToUpdate;
            }
        }
        public static async Task Delete(SampleData itemToDelete)
        {
            _data.Remove(itemToDelete);
        }
    }
}


Duplicated
Last Updated: 26 Jan 2023 16:56 by ADMIN
Created by: ManojKumar
Comments: 3
Category: UI for Blazor
Type: Bug Report
2

Changing page size triggers multiple read requests.

Demo

Unplanned
Last Updated: 26 Jan 2023 12:57 by ADMIN

When edit is initiated from code with virtual scroll, a duplicate OnRead request is also triggered.

But this is not the case when built-in edit command button is used.

Demo

Declined
Last Updated: 25 Jan 2023 16:08 by Peter
Created by: Peter
Comments: 2
Category: UI for Blazor
Type: Feature Request
0

In the TelerikForm component, you have "FormItem" with a string parameter of Field and from the string, you somehow bind the data to that field.

For other components, we must use the @bind-Value to get this 2-way binding.

I would like to request the "Field" parameter for more controls like TelerikTextBox where we can bind using the string name of the field like we do in FormItem.

So instead of:

<TelerikTextBox @bind-Value="@customer.CustomerName" />

we would be able to do this:

<TelerikTextBox Field="CustomerName" />

or this:

<TelerikTextBox Field="customer.CustomerName" />

I would suspect that this would only work inside an EditContext.

Peter