Files
Fixiy/Fixiy.Shared/Components/SingleElements/SignaturePad.razor
T

44 lines
1.2 KiB
Plaintext

@inject IJSRuntime JS
@implements IAsyncDisposable
<div class="signature-container">
<canvas id="@_canvasId" width="600" height="200" class="signature-canvas"></canvas>
<div class="signature-actions">
<button type="button" class="btn-clear-sig" @onclick="CancellaFirma">
<i class="ri-delete-bin-line"></i>
Cancella firma
</button>
</div>
</div>
@code {
[Parameter] public EventCallback<string> OnFirmaCambiata { get; set; }
readonly string _canvasId = $"sig-{Guid.NewGuid():N}";
DotNetObjectReference<SignaturePad>? _dotNetRef;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
_dotNetRef = DotNetObjectReference.Create(this);
await JS.InvokeVoidAsync("signaturePad.init", _canvasId, _dotNetRef);
}
}
[JSInvokable]
public Task OnSignatureChanged(string dataUrl) => OnFirmaCambiata.InvokeAsync(dataUrl);
async Task CancellaFirma()
{
await JS.InvokeVoidAsync("signaturePad.clear", _canvasId);
await OnFirmaCambiata.InvokeAsync(string.Empty);
}
public async ValueTask DisposeAsync()
{
_dotNetRef?.Dispose();
await ValueTask.CompletedTask;
}
}