48 lines
1.3 KiB
Plaintext
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);
|
|
}
|
|
} |