You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.2 KiB
53 lines
1.2 KiB
@using Services.Website |
|
@inject IKeyService KeyService |
|
|
|
@inject IDataCollectionService DataCollectionService |
|
@inject IJSRuntime JsRuntime |
|
|
|
|
|
<div tabindex="0" |
|
style="margin: auto;" |
|
@onkeydown="HandleKeyDown" |
|
@onkeyup="HandleKeyUp" |
|
@onkeydown:preventDefault="true" |
|
@onkeydown:stopPropagation="true"> |
|
@ChildContent |
|
</div> |
|
|
|
@code { |
|
|
|
[Parameter] |
|
public RenderFragment ChildContent { get; set; } = default!; |
|
|
|
private void HandleKeyDown(KeyboardEventArgs e) |
|
{ |
|
DataCollectionService.SendEvent( |
|
DataCollectionKeys.BuildCalcInput, |
|
new Dictionary<string, string> {{"key", e.Key.ToLower()}, {"input-source", "keyboard"}} |
|
); |
|
|
|
KeyService.AddPressedKey(e.Key); |
|
} |
|
|
|
private void HandleKeyUp(KeyboardEventArgs e) |
|
{ |
|
KeyService.RemovePressedKey(e.Key); |
|
} |
|
|
|
protected override bool ShouldRender() |
|
{ |
|
#if DEBUG |
|
JsRuntime.InvokeVoidAsync("console.time", "InputPanelComponent"); |
|
#endif |
|
|
|
return true; |
|
} |
|
|
|
protected override void OnAfterRender(bool firstRender) |
|
{ |
|
#if DEBUG |
|
JsRuntime.InvokeVoidAsync("console.timeEnd", "InputPanelComponent"); |
|
#endif |
|
} |
|
|
|
} |