Skip to content

Commit beff758

Browse files
Update knowledge-base/combobox-multiselect-conditional-tooltip.md
Co-authored-by: Tsvetomir Hristov <[email protected]>
1 parent 6fde297 commit beff758

File tree

1 file changed

+57
-56
lines changed

1 file changed

+57
-56
lines changed

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

Lines changed: 57 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -46,57 +46,44 @@ 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+
<script suppress-error="BL9992">
71+
window.isTextOverflowing = () => {
72+
const el = document.querySelector('.example-cb .k-input-inner');
73+
if (!el) {
74+
return;
75+
}
76+
77+
return el.scrollWidth > el.clientWidth;
78+
};
79+
</script>
8480
81+
@code {
82+
private int SelectedHobbyId { get; set; }
8583
private bool IsCurrentOverflowing { get; set; } = false;
8684
private string CurrentHobbyName => FindCurrentHobby()?.HobbyName;
8785
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>()
86+
private IEnumerable<HobbiesDto> Hobbies { get; set; } = new List<HobbiesDto>()
10087
{
10188
new HobbiesDto(1, "This is a test for a very very very very long sentance."),
10289
new HobbiesDto(2, "This is some long test sentance."),
@@ -106,6 +93,19 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
10693
new HobbiesDto(6, "Football"),
10794
};
10895
96+
private async Task OnMouseEnter()
97+
{
98+
@if (SelectedHobbyId != 0)
99+
{
100+
IsCurrentOverflowing = await JS.InvokeAsync<bool>("isTextOverflowing");
101+
}
102+
}
103+
104+
private HobbiesDto? FindCurrentHobby()
105+
{
106+
return Hobbies.FirstOrDefault(x => x.HobbyId == SelectedHobbyId);
107+
}
108+
109109
public class HobbiesDto
110110
{
111111
public HobbiesDto(int id, string name)
@@ -122,25 +122,14 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
122122

123123
### MultiSelect Implementation
124124

125-
1. Use the `TagTemplate` to customize the display of tags in the MultiSelect.
125+
1. Use the [`TagTemplate`](slug:multiselect-templates#tag-template) to customize the display of tags in the MultiSelect.
126126
2. Use JavaScript to determine overflow and set the tooltip.
127127

128128
>caption Display a Tooltip for Overflowing MultiSelect Items
129129
130130
```razor
131131
@inject IJSRuntime JS
132132
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-
144133
<TelerikTooltip TargetSelector=".example-ms .k-chip-label[title]">
145134
<Template>
146135
@{
@@ -169,21 +158,28 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
169158
class="k-chip-label"
170159
@onmouseenter="() => OnHoverHandler(context.HobbyId)"
171160
id="item @context.HobbyId"
172-
title="@title">
161+
title="@itemTitle">
173162
@context.HobbyName
174163
</span>
175164
</span>
176165
</TagTemplate>
177166
</TelerikMultiSelect>
178167
179-
@code {
180-
private async Task OnHoverHandler(int id)
181-
{
182-
IsItemOverflowing = await JS.InvokeAsync<bool>("isTextOverflowing", $"item {id}");
183-
}
168+
<script suppress-error="BL9992">
169+
window.isTextOverflowing = (id) => {
170+
const el = document.getElementById(id);
171+
if (!el) {
172+
return false;
173+
}
174+
175+
return el.scrollWidth > el.clientWidth;
176+
};
177+
</script>
184178
179+
@code {
185180
private bool IsItemOverflowing { get; set; }
186181
private List<int> SelectedHobbyIds { get; set; }
182+
187183
private IEnumerable<HobbiesDto> Hobbies { get; set; } = new List<HobbiesDto>()
188184
{
189185
new HobbiesDto(1, "This is a test for a very very very very long sentance."),
@@ -194,6 +190,11 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
194190
new HobbiesDto(6, "Football"),
195191
};
196192
193+
private async Task OnHoverHandler(int id)
194+
{
195+
IsItemOverflowing = await JS.InvokeAsync<bool>("isTextOverflowing", $"item {id}");
196+
}
197+
197198
public class HobbiesDto
198199
{
199200
public int HobbyId { get; set; }
@@ -217,6 +218,6 @@ To ensure tooltips are displayed only when text is ellipsed, use JavaScript to c
217218

218219
- [ComboBox Overview](slug:components/combobox/overview)
219220
- [MultiSelect Overview](slug:multiselect-overview)
220-
- [Tooltip Configuration](slug:tooltip-overview)
221+
- [Tooltip Overview](slug:tooltip-overview)
221222
- [JavaScript scrollWidth Documentation](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollWidth)
222223
- [JavaScript clientWidth Documentation](https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth)

0 commit comments

Comments
 (0)