The issue targets a Grid with cell selection and DragToSelect feature disabled where at least one column has Visible="false". With this configuration, when using Shift + Click to select multiple cells, the result is a mismatch in the cells that should be selected, after the position where the invisible column is placed.
Video reproduction attached. Reproduction code: https://blazorrepl.telerik.com/GyFuQwPf37H8riAM19.
If the Scheduler is placed in a parent container (for example Telerik Splitter or any other container) its appointments are not resized when resizing the pane. The Scheduler itself resizes accordingly, but the appointments don't.
The SplitButton and DropDownButton trigger client-side Blazor framework exceptions if the app tries to change the component UI in the OnClick handler, for example, toggle Enabled or set another Class.
The issue exists only in WebAssembly apps and only in Chrome / Edge. The problem doesn't exist in the Button and ToggleButton.
Test example with a possible workaround:
<p>Issue:</p>
<TelerikSplitButton OnClick="@OnClickHandler" Enabled="@SplitButtonEnabled">
<SplitButtonContent>Click Me</SplitButtonContent>
<SplitButtonItems>
<SplitButtonItem>Item 1</SplitButtonItem>
<SplitButtonItem>Item 2</SplitButtonItem>
</SplitButtonItems>
</TelerikSplitButton>
<p>Workaround:</p>
<div class="@( $"splitbutton-wrapper {(SplitButtonEnabled ? "" : " my-disabled")}" )">
<TelerikSplitButton OnClick="@OnClickHandler" TabIndex="@( SplitButtonEnabled ? 0 : -1 )">
<SplitButtonContent>Click Me</SplitButtonContent>
<SplitButtonItems>
<SplitButtonItem>Item 1</SplitButtonItem>
<SplitButtonItem>Item 2</SplitButtonItem>
</SplitButtonItems>
</TelerikSplitButton>
</div>
<style>
.splitbutton-wrapper {
display: inline-flex;
}
.my-disabled button {
outline: none !important;
cursor: default;
opacity: .6;
filter: grayscale(0.1);
pointer-events: none;
box-shadow: none !important;
}
</style>
<br />
<br />
<TelerikButton OnClick="@OnClickHandler">Toggle SplitButton Enabled</TelerikButton>
<br />
<br />
<p>OnClickHandler fired: @ClickLog</p>
@code {
private bool SplitButtonEnabled { get; set; } = true;
private string ClickLog { get; set; } = string.Empty;
public void OnClickHandler(MouseEventArgs MouseEventArgs)
{
ClickLog = DateTime.Now.ToString("HH:mm:ss.fff");
SplitButtonEnabled = !SplitButtonEnabled;
}
}
Error message:
blazor.web.js:1 Uncaught (in promise) Error: Assertion failed - heap is currently locked
at Ar (blazor.web.js:1:158126)
at Object.beginInvokeDotNetFromJS (blazor.web.js:1:156049)
at y.invokeDotNetMethodAsync (blazor.web.js:1:4322)
at S.invokeMethodAsync (blazor.web.js:1:5830)
at r.invokeMethodAsync (telerik-blazor.js?63…67597060:22:1272553)
at r.invokeBlur (telerik-blazor.js?63…67597060:22:1392662)
at HTMLButtonElement.onBlur (telerik-blazor.js?63…67597060:22:1270337)
at ve.setOrRemoveAttributeOrProperty (blazor.web.js:1:29093)
at ve.applyAttribute (blazor.web.js:1:28037)
at ve.applyEdits (blazor.web.js:1:25064)
When the user selects an empty tab and then switches to another tab, the empty tab remains highlighted (appears as if it's still selected).
Reproduction: https://blazorrepl.telerik.com/mRkVczaV02S9QkmJ28
Steps:
1. Select the second tab (which has no content).
2. Select the first tab.
Both tabs are highlighted as selected.
We would like the ability to customize the calendar's month header.
For instance, we would like to add a row displaying the month name and year, as shown in the attached screenshot.
Here is the scenario:
In this case, reducing or increasing the number of visible dropdown items does not adjust the open dropdown's position. As a result, it may either float too high, or overflow the screen.
Possible workarounds are:
Here is a test page:
<div style="height:80vh;background:linear-gradient(white,orange)">
<ol>
<li>Open a ComboBox</li>
<li>Type a character to filter and reduce the visible data items</li>
<li>Observe incorrect popup position that leaves a gap</li>
</ol>
<ol>
<li>Focus a closed ComboBox</li>
<li>Type a character to filter and display a reduced list of data items</li>
<li>Remove the filter string to increase the visible data item count</li>
<li>Observe incorrect popup position that overflows the screen</li>
</ol>
</div>
WORKS:
<TelerikComboBox Data="@ListItems"
@bind-Value="@SelectedValue"
TextField="@nameof(ListItem.Text)"
ValueField="@nameof(ListItem.Id)"
Filterable="true"
FilterOperator="@StringFilterOperator.Contains"
Width="300px" />
BROKEN:
<TelerikComboBox Data="@ListItems"
@bind-Value="@SelectedValue"
TextField="@nameof(ListItem.Text)"
ValueField="@nameof(ListItem.Id)"
Filterable="true"
FilterOperator="@StringFilterOperator.Contains"
Width="300px">
<ComboBoxSettings>
<ComboBoxPopupSettings Height="auto" MinHeight="50px" MaxHeight="60vh" />
</ComboBoxSettings>
</TelerikComboBox>
<div style="height:80vh;background:linear-gradient(orange, white)">
</div>
@code {
private List<ListItem> ListItems { get; set; } = new();
private int SelectedValue { get; set; }
protected override void OnInitialized()
{
ListItems = new List<ListItem>();
for (int i = 1; i <= 50; i++)
{
ListItems.Add(new ListItem()
{
Id = i,
Text = $"Item {i} {(char)Random.Shared.Next(65, 91)}{(char)Random.Shared.Next(65, 91)}{(char)Random.Shared.Next(65, 91)}{(char)Random.Shared.Next(65, 91)}"
});
}
base.OnInitialized();
}
public class ListItem
{
public int Id { get; set; }
public string Text { get; set; } = string.Empty;
}
}
I have recently encountered an accessibility issue with the grid popup editor where the labels for the generated fields are not linked to their respective editor. It seems that the label does have a "for" attribute that is the same as the column title which I expect, but the Id of the input does not get set to the same thing. I can't see any option to make the association happen automatically.
===
ADMIN EDIT
===
A possible option for the time being is to use a custom popup edit form. You may either declare your desired custom content for the form and link the labels to their respective inputs or use the Form component with the field autogeneration feature which will automatically link the labels to the inputs.
When adding an icon such as <i class="fa-light fa-envelope"></i> (the format which FontAwesome recommends), the icon's HTML disappears upon saving. We figured this was maybe due to the type of tag used (the i tag), so we tried using a div instead (<div class="fa-light fa-envelope"></div>). This div is not stripped from the HTML but the icon is not rendered.
Please allow inserting icons in the Editor content.
In fashion similar to the following example for the React editor that's done through the onMount ReactJS-specific event: https://www.telerik.com/kendo-react-ui/components/editor/plugins/#popup-tools
More on plugins for ProseMirror: https://prosemirror.net/docs/ref/version/0.20.0.html#state.Plugin_System
The TreeView exposes drag events that allow me to detect when the user drags an item and to get the information for the dragged item. I want to be able to drag that item outside of the TreeView and drop it in my custom target.
I am aware that I should handle the custom drop functionality. However, the @ondrop event of my custom target currently does not fire for the tree item: https://blazorrepl.telerik.com/QIblPZvd0412k6U128.
The bug is reproducible only when the TimePicker is bound to a nullable type (be that DateTime or TimeOnly). In this case, selecting time from the popup includes seconds in the value - the seconds from the time of selection. When typing in the input, seconds are always 00.
The issue is that the user is not aware of the seconds' value and cannot change it. This may lead to a variety of problems - e.g. filtering by time in Grid: https://blazorrepl.telerik.com/cebaGNlH53mOoiaA12.
Cases:
<Admin>
<script suppress-error="BL9992">
window.navigateToHref = (ev) => {
if (ev.key === "Enter") {
location.href = ev.target.href
}
};
</script>
@* This example shows how to create header and footer for the Drawer and select an item manually. *@
<TelerikDrawer @bind-Expanded="@DrawerExpanded"
Data="@Data"
MiniMode="true"
Mode="@DrawerMode.Push"
@bind-SelectedItem="@SelectedItem"
@ref="@DrawerRef">
<Template>
@* the header *@
<div>
<TelerikButton OnClick="@(() => DrawerRef.ToggleAsync())" Icon="@FontIcon.Menu" />
@if (DrawerExpanded)
{
<div class="text-info" style="border-bottom:solid; font-weight: bold; margin-bottom: 3em; white-space:nowrap">
<a href="https://google.com" onkeydown="navigateToHref(event)">
My Custom Navigation to Google
</a>
</div>
}
else
{
<div class="text-info" style="border-bottom:solid; font-weight: bold;">
Nav
</div>
}
</div>
@* custom items rendering and item selection *@
<div class="k-drawer-items">
<ul>
@if (SelectedItem != null && DrawerExpanded)
{
<li class="k-drawer-item" style="white-space:nowrap">
<div>
<p><strong>@SelectedItem.Text</strong></p>
<p>@SelectedItem.Description</p>
</div>
</li>
}
@foreach (var item in Data)
{
@* Use onclick to handle manual item selection *@
<li @onclick="@(() => SelectedItem = item)"
class="k-drawer-item @GetSelectedItemClass(item)" style="white-space:nowrap">
<TelerikFontIcon Icon="@item.Icon"></TelerikFontIcon>
@if (DrawerExpanded)
{
<div>
<div>@item.Text</div>
</div>
}
</li>
}
</ul>
</div>
@* the footer *@
@if (DrawerExpanded)
{
<div style="text-align: center; margin-top: 3em; padding-top: 2em; border-top: 2px solid black; white-space:nowrap">
<img src="user-avatar.png" alt="my avatar" style="border-radius: 50%; width: 50px; height: 50px;" />
<br /><br />
<TelerikButton Icon="@FontIcon.Logout" ThemeColor="primary">Log Out</TelerikButton>
</div>
}
</Template>
<DrawerContent>
<div class="m-5">Content for @SelectedItem?.Text - @SelectedItem?.Description</div>
</DrawerContent>
</TelerikDrawer>
@code {
public TelerikDrawer<DrawerItem> DrawerRef { get; set; }
public DrawerItem SelectedItem { get; set; }
public bool DrawerExpanded { get; set; } = true;
public IEnumerable<DrawerItem> Data { get; set; } = new List<DrawerItem>
{
new DrawerItem {Text = "Shopping Cart", Icon = FontIcon.Cart, Description = "Items in shopping cart"},
new DrawerItem {Text = "Settings", Icon = FontIcon.Gear, Description = "My profile settings"},
new DrawerItem {Text = "Notifications", Icon = FontIcon.ExclamationCircle, Description = "My profile notifications"},
new DrawerItem {Text = "Calendar", Icon = FontIcon.Calendar, Description = "My events"},
};
public string GetSelectedItemClass(DrawerItem item)
{
if (SelectedItem == null) return string.Empty;
return SelectedItem.Text.ToLowerInvariant().Equals(item.Text.ToLowerInvariant()) ? "text-info" : "";
}
public class DrawerItem
{
public string Text { get; set; }
public FontIcon? Icon { get; set; }
public string Description { get; set; }
}
}
</Admin>
Hello,
I expect Shift + Ins to behave like a standard paste (Ctrl + V), but instead, it behaves like a plain text paste (Ctrl + Shift+ V).
===
Telerik edit: This was a ProseMirror issue, which was fixed on their side. Changes took effect in Telerik UI for Blazor 5.0.0.
When the anchor element is changed, the Popover remains on the old one.
When the Tooltip TargetSelector is button[title] and you change the Calendar's view mode, the Tooltip text remains the initial one. Steps to reproduce:
https://blazorrepl.telerik.com/cIvORFuC16Zgi9yP55
Now the navigation button text is 2024 and the Tooltip should display Choose an year, but instead, it displays Choose a month. If you change the view again the button text is 2020-2029 and the Tooltip text remains Choose a month, when it should display Choose a decade.
===ADMIN EDIT===
In the meantime, the workaround is to keep using one Tooltip for the whole application and have another one that targets only the navigation button in the Calendar. Here is an example: https://blazorrepl.telerik.com/GobanlEC46JfsnNk08
Pressing Shift+Tab initially when the Window is opened, moves the focus from the Window back to the Button that opens it.
Steps To Reproduce:
Is there a way to customize the resource grouping's header (i.e. Alex, Bob, Charlie)? I understand it displays the text from the Resource, but I would like to be able to customize the HTML displayed so that I can add a tooltip. Would you have a suggestion as to how I can accomplish this?