Merge branch 'main' of https://git.azuze.fr/kawa/SharepointToolbox-Web
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
@* Recursive editor row for one folder in the visual builder. *@
|
||||
@using SharepointToolbox.Web.Core.Models
|
||||
|
||||
<div class="folder-node" style="margin-left:@(Depth > 1 ? "18px" : "0")">
|
||||
<div class="flex-row" style="gap:6px">
|
||||
<span class="text-muted" style="font-family:monospace">📁</span>
|
||||
<input class="form-input" style="width:auto;flex:1;min-width:160px"
|
||||
placeholder="Folder name" value="@Node.Name"
|
||||
@oninput="OnNameInput" />
|
||||
@if (Depth < FolderNode.MaxDepth)
|
||||
{
|
||||
<button class="btn btn-secondary btn-sm" type="button" @onclick="AddChild" title="Add subfolder">+ Sub</button>
|
||||
}
|
||||
<button class="btn btn-danger btn-sm" type="button" @onclick="() => OnRemove.InvokeAsync(Node)" title="Remove">✕</button>
|
||||
</div>
|
||||
|
||||
@foreach (var child in Node.Children)
|
||||
{
|
||||
<FolderTreeNode Node="child" Depth="Depth + 1" OnRemove="RemoveChild" OnChanged="OnChanged" />
|
||||
}
|
||||
</div>
|
||||
|
||||
@code {
|
||||
[Parameter, EditorRequired] public FolderNode Node { get; set; } = default!;
|
||||
[Parameter] public int Depth { get; set; } = 1;
|
||||
[Parameter] public EventCallback<FolderNode> OnRemove { get; set; }
|
||||
[Parameter] public EventCallback OnChanged { get; set; }
|
||||
|
||||
private async Task OnNameInput(ChangeEventArgs e)
|
||||
{
|
||||
Node.Name = e.Value?.ToString() ?? string.Empty;
|
||||
await OnChanged.InvokeAsync();
|
||||
}
|
||||
|
||||
private async Task AddChild()
|
||||
{
|
||||
Node.Children.Add(new FolderNode());
|
||||
await OnChanged.InvokeAsync();
|
||||
}
|
||||
|
||||
private async Task RemoveChild(FolderNode child)
|
||||
{
|
||||
Node.Children.Remove(child);
|
||||
await OnChanged.InvokeAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user