Files
limanapp/LiMan.UI/Components/CopyToClipboard.razor
T
2021-10-14 10:53:53 +02:00

48 lines
1.3 KiB
Plaintext

@using System
@inject IJSRuntime JSRuntime
<div class="form-inline">
<input class="form-control" readonly type="text" value="@Text" />
<button type="button" class="btn @btnStyle" @onclick="CopyTextToClipboard" title="Copy to Clipboard">
@if (copyDone)
{
<span><i class="far fa-thumbs-up"></i></span>
}
else
{
<span><i class="far fa-copy"></i></span>
}
</button>
</div>
@code {
/// <summary>
/// Metodi per copia verso clipboard:
/// link:
/// - https://chrissainty.com/copy-to-clipboard-in-blazor/
/// - https://www.daveabrock.com/2021/02/18/copy-to-clipboard-markdown-editor/
/// - https://www.meziantou.net/
/// </summary>
[Parameter] public string Text { get; set; }
protected string btnStyle = "btn-primary";
protected string btnText = "Copy";
protected bool copyDone = false;
private async Task CopyTextToClipboard()
{
// cambio colore..
btnStyle = "btn-success";
btnText = "Done!";
copyDone = true;
await JSRuntime.InvokeVoidAsync("clipboardCopy.copyText", Text);
await Task.Delay(1100);
// fix cambio colore..
btnStyle = "btn-primary";
btnText = "Copy";
copyDone = false;
await Task.Delay(10);
}
}