/// <summary> /// Handles the <see cref="E:KeyDown" /> event. /// </summary> /// <param name="args">The <see cref="Microsoft.AspNetCore.Components.Web.KeyboardEventArgs"/> instance containing the event data.</param> protected async System.Threading.Tasks.Task OnKeyDown(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs args) { if (Disabled) { return; } var key = $"{args.Key}".Trim(); if (AllowFiltering && key.Length == 1) { await JSRuntime.InvokeAsync <string>("Radzen.setInputValue", search, key); await JSRuntime.InvokeVoidAsync("Radzen.focusElement", SearchID); } await OnKeyPress(args); }
protected async System.Threading.Tasks.Task OnKeyPress(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs args) { await HandleKeyPress(args); }
protected virtual async System.Threading.Tasks.Task OnFilterKeyPress(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs args) { await HandleKeyPress(args, true); }
private async System.Threading.Tasks.Task HandleKeyPress(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs args, bool isFilter = false) { if (Disabled) { return; } var items = (LoadData.HasDelegate ? Data != null ? Data : Enumerable.Empty <object>() : (View != null ? View : Enumerable.Empty <object>())).Cast <object>(); var key = args.Code != null ? args.Code : args.Key; if (!args.AltKey && (key == "ArrowDown" || key == "ArrowLeft" || key == "ArrowUp" || key == "ArrowRight")) { try { var newSelectedIndex = await JSRuntime.InvokeAsync <int>("Radzen.focusListItem", search, list, key == "ArrowDown" || key == "ArrowRight", selectedIndex); if (!Multiple) { if (newSelectedIndex != selectedIndex && newSelectedIndex >= 0 && newSelectedIndex <= items.Count() - 1) { selectedIndex = newSelectedIndex; await OnSelectItem(items.ElementAt(selectedIndex), true); } } else { selectedIndex = await JSRuntime.InvokeAsync <int>("Radzen.focusListItem", search, list, key == "ArrowDown", selectedIndex); } } catch (Exception) { // } } else if (Multiple && key == "Space") { if (selectedIndex >= 0 && selectedIndex <= items.Count() - 1) { await JSRuntime.InvokeAsync <string>("Radzen.setInputValue", search, $"{searchText}".Trim()); await OnSelectItem(items.ElementAt(selectedIndex), true); } } else if (key == "Enter" || (args.AltKey && key == "ArrowDown")) { await OpenPopup(key, isFilter); } else if (key == "Escape" || key == "Tab") { await JSRuntime.InvokeVoidAsync("Radzen.closePopup", PopupID); } else if (key == "Delete") { if (!Multiple && selectedItem != null) { selectedIndex = -1; await OnSelectItem(null, true); } if (AllowFiltering && isFilter) { Debounce(DebounceFilter, FilterDelay); } } else if (AllowFiltering && isFilter) { Debounce(DebounceFilter, FilterDelay); } }
/// <summary> /// Handles keys pressed in navigation box so single key strokes can invoke a function /// </summary> /// <param name="eventArgs"></param> /// <returns></returns> protected async Task KeyPressed(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs eventArgs) { switch (eventArgs.Key) { case "Z": ShowHelp(); break; case "E": if (@Model.myAccess.DeleteEdit || Model.myHeader.AuthorID == Model.myAccess.UserID) { await EditNote(); } // editing = true; //StateHasChanged(); break; case "D": if (@Model.myAccess.DeleteEdit || Model.myHeader.AuthorID == Model.myAccess.UserID) { DeleteNote(); } break; case "Enter": if (!eventArgs.ShiftKey) { await TextHasChanged(""); // next note } else { await NextBaseNote(); } break; case "b": await PreviousNote(); break; case "B": await PreviousBaseNote(); break; case "N": await NewResponse(); break; case "L": case "I": Done(); // we are dome here... break; case " ": if (eventArgs.ShiftKey) { if (!isSearch) { return; } SearchResults.RemoveAt(0); if (SearchResults.Count == 0) { ShowMessage("Search Complete!"); isSearch = false; return; } currentHeader = SearchResults[0]; await SetNote(); } else { if (seqIndx == -1) { break; } await ContinueSeq(); } break; case "F": Forward(); break; case "H": Html(); break; case "h": html(); break; case "m": mail(); break; case "S": StopTimer(); await OnClick.InvokeAsync("Search"); break; case "M": await Markit(); break; case "U": Browse(); break; case "C": Copy(currentHeader); break; default: //var parameters = new ModalParameters(); //parameters.Add("Message", eventArgs.Key); //var options = new ModalOptions() { HideCloseButton = false }; //Modal.OnClose += HideDialog; //Modal.Show<MessageBox>("", parameters, options); break; } }