I am using MudBlazor and I would like to detect a double click on a single table row and react to the event. However, there is no double click listed in the API of the table. The single click is easy to do with the OnRowClick callback (see also here on SO). There is no equivalent for double clicks.
I tried using the Blazor event ondblclick with
<MudTd @ondblclick="OnOrderDbClicked">
// ...
<MudTd/>
I have two issues with this:
<RowTemplate/> element just won't accept it.I only have a crutch for issue 1: Bind a variable MyOrderVM MyItem to the SelectedItem item parameter of the table and access the object in the method that is called by the double click (because a double click also causes two single clicks which select the item).
I haven't done a lot of testing but it seems this could work but isn't there a better solution? Or do I worry to much about side effects?
OnRowClick parameter.
In the TableRowClickEventArgs it providers, there is a property MouseEventArgs that has a property Detail. The documentation to this property state:
A count of consecutive clicks that happened in a short amount of time, incremented by one.
So by checking this against 2 you can react to double clicks. I´ve used this in my own application and can confirm this works.
As you have said, currently there is no out-of-the-box way like with OnRowClick for double click. However, feel free to create an issue in the repo.
As a workaround, you could use your method 1 with a little adaption to stop the propagation of the click event to the MudTable. I think this way is easier to understand than the detour over the SelectedItem
<MudTd>
// the click is handled by the div and not bubbling up to the MudTd
<div @onclick="@EmptyCallback" @onclick:stopPropagation="true"
@ondblclick="@( (x) => DoSomething(context))" >
// ...
</div>
<MudTd/>
Here is a MudBlazor Playground to show it.
Disclaimer:
I'm a contributor to MudBlazor
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With