Blazor - Get Started with Smart.RepeatButton
Setup The Project
Follow the Getting Started guide to set up your Blazor Application with Smart UI.
Setup Basic RepeatButton
Smart.RepeatButton is a button element that repeats a single action until release.
- Add the RepeatButton component to the Pages/Index.razor file
        <RepeatButton></RepeatButton> 
- Delayindicates the time in miliseconds between the execution of each action, while- InitialDelayapplies delay only on the very first Click event:- <RepeatButton Delay="100">Repeat Button</RepeatButton> 
- Optionally, set the name and value of the RepeatButton:
        <RepeatButton Delay="100" Name="repeat" Value="enabled">Repeat Button</RepeatButton> 
 
      RepeatButton Event
In order to atach a change listener to the RepeatButton, it is necessary to use the IJSRuntime interface
@inject IJSRuntime JS
Create an Increase function that will increment a number by one every time it is called:
public static int number = 1;
[JSInvokable]
public void Increase()
{
  number++;
  StateHasChanged();
}
      Using JSInterop, inoke a custom JS function called "setListener":
protected override void OnInitialized()
{
    base.OnInitialized();
    JS.InvokeVoidAsync("setListener", DotNetObjectReference.Create(this), nameof(Increase));
}
      Inside the \_Host.cshtml file (server-side Blazor) or wwwroot/index.html (client-side WebAssembly Blazor), create a function that will attach an event listener to the DOM element and will then call our C# function:
<script>
  (function (global) {
      global.setListener = (dotNetHelper) => {
          setTimeout(function(){
              document.querySelector("smart-repeat-button").addEventListener('click', function(){
                  dotNetHelper.invokeMethodAsync('Increase')
              })
          }, 0)
      }  
  })(window); 
</script>
      The demo below will increase the counter, while the user is pressing the RepeatButton:
<RepeatButton Delay="100" id="increase-btn">+</RepeatButton>
<h3>@number</h3>
@code{
    public static int number = 1;
    [JSInvokable]
    public void Increase()
    {
        number++;
        StateHasChanged();
    }
    protected override void OnInitialized()
    {
        base.OnInitialized();
        JS.InvokeVoidAsync("setListener", DotNetObjectReference.Create(this), nameof(Increase));
    }
}
      
      