### Bug report
When using the @Html.EditorFor(m => m) configuration to initialize a MultiSelect TagHelper editor, and passing a specified value for its "id" attribute, the "name" attribute of the <select> element contains a prefix.
### Reproduction of the problem
1. Set the MultiSelect TagHelper as an editor editor of a specified Model property and set the "id" attribute using ViewData:
//Model
[UIHint("CustomMultiSelect")]
public IEnumerable<string> Names { get; set; }
//~.Views/Shared/EditorTemplates/CustomMultiSelect.cshtml
@model IEnumerable<string>
@{
var id = ViewData["id"]?.ToString();
}
<kendo-multiselect for="@Model" placeholder="some custom behavior" bind-to='ViewData["Data"] as List<string>' id='@id'></kendo-multiselect>
2. Define @Html.EditorFor(a=>a.Names, new{id="customId"}) in a form:
@model MyModel
<form id="myForm" data-method="POST" asp-action="Save" asp-controller="Home" class="k-form k-form-md">
<div class="k-form-layout k-d-grid">
<div class="k-form-field">
@Html.EditorFor(a=>a.Names, new{id="customId"})
</div>
</div>
...
</form>
3. When the MultiSelect is loaded, its "name" attribute is "Names.Names" rather than "Names":
When using the HtmlHelper version of the MultiSelect, the "name" attribute is correct:
//~.Views/Shared/EditorTemplates/CustomMultiSelect.cshtml
@model IEnumerable<string>
@{
var id = ViewData["id"]?.ToString();
}
@(Html.Kendo().MultiSelectFor(m => m)
.Placeholder("some custom behavior")
.BindTo((List<string>)ViewData["Data"])
.HtmlAttributes(new { id = @id })
)
### Expected/desired behavior
When using the @Html.EditorFor(m => m) configuration, the "name" attribute of the MultiSelect TagHelper must match the Model property name when the "id" attribute is set to a custom value.
### Environment
* **Telerik UI for ASP.NET Core version: 2024.3.806
* **Browser: [all]
### Bug report
The attributes set through the "HtmlAttributes", "ContentHtmlAttributes", and "LinkHtmlAttributes"methods are not applied to the TreeView items.
### Reproduction of the problem
1. Create a TreeView and set attributes by using the "HtmlAttributes", "ContentHtmlAttributes", "LinkHtmlAttributes"methods:
@(Html.Kendo().TreeView()
.Name("treeview-kendo2")
.Items(treeview =>
{
treeview.Add().Text("My Documents")
.SpriteCssClasses("k-icon k-i-globe")
.Expanded(true)
.Url("/")
.HtmlAttributes(new { @class = "fairydust1" })
.ContentHtmlAttributes(new { data_navigate = "navigate_content", @class = "trigger", title = "content_title" })
.LinkHtmlAttributes(new { data_navigate = "navigate_link", @class = "trigger", title = "content_link" });
})
)
2. Run the page and inspect the TreeView item.
### Expected/desired behavior
The attributes are serialized and rendered.
### Environment
* **Kendo UI version: 2021.2.616
* **jQuery version: 1.12.4
* **Browser: [all]
### Bug report
When adding custom attributes to the CheckBox Taghelper, they are not added to the input element.
### Reproduction of the problem
1. Define a CheckBox Taghelper and add 'data-bind="checked: Test"' to its tag:
<kendo-checkbox name="Name" data-bind="checked: Test"></kendo-checkbox>
2. Inspect the CheckBox element and you will see that the "data-bind" attribute is missing.
3. When using the HtmlHelper version of the CheckBox, the attributes added through the HtmlAttributes() option are added as expected.
A REPL sample for reproduction: https://netcorerepl.telerik.com/mIuZlRle01kh6Ly043
### Expected/desired behavior
The specified attributes must be added to the input element of the CheckBox Taghelper.
### Environment
* **Telerik UI for ASP.NET Core version: 2024.2.514
* **Browser: [all]
Open this dojo example: https://dojo.telerik.com/BzNkZgSf
The input tooltip shows:
k-editor-link-url
because the input's title attribute is set like this: title="k-editor-link-url"
Instead of the name of a class, the tooltip should show "Web address", "Text", or "ToolTip" respectively.
The custom ordering of the filter values in the Telerik UI ASP.NET Core Grid does not function correctly when using TagHelpers.
A REPL sample for reproduction: https://netcorerepl.telerik.com/wIYNvEvn00CAqNGL14
The filter values should be presented in the same order as specified in the Filterable configuration.
### Bug report
On mobile devices, when the TaskBoard columns are filled with cards, the users have trouble scrolling horizontally through the columns. When they attempt to scroll the screen, they accidentally drag cards instead of scrolling the columns. This makes navigation in the TaskBoard quite difficult, particularly for projects with a large number of cards.
### Reproduction of the problem
1. Create a TaskBoard with at least two columns.
2. Fill the columns with cards.
3. Open the browser DevTools and switch to mobile view. Tap a card to scroll the columns horizontally or tap at the bottom of the TaskBoard to activate the horizontal scrollbar.
4. The last card is accidentally dragged.
A Dojo sample for reproduction: https://dojo.telerik.com/izASODan
### Expected/desired behavior
When the user makes a hold/long press/long tap, show the "indicator for drag and drop" and then he/she continues with the gesture by moving the card to the desired column and lift the finger. This way, the accidental dragging will be prevented. For more information, refer to the GitHub issue.
Note: The cards in the TileLayout can be dragged only through the card's title element. The TaskBoard cards can be dragged through the card's body, as well.
### Environment
* **Kendo UI version: 2024.3.806
* **jQuery version: 3.7.0
* **Browser: [all]
REPL to reproduce the problem following the steps below: https://netcorerepl.telerik.com/wSYNlmbA55iBcMhu20
Steps to reproduce
Type "wil" to get suggestions:
Hit tab to accept the first suggestion.
Click the arrow to display the list of options:
Observe the list of unrelated options, and the textbox now containing the value of the first option listed:
Additional information
The "normal" read request sends what is ultimately handled as a DataSourceRequest object in the controller that includes (among other things) information on how the data should be sorted. The "value mapper" request, on the other hand, sends only the raw values that need to be mapped (without any information on how they are being sorted by the DataSource). As a result, the positional index returned to the value mapper is incorrect if/when the data is sorted differently.
For example, the "normal" read request calls the controller action, it retrieves data [A, C, D, B], and the DataSourceRequest is applied to sort it as [A, B, C, D] and this is how it's displayed in the dropdown list. If the value "B" needs to be mapped, the "value mapper" request calls a similar (but different) controller action, it retrieves the same set of data [A, C, D, B] but does not make any attempt to sort it, finds "B" in the list (#4), and this is returned to the component (which then sets the dropdown's selectedIndex = 4, but in the dropdown's sorted list of data, this corresponds with the value "D", not "B" [which would be 2]).
### Bug report
The label configuration is not available for the plotband when using the TagHelper version of the Bar Chart.
### Reproduction of the problem
1. Open the following REPL sample: https://netcorerepl.telerik.com/woEMFDll17ui7F4122
2. The label of the plotband is not available.
3. The label option is available when defining the Chart by using HtmlHelpers: https://netcorerepl.telerik.com/QSYMvNFP187x0nAl24
### Expected/desired behavior
The plotband must have a label option.
### Environment
* **Telerik UI for ASP.NET Core version: 2024.3.806
* **Browser: [all]
Grid Hidden Column is set as exportable by default for Pdf and Excel
The Grid Hidden Column should be set as exportable by default for Pdf and Excel.
The Grid Hidden Column should not be set as exportable by default for Pdf and Excel.
The issue is reproducible when the TimePicker's dates configuration is set and its min() API method is called. Afterwards, if the user select a time, the component shows the wrong time (2h earlier) as selected.
The TimePicker shows a selected value that is 2h earlier than the actual time the user has selected.
The time the user selects is shown as selected value.
Toolbar.Items.Group.CustomTool() API of the Scheduler produces an invalid configuration.
To give more context, the Toolbar's buttonGroup items do not expose, nor should they expose a template
configuration. The currently available options advocate that each of the buttons must apply options similar to that of the ToggleButton.
Thus, making the wrapper configuration not applicable. The following dojo verifies this - https://dojo.telerik.com/@alexander64836/ayedUsAh
Toolbar.Custom.Items.Group.CustomTool() API configuration of the Scheduler produces an invalid configuration which is not serialized accordingly.
Toolbar.Items.Group API configuration of the Scheduler should expose a CustomTool() API configuration for the ButtonGroups.
The current workaround would be to declare the CustomTool via the Toolbar.Custom.Items.CustomTool() API configuration. And a ButtonGroup via the Template component:
@(Html.Kendo().Scheduler<Kendo.Mvc.Examples.Models.Scheduler.TaskViewModel>()
.Name("scheduler")
...
.Toolbar(t => t.Custom(c =>
c.Items(itm => {
itm.CustomTool(Html.Kendo().Template().AddComponent(c => c
.ButtonGroup()
.Name("select-period")
.Items(t =>
{
t.Add().Text(string.Empty).Icon("chevron-up");
t.Add().Text(string.Empty).Icon("chevron-down");
})
));
})
)
)
)
The following Telerik REPL illustrates this approach.
When the Grid is nested in a relatively positioned container, during the export the Grid gets an overflow style to its wrapping element. Then the style is removed and re-added again. This happens in a loop, which results in a vertical scrollbar constantly appearing and hiding.
Flickering caused by a scrollbar appearing and hiding
The Grid should remain unchanged during the export and no scrollbar should appear and hide during the export.
### Bug report
When the TimePicker's type is "modern", the "min" and "max" options cannot be set dynamically through the min(), max(), and setOptions() methods.
### Reproduction of the problem
1. Define the TimePicker with componentType: "modern".
2. Set its "min" and "max" values through the min() and max() options.
3. The "min" and "max" values are not visually updated.
A Dojo sample for reproduction: https://dojo.telerik.com/OXAqUYiw
### Expected/desired behavior
The "min" and "max" values must be dynamically updated when the TimePicker's type is "modern".
### Workaround
let timeView = $("#timepicker").data("kendoTimePicker").timeView;
timeView.options.specifiedRange = true;
timeView.options.min = new Date(2024, 0, 1, 9, 00, 00);
timeView.options.max = new Date(2024, 0, 1, 22, 00, 00);
timeView._updateRanges();
### Bug report
When the Grid is grouped by a specified column, and this column has a "groupFooterTemplate" that contains aggregates from other fields, it cannot be exported to Excel. It throws a JavaScript exception.
### Reproduction of the problem
1) Group the Grid by the column "ProductName".
2) Export it to Excel through the built-in command "Export to Excel".
3) JS exception is thrown.
A Dojo sample for reproduction: https://dojo.telerik.com/UyUruyOZ
### Expected/desired behavior
The Excel export should work as expected when the Grid is grouped.
### Environment
* **Kendo UI version: 2022.2.802
* **jQuery version: 1.12.4
* **Browser: [all]
When a Grid's row is reordered and then the changes are saved - a Destroy request is sent to the server for the dataItem of the reordered row. This happens even though no changes are applied to dataItem of the reordered row.
The Grid should request the reordered item to be perished from the backend.
Note: I already opened issue #7910 in the kendo-ui-core repo for this but wasn't sure if I should report this through the Feedback Portal.
The TextArea TagHelper does not render the "maxlength" attribute when set via data annotations.
Note: this is essentially the same issue from #6884 but applies to the TextArea helper (and not the TextBox helper), so perhaps the fix for that issue just needs to be applied to the TextArea helper (it's always that easy, right? 😉).
Given the following model property:
[StringLength(500)]
[DisplayName("Example")]
public string Example { get; set; }
The Kendo TextArea helper:
<kendo-textarea for="Example" rows="3"></kendo-textarea>
...generates code without the "maxlength" attribute:
<textarea
data-val="true"
data-val-length="The field Example must be a string with a maximum length of 500."
data-val-length-max="500"
id="Example"
name="Example"
data-role="textarea"
aria-disabled="false"
rows="3"
class="!k-overflow-auto !k-flex-none k-input-inner"
autocomplete="off">
</textarea>
The default ASP.NET Core TextArea helper:
<textarea asp-for="Example" rows="3"></textarea>
...generates code with the "maxlength" attribute:
<textarea
rows="3"
data-val="true"
data-val-length="The field Example must be a string with a maximum length of 500."
data-val-length-max="500"
id="Example"
maxlength="500"
name="Example">
</textarea>
The Kendo helper should generate the "maxlength" attribute like the built-in helper.
Expose additional API configurations for the Grid's ToolBar
As of recent releases, the Kendo UI Grid Toolbar has been substituted with the Kendo UI Toolbar. This change allows users to add the majority ToolBar.items API options apart from the built-in tools.
As noted within the Kendo UI for jQuery API documentation for the Grid's Toolbar:
"Apart from the built-in tools, the Grid fully exposes the ToolBar.items API. This way you can specify any custom tools in the widget using the components available in the ToolBar itself."
The inherited ToolBar.items API options are not available for the server-side Telerik UI Grid for ASP.NET Core and MVC wrappers as well.
It would be beneficial to the customers if the inherited ToolBar.items API options are available for the server-side Telerik UI Grid for ASP.NET Core and MVC wrappers as well.
### Bug report
The ExpandAll() option does not expand or collapse the TreeView nodes.
### Reproduction of the problem
1. Enable or disable the ExpandAll() option.
2. The nodes are not expanded/collapsed when the TreeView is initialized.
A REPL sample for reproduction: https://netcorerepl.telerik.com/mSuMEPkZ10ZA6l8P00
### Expected/desired behavior
All nodes must be initially expanded when ExpandAll(true) is set.
### Environment
* **Telerik UI for ASP.NET Core version: 2024.2.514
* **Browser: [all]