58 lines
1.5 KiB
Plaintext
58 lines
1.5 KiB
Plaintext
@using System
|
|
@inject IJSRuntime JSRuntime
|
|
|
|
<div class="input-group input-group-sm">
|
|
@if (ShowText)
|
|
{
|
|
<input class="form-control" readonly type="text" value="@Text" />
|
|
}
|
|
else
|
|
{
|
|
<span class="form-control fas fa-eye-slash" readonly></span>
|
|
}
|
|
<div class="input-group-append">
|
|
<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>
|
|
</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; }
|
|
|
|
[Parameter]
|
|
public bool ShowText { get; set; } = true;
|
|
|
|
protected string btnStyle = "btn-primary";
|
|
protected bool copyDone = false;
|
|
|
|
private async Task CopyTextToClipboard()
|
|
{
|
|
// cambio colore..
|
|
btnStyle = "btn-success";
|
|
copyDone = true;
|
|
await JSRuntime.InvokeVoidAsync("clipboardCopy.copyText", Text);
|
|
await Task.Delay(1100);
|
|
// fix cambio colore..
|
|
btnStyle = "btn-primary";
|
|
copyDone = false;
|
|
await Task.Delay(10);
|
|
}
|
|
} |