@@ -46,57 +46,46 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
4646``` razor
4747@inject IJSRuntime JS
4848
49- <script suppress-error="BL9992">
50- window.isTextOverflowing = () => {
51- const el = document.querySelector('.example-cb .k-input-inner');
52- if (!el) {
53- return;
54- }
55-
56- return el.scrollWidth > el.clientWidth;
57- };
58- </script>
59-
6049@if (SelectedHobbyId != 0)
6150{
62- <TelerikTooltip TargetSelector="#products-multiselect[title]"/>
51+ <TelerikTooltip TargetSelector="#products-multiselect[title]" />
6352}
6453
6554@{
66- <span
67- id="@(IsCurrentOverflowing ? "products-multiselect" : "products-multiselect-none")"
68- @onmouseenter="OnMouseEnter"
69- title="@CurrentHobbyName">
55+ <span id="@(IsCurrentOverflowing ? "products-multiselect" : "products-multiselect-none")"
56+ @onmouseenter="OnMouseEnter"
57+ title="@CurrentHobbyName">
7058 <TelerikComboBox @bind-Value="@SelectedHobbyId"
71- Data="@Hobbies"
72- Placeholder="Select your favourite sport..."
73- TextField="@nameof(HobbiesDto.HobbyName)"
74- ValueField="@nameof(HobbiesDto.HobbyId)"
75- Filterable="true"
76- Width="20%"
77- Class="example-cb">
59+ Data="@Hobbies"
60+ Placeholder="Select your favourite sport..."
61+ TextField="@nameof(HobbiesDto.HobbyName)"
62+ ValueField="@nameof(HobbiesDto.HobbyId)"
63+ Filterable="true"
64+ Width="20%"
65+ Class="example-cb">
7866 </TelerikComboBox>
7967 </span>
8068}
8169
82- @code {
83- public int SelectedHobbyId { get; set; }
70+ @* suppress-error allows script tags inside Razor components.
71+ Move the script to an external file in production apps. *@
72+ <script suppress-error="BL9992">
73+ window.isTextOverflowing = () => {
74+ const el = document.querySelector('.example-cb .k-input-inner');
75+ if (!el) {
76+ return;
77+ }
78+
79+ return el.scrollWidth > el.clientWidth;
80+ };
81+ </script>
8482
83+ @code {
84+ private int SelectedHobbyId { get; set; }
8585 private bool IsCurrentOverflowing { get; set; } = false;
8686 private string CurrentHobbyName => FindCurrentHobby()?.HobbyName;
8787
88- private async Task OnMouseEnter() {
89- @if (SelectedHobbyId != 0) {
90- IsCurrentOverflowing = await JS.InvokeAsync<bool>("isTextOverflowing");
91- }
92- }
93-
94- public HobbiesDto? FindCurrentHobby()
95- {
96- return Hobbies.FirstOrDefault(x => x.HobbyId == SelectedHobbyId);
97- }
98-
99- public IEnumerable<HobbiesDto> Hobbies { get; set; } = new List<HobbiesDto>()
88+ private IEnumerable<HobbiesDto> Hobbies { get; set; } = new List<HobbiesDto>()
10089 {
10190 new HobbiesDto(1, "This is a test for a very very very very long sentance."),
10291 new HobbiesDto(2, "This is some long test sentance."),
@@ -106,6 +95,19 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
10695 new HobbiesDto(6, "Football"),
10796 };
10897
98+ private async Task OnMouseEnter()
99+ {
100+ @if (SelectedHobbyId != 0)
101+ {
102+ IsCurrentOverflowing = await JS.InvokeAsync<bool>("isTextOverflowing");
103+ }
104+ }
105+
106+ private HobbiesDto? FindCurrentHobby()
107+ {
108+ return Hobbies.FirstOrDefault(x => x.HobbyId == SelectedHobbyId);
109+ }
110+
109111 public class HobbiesDto
110112 {
111113 public HobbiesDto(int id, string name)
@@ -122,25 +124,14 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
122124
123125### MultiSelect Implementation
124126
125- 1 . Use the ` TagTemplate ` to customize the display of tags in the MultiSelect.
127+ 1 . Use the [ ` TagTemplate ` ] ( slug:multiselect-templates#tag-template ) to customize the display of tags in the MultiSelect.
1261282 . Use JavaScript to determine overflow and set the tooltip.
127129
128130> caption Display a Tooltip for Overflowing MultiSelect Items
129131
130132``` razor
131133@inject IJSRuntime JS
132134
133- <script suppress-error="BL9992">
134- window.isTextOverflowing = (id) => {
135- const el = document.getElementById(id);
136- if (!el) {
137- return false;
138- }
139-
140- return el.scrollWidth > el.clientWidth;
141- };
142- </script>
143-
144135<TelerikTooltip TargetSelector=".example-ms .k-chip-label[title]">
145136 <Template>
146137 @{
@@ -169,21 +160,30 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
169160 class="k-chip-label"
170161 @onmouseenter="() => OnHoverHandler(context.HobbyId)"
171162 id="item @context.HobbyId"
172- title="@title ">
163+ title="@itemTitle ">
173164 @context.HobbyName
174165 </span>
175166 </span>
176167 </TagTemplate>
177168</TelerikMultiSelect>
178169
179- @code {
180- private async Task OnHoverHandler(int id)
181- {
182- IsItemOverflowing = await JS.InvokeAsync<bool>("isTextOverflowing", $"item {id}");
183- }
170+ @* suppress-error allows script tags inside Razor components.
171+ Move the script to an external file in production apps. *@
172+ <script suppress-error="BL9992">
173+ window.isTextOverflowing = (id) => {
174+ const el = document.getElementById(id);
175+ if (!el) {
176+ return false;
177+ }
178+
179+ return el.scrollWidth > el.clientWidth;
180+ };
181+ </script>
184182
183+ @code {
185184 private bool IsItemOverflowing { get; set; }
186185 private List<int> SelectedHobbyIds { get; set; }
186+
187187 private IEnumerable<HobbiesDto> Hobbies { get; set; } = new List<HobbiesDto>()
188188 {
189189 new HobbiesDto(1, "This is a test for a very very very very long sentance."),
@@ -194,6 +194,11 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
194194 new HobbiesDto(6, "Football"),
195195 };
196196
197+ private async Task OnHoverHandler(int id)
198+ {
199+ IsItemOverflowing = await JS.InvokeAsync<bool>("isTextOverflowing", $"item {id}");
200+ }
201+
197202 public class HobbiesDto
198203 {
199204 public int HobbyId { get; set; }
@@ -217,6 +222,6 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
217222
218223- [ ComboBox Overview] ( slug:components/combobox/overview )
219224- [ MultiSelect Overview] ( slug:multiselect-overview )
220- - [ Tooltip Configuration ] ( slug:tooltip-overview )
225+ - [ Tooltip Overview ] ( slug:tooltip-overview )
221226- [ JavaScript scrollWidth Documentation] ( https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollWidth )
222227- [ JavaScript clientWidth Documentation] ( https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth )
0 commit comments