44 lines
1.2 KiB
Plaintext
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;
|
|
}
|
|
}
|