mirror of
https://github.com/radzenhq/radzen-blazor.git
synced 2026-02-04 05:35:44 +00:00
68 lines
2.5 KiB
Plaintext
68 lines
2.5 KiB
Plaintext
@using System.Text
|
|
@using Radzen.Blazor.Rendering
|
|
@using Microsoft.JSInterop
|
|
@inherits RadzenHtmlEditorButtonBase
|
|
@inject DialogService DialogService
|
|
|
|
<EditorButton Title=@Title Click=@OnClick Icon="insert_link" />
|
|
|
|
@code {
|
|
protected override async Task OnClick()
|
|
{
|
|
if (Editor == null) return;
|
|
|
|
await Editor.SaveSelectionAsync();
|
|
|
|
bool blank = false;
|
|
|
|
var attributes = await Editor.GetSelectionAttributes<LinkAttributes>("a", new[] {"innerText", "href", "target" });
|
|
|
|
if (attributes.Target == "_blank")
|
|
{
|
|
blank = true;
|
|
}
|
|
|
|
var result = await DialogService.OpenAsync(Title, ds => @<div class="rz-html-editor-dialog">
|
|
<RadzenTemplateForm TItem="LinkAttributes" Data="@attributes" Submit="() => ds.Close(true)">
|
|
<div class="rz-html-editor-dialog-item">
|
|
<label>@UrlText</label>
|
|
<RadzenTextBox @bind-Value=@attributes.Href style="width: 100%" />
|
|
</div>
|
|
@if (string.IsNullOrWhiteSpace(attributes.InnerHtml) || attributes.InnerHtml == "<br>")
|
|
{
|
|
<div class="rz-html-editor-dialog-item">
|
|
<label>@LinkText</label>
|
|
<RadzenTextBox @bind-Value=@attributes.InnerText style="width: 100%" />
|
|
</div>
|
|
}
|
|
<div class="rz-html-editor-dialog-item">
|
|
<RadzenCheckBox @bind-Value=@blank />
|
|
<label>@OpenInNewWindowText</label>
|
|
</div>
|
|
<div class="rz-html-editor-dialog-buttons">
|
|
<RadzenButton Text=@OkText ButtonType="ButtonType.Submit" />
|
|
<RadzenButton Text=@CancelText Click="()=> ds.Close(false)" ButtonStyle="ButtonStyle.Secondary" />
|
|
</div>
|
|
</RadzenTemplateForm>
|
|
</div>);
|
|
|
|
await Editor.RestoreSelectionAsync();
|
|
|
|
if (result == true && !String.IsNullOrEmpty(attributes.Href) && Editor != null)
|
|
{
|
|
var html = new StringBuilder();
|
|
html.AppendFormat("<a href=\"{0}\"", attributes.Href);
|
|
if (blank)
|
|
{
|
|
html.Append(" target=\"_blank\"");
|
|
}
|
|
|
|
html.AppendFormat(">{0}</a>", string.IsNullOrEmpty(attributes.InnerText) ? attributes.InnerHtml : attributes.InnerText);
|
|
|
|
if (Editor != null)
|
|
{
|
|
await Editor.ExecuteCommandAsync("insertHTML", html.ToString());
|
|
}
|
|
}
|
|
}
|
|
} |