Skip to content

Commit 607c2fa

Browse files
committed
Sync with Kendo UI Professional
1 parent 967704d commit 607c2fa

File tree

7 files changed

+204
-34
lines changed

7 files changed

+204
-34
lines changed

docs-aspnet/ai/mcp-server.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ To enable the Telerik MCP Servers in a specific {{ site.framework }} app, add a
8282
"command": "npx",
8383
"args": [ "-y", "@progress/telerik-aspnetcore-tag-mcp@latest" ],
8484
"env": {
85-
"TELERIK_LICENSE_PATH": "C:\\Users\\lukanova\\AppData\\Roaming\\Telerik\\telerik-license.txt"
85+
"TELERIK_LICENSE_PATH": "C:\\Users\\___\\AppData\\Roaming\\Telerik\\telerik-license.txt"
8686
}
8787
}
8888
}
@@ -138,7 +138,7 @@ To enable the Telerik MCP Servers in a specific [workspace](https://code.visuals
138138
"command": "npx",
139139
"args": [ "-y", "@progress/telerik-aspnetcore-tag-mcp@latest" ],
140140
"env": {
141-
"TELERIK_LICENSE_PATH": "C:\\Users\\lukanova\\AppData\\Roaming\\Telerik\\telerik-license.txt"
141+
"TELERIK_LICENSE_PATH": "C:\\Users\\___\\AppData\\Roaming\\Telerik\\telerik-license.txt"
142142
}
143143
}
144144
}
@@ -203,7 +203,7 @@ To enable the Telerik MCP servers in [a specific workspace](https://docs.cursor.
203203
"command": "npx",
204204
"args": [ "-y", "@progress/telerik-aspnetcore-tag-mcp@latest" ],
205205
"env": {
206-
"TELERIK_LICENSE_PATH": "C:\\Users\\lukanova\\AppData\\Roaming\\Telerik\\telerik-license.txt"
206+
"TELERIK_LICENSE_PATH": "C:\\Users\\___\\AppData\\Roaming\\Telerik\\telerik-license.txt"
207207
}
208208
}
209209
}

docs-aspnet/html-helpers/conversational-ui/chat/accessibility/overview.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,10 @@ To test the Chat component, refer to the [Chat Accessibility Demo](https://demos
105105

106106
## Keyboard Navigation
107107

108-
For details on how the Chat keyboard navigation works, refer to the [Accessibility Overview]({%slug overview_accessibility%}#keyboard-navigation) article.
108+
For details on how the Chat keyboard navigation works, refer to the [Chat Keyboard Navigation]({%slug keynav_aspnetcore_chat%}) article.
109109

110110
## See Also
111111

112+
* [Keyboard Navigation by the Chat for {{ site.framework }} (Demo)](https://demos.telerik.com/{{ site.platform }}/chat/keyboard-navigation)
113+
* [Keyboard Navigation by the Chat for {{ site.framework }}]({% slug keynav_aspnetcore_chat %})
112114
* [Accessibility in {{ site.product }}]({%slug overview_accessibility%})

docs-aspnet/html-helpers/conversational-ui/chat/ai-integration.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ position: 3
1010

1111
Integrating AI services with the {{ site.product }} Chat component transforms a simple messaging interface into an intelligent conversational experience. Such integration allows you to create applications that can understand natural language, provide contextual responses, and deliver real-time AI-powered assistance to users.
1212

13-
By leveraging streaming responses, the available client-side Chat events and methods, and its built-in UI components, such as [SpeechToTextButton](slug:htmlhelpers_overview_speechtotextbutton), message actions, and tools, you can implement robust AI integrations with minimal custom infrastructure.
14-
1513
In this article, you will build a practical, end-to-end example that demonstrates how to wire the Chat component to a lightweight AI chat client. This implementation covers opening a chat session, sending messages or quick replies, and streaming the AI model's response into the chat conversation.
1614

1715
## Getting Started

docs-aspnet/html-helpers/conversational-ui/chat/binding/razor-page.md

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ To connect the Chat to a data set retrieved from a remote endpoint in a Razor Pa
3535
.FilesField("Files")
3636
.AuthorIdField("AuthorId")
3737
.AuthorImageUrlField("AuthorImageUrl")
38-
.AuthorImageAltTextField("AuthorImageAltTextField")
38+
.AuthorImageAltTextField("AuthorImageAltText")
3939
.TimestampField("TimeStamp")
4040
.IdField("Id")
4141
.IsPinnedField("IsPinned")
@@ -47,6 +47,7 @@ To connect the Chat to a data set retrieved from a remote endpoint in a Razor Pa
4747
.Create(r => r.Url("/Index?handler=CreateMessage").Data("forgeryToken"))
4848
.Update(r => r.Url("/Index?handler=UpdateMessage").Data("forgeryToken"))
4949
)
50+
.Events(events => events.SendMessage("onSendMessage"))
5051
)
5152
```
5253
```TagHelper
@@ -62,7 +63,7 @@ To connect the Chat to a data set retrieved from a remote endpoint in a Razor Pa
6263
files-field="Files"
6364
author-id-field="AuthorId"
6465
author-image-url-field="AuthorImageUrl"
65-
author-image-alt-text-field="AuthorImageAltTextField"
66+
author-image-alt-text-field="AuthorImageAltText"
6667
timestamp-field="TimeStamp"
6768
id-field="Id"
6869
is-pinned-field="IsPinned"
@@ -78,6 +79,27 @@ To connect the Chat to a data set retrieved from a remote endpoint in a Razor Pa
7879
</datasource>
7980
</kendo-chat>
8081
```
82+
```JS Scripts
83+
<script>
84+
function onSendMessage(e) {
85+
const currentUser = {
86+
id: 1,
87+
name: "John Doe",
88+
iconUrl: "https://demos.telerik.com/aspnet-core/shared/web/Customers/RICSU.jpg",
89+
iconAltText: "John's profile picture"
90+
};
91+
92+
e.message.authorId = currentUser.id;
93+
e.message.authorName = currentUser.name;
94+
e.message.authorImageUrl = currentUser.iconUrl;
95+
e.message.authorImageAltText = currentUser.iconAltText;
96+
97+
setTimeout(() => {
98+
e.sender.scrollToBottom();
99+
}, 30);
100+
}
101+
</script>
102+
```
81103
82104
1. Add an `AntiForgeryToken` at the top of the page.
83105
@@ -159,13 +181,51 @@ To connect the Chat to a data set retrieved from a remote endpoint in a Razor Pa
159181
{
160182
message.Id = Guid.NewGuid().ToString();
161183
// Set the Message ID explicitly and perform a custom create operation to the database.
162-
return new JsonResult(new[] { message }.ToDataSourceResult(request));
184+
var messageObject = new {
185+
Id = message.Id,
186+
AuthorId = message.AuthorId,
187+
AuthorName = message.AuthorName,
188+
AuthorImageUrl = message.AuthorImageUrl,
189+
AuthorImageAltText = message.AuthorImageAltText,
190+
Text = message.Text,
191+
TimeStamp = message.TimeStamp,
192+
IsDeleted = message.IsDeleted,
193+
IsPinned = message.IsPinned,
194+
IsTyping = message.IsTyping,
195+
Files = message.Files?.Select(file => new
196+
{
197+
extension = file.Extension,
198+
size = file.Size,
199+
type = file.Type,
200+
name = file.Name
201+
}).ToList() ?? []
202+
};
203+
return new JsonResult(new[] { messageObject }.ToDataSourceResult(request));
163204
}
164205
165206
public JsonResult OnPostUpdateMessage([DataSourceRequest] DataSourceRequest request, ChatMessage message)
166207
{
167208
// Perform a custom update operation to the existing database.
168-
return new JsonResult(new[] { message }.ToDataSourceResult(request));
209+
var messageObject = new {
210+
Id = message.Id,
211+
AuthorId = message.AuthorId,
212+
AuthorName = message.AuthorName,
213+
AuthorImageUrl = message.AuthorImageUrl,
214+
AuthorImageAltText = message.AuthorImageAltText,
215+
Text = message.Text,
216+
TimeStamp = message.TimeStamp,
217+
IsDeleted = message.IsDeleted,
218+
IsPinned = message.IsPinned,
219+
IsTyping = message.IsTyping,
220+
Files = message.Files?.Select(file => new
221+
{
222+
extension = file.Extension,
223+
size = file.Size,
224+
type = file.Type,
225+
name = file.Name
226+
}).ToList() ?? []
227+
};
228+
return new JsonResult(new[] { messageObject }.ToDataSourceResult(request));
169229
}
170230
171231
private static List<ChatMessage> GetData()

docs-aspnet/html-helpers/conversational-ui/chat/suggestions.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ You can customize the appearance of the defined suggestions by using the `Sugges
118118

119119
The option has various overloads like `SuggestionsTemplateHandler()`, `SuggestionsTemplateId()`, and `SuggestionsTemplate()` that accepts a [Template component](slug:htmlhelpers_overview_template).
120120

121+
> The `k-suggestions` class must be applied to the individual suggestion element. The wrapping element must have the `ref-chat-suggestion-group` attribute.
122+
121123
The following example demonstrates how to customize the default appearance of the suggestion messages.
122124

123125
```HtmlHelper
@@ -246,10 +248,12 @@ Suggested actions automatically trigger the `SendMessage` client-side event when
246248

247249
### Customizing Suggested Actions
248250

249-
You can customize the appearance of suggested actions using the `SuggestedActionsTemplate()` option that accepts a [Template component](slug:htmlhelpers_overview_template). The `k-suggestions` class must be applied to the individual suggestion element. The wrapping element must have the `ref-chat-suggestion-group` attribute.
251+
You can customize the appearance of suggested actions using the `SuggestedActionsTemplate()` option that accepts a [Template component](slug:htmlhelpers_overview_template).
250252

251253
The template option provides overloads like `SuggestedActionsTemplateHandler()` and `SuggestedActionsTemplateId()`.
252254

255+
> The `k-suggestions` class must be applied to the individual suggestion element. The wrapping element must have the `ref-chat-suggestion-group` attribute.
256+
253257
The following example demonstrates how to customize the default appearance of the suggested actions.
254258

255259
```HtmlHelper

docs-aspnet/html-helpers/data-management/grid/binding/razor-page.md

Lines changed: 48 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ To configure the CRUD operations of the Grid DataSource within a Razor Pages app
4444
column.Destroy();
4545
}).Width(230);
4646
})
47+
.HtmlAttributes(new { style = "height:430px;" })
4748
.DataSource(ds => ds
4849
.Ajax()
4950
.Read(r => r.Url("/Index?handler=Read").Data("forgeryToken"))
@@ -60,7 +61,7 @@ To configure the CRUD operations of the Grid DataSource within a Razor Pages app
6061
@model IndexModel
6162
@using Kendo.Mvc.UI
6263
63-
<kendo-grid name="grid">
64+
<kendo-grid name="grid" height="430">
6465
<datasource type="DataSourceTagHelperType.Ajax" page-size="10">
6566
<schema data="Data" errors="Errors" total="Total">
6667
<model id="OrderID">
@@ -226,29 +227,53 @@ To bind the Grid to a property from the `PageModel`, follow the next steps:
226227
1. Bind the Grid to the collection property and disable the server data operations (`ServerOperations(false)`).
227228
228229
```HtmlHelper
229-
@page
230-
@model IndexModel
231-
@using Kendo.Mvc.UI
232-
233-
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
234-
@Html.AntiForgeryToken()
235-
236-
@(Html.Kendo().Grid<OrderViewModel>(Model.orders)
237-
.Name("grid")
238-
.Scrollable()
239-
.Pageable()
240-
.Columns(columns =>
241-
{
242-
columns.Bound(column => column.Freight);
243-
columns.Bound(column => column.ShipName);
244-
columns.Bound(column => column.ShipCity);
245-
})
246-
.DataSource(ds => ds
247-
.Ajax()
248-
.PageSize(20)
249-
.ServerOperation(false)
250-
)
230+
@page
231+
@model IndexModel
232+
@using Kendo.Mvc.UI
233+
234+
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
235+
@Html.AntiForgeryToken()
236+
237+
@(Html.Kendo().Grid<OrderViewModel>(Model.orders)
238+
.Name("grid")
239+
.Scrollable()
240+
.Pageable()
241+
.Columns(columns =>
242+
{
243+
columns.Bound(column => column.Freight);
244+
columns.Bound(column => column.ShipName);
245+
columns.Bound(column => column.ShipCity);
246+
})
247+
.HtmlAttributes(new { style = "height:430px;" })
248+
.DataSource(ds => ds
249+
.Ajax()
250+
.PageSize(20)
251+
.ServerOperation(false)
251252
)
253+
)
254+
```
255+
```TagHelper
256+
@page
257+
@model IndexModel
258+
@using Kendo.Mvc.UI
259+
260+
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
261+
@Html.AntiForgeryToken()
262+
263+
<kendo-grid name="grid" height="430">
264+
<datasource type="DataSourceTagHelperType.Ajax"
265+
page-size="20"
266+
server-operation="false"
267+
data="@Model.orders">
268+
</datasource>
269+
<columns>
270+
<column field="Freight"/>
271+
<column field="ShipName"/>
272+
<column field="ShipCity"/>
273+
</columns>
274+
<pageable enabled="true"/>
275+
<scrollable enabled="true"/>
276+
</kendo-grid>
252277
```
253278
254279
## See Also
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
title: Reversing Numbers on a Vertical Slider in Kendo UI for jQuery
3+
description: Learn how to reverse the direction of numbers on a vertical slider using Kendo UI for jQuery.
4+
type: how-to
5+
page_title: How to Reverse Numbers on a Kendo UI for jQuery Vertical Slider
6+
meta_title: How to Reverse Numbers on a Kendo UI for jQuery Vertical Slider
7+
slug: reverse-numbers-kendo-ui-jquery-slider
8+
tags: kendo-ui-for-jquery, slider, vertical-slider, value-mapping
9+
res_type: kb
10+
ticketid: 1695653
11+
---
12+
13+
## Environment
14+
<table>
15+
<tbody>
16+
<tr>
17+
<td> Product </td>
18+
<td> Kendo UI for jQuery Slider </td>
19+
</tr>
20+
<tr>
21+
<td> Version </td>
22+
<td> 2025.2.720 </td>
23+
</tr>
24+
</tbody>
25+
</table>
26+
27+
## Description
28+
29+
I need to reverse the direction of numbers on a vertical slider in Kendo UI for jQuery. By default, the minimum value is at the bottom and the maximum is at the top. I want 0 at the top and 20 at the bottom.
30+
31+
This knowledge base article also answers the following questions:
32+
- How can I invert the values on a vertical slider?
33+
- How to customize the value direction of a vertical slider in Kendo UI for jQuery?
34+
- How do I set 0 at the top and 20 at the bottom in a vertical slider?
35+
36+
## Solution
37+
38+
To reverse the direction of numbers on a vertical slider, map the slider's values in your code. Follow these steps:
39+
40+
1. Set the slider's `min` to 0 and `max` to 20 as usual.
41+
2. Invert the value in the slider event handlers (`slide` and `change`) so that moving the handle up results in a lower value.
42+
43+
### Code Example
44+
45+
```html
46+
<div id="slider"></div>
47+
<span id="sliderValue"></span>
48+
49+
<script>
50+
$(document).ready(function() {
51+
var min = 0;
52+
var max = 20;
53+
54+
$("#slider").kendoSlider({
55+
orientation: "vertical",
56+
min: min,
57+
max: max,
58+
value: max, // Start at the "bottom" (which will show as the top)
59+
slide: function(e) {
60+
// Invert the value
61+
var invertedValue = max - (e.value - min);
62+
$("#sliderValue").text(invertedValue);
63+
},
64+
change: function(e) {
65+
var invertedValue = max - (e.value - min);
66+
$("#sliderValue").text(invertedValue);
67+
}
68+
});
69+
});
70+
</script>
71+
```
72+
73+
### Key Notes
74+
75+
- This approach inverts the value displayed to users, ensuring 0 appears at the top and 20 at the bottom.
76+
- Customize tooltips or labels for consistency in the user interface.
77+
- Tick marks and labels will still show the default progression unless custom rendering is implemented.
78+
79+
## See Also
80+
81+
- [Kendo UI for jQuery Slider](https://docs.telerik.com/kendo-ui/controls/editors/slider/overview)

0 commit comments

Comments
 (0)