|
49 | 49 | </div> |
50 | 50 |
|
51 | 51 | @if (ViewMode == "card") |
52 | | - { |
53 | | - <div class="row"> |
| 52 | + { <div class="row"> |
54 | 53 | @foreach (var result in Response.Results.Take(DisplayLimit)) |
55 | 54 | { |
56 | 55 | <div class="col-md-6 col-lg-4 mb-3"> |
57 | | - <div class="card h-100 result-card"> |
| 56 | + <div class="card h-100 result-card" style="cursor: pointer;" @onclick="() => HandleResultClick(result)"> |
58 | 57 | <div class="card-body"> |
59 | 58 | <div class="d-flex justify-content-between align-items-start mb-2"> |
60 | 59 | <h6 class="card-title"> |
61 | 60 | @if (!string.IsNullOrEmpty(result.Url)) |
62 | 61 | { |
63 | | - <a href="@result.Url" target="_blank" class="text-decoration-none"> |
| 62 | + <a href="@result.Url" target="_blank" class="text-decoration-none" @onclick:stopPropagation="true"> |
64 | 63 | @result.Name |
65 | 64 | <i class="fas fa-external-link-alt fa-sm ms-1"></i> |
66 | 65 | </a> |
|
89 | 88 | </div> |
90 | 89 | } |
91 | 90 | else |
92 | | - { |
93 | | - <div class="list-group"> |
| 91 | + { <div class="list-group"> |
94 | 92 | @foreach (var result in Response.Results.Take(DisplayLimit)) |
95 | 93 | { |
96 | | - <div class="list-group-item"> |
| 94 | + <div class="list-group-item" style="cursor: pointer;" @onclick="() => HandleResultClick(result)"> |
97 | 95 | <div class="d-flex w-100 justify-content-between align-items-center"> |
98 | 96 | <h6 class="mb-1"> |
99 | 97 | @if (!string.IsNullOrEmpty(result.Url)) |
100 | 98 | { |
101 | | - <a href="@result.Url" target="_blank" class="text-decoration-none"> |
| 99 | + <a href="@result.Url" target="_blank" class="text-decoration-none" @onclick:stopPropagation="true"> |
102 | 100 | @result.Name |
103 | 101 | <i class="fas fa-external-link-alt fa-sm ms-1"></i> |
104 | 102 | </a> |
|
182 | 180 | @code { |
183 | 181 | [Parameter] public NLWebResponse? Response { get; set; } |
184 | 182 | [Parameter] public bool ShowDebugInfo { get; set; } = false; |
| 183 | + [Parameter] public EventCallback<NLWebResult> OnResultClicked { get; set; } |
185 | 184 |
|
186 | 185 | private string ViewMode = "card"; |
187 | | - private int DisplayLimit = 6; private void ToggleDebugInfo() |
| 186 | + private int DisplayLimit = 6;private void ToggleDebugInfo() |
188 | 187 | { |
189 | 188 | ShowDebugInfo = !ShowDebugInfo; |
190 | 189 | } |
|
197 | 196 | private void SetCardView() |
198 | 197 | { |
199 | 198 | ViewMode = "card"; |
200 | | - } |
201 | | - |
202 | | - private void SetListView() |
| 199 | + } private void SetListView() |
203 | 200 | { |
204 | 201 | ViewMode = "list"; |
205 | 202 | } |
| 203 | + |
| 204 | + private async Task HandleResultClick(NLWebResult result) |
| 205 | + { |
| 206 | + if (OnResultClicked.HasDelegate) |
| 207 | + { |
| 208 | + await OnResultClicked.InvokeAsync(result); |
| 209 | + } |
| 210 | + } |
206 | 211 |
|
207 | 212 | private string FormatGeneratedAnswer(string answer) |
208 | 213 | { |
|
0 commit comments