Example #1
0
        /// <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);
        }
Example #2
0
 protected async System.Threading.Tasks.Task OnKeyPress(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs args)
 {
     await HandleKeyPress(args);
 }
Example #3
0
 protected virtual async System.Threading.Tasks.Task OnFilterKeyPress(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs args)
 {
     await HandleKeyPress(args, true);
 }
Example #4
0
        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;
            }
        }