Skip to content

Commit 1f8ad63

Browse files
georgedautovTsvetomir-Hr
authored andcommitted
Update knowledge-base/combobox-multiselect-conditional-tooltip.md
Co-authored-by: Tsvetomir Hristov <[email protected]>
1 parent 867375e commit 1f8ad63

File tree

1 file changed

+61
-56
lines changed

1 file changed

+61
-56
lines changed

knowledge-base/combobox-multiselect-conditional-tooltip.md

Lines changed: 61 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
126128
2. 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

Comments
 (0)