NejBlazor/DataTable/DataTable.razor
honzapatCZ 0d51a465e3 fix dt
2024-09-02 13:06:33 +02:00

62 lines
1.3 KiB
Plaintext

@namespace Nejcraft.Shared
@using Nejcraft.Shared.Parts.ButtonParts
@using Nejcraft.Shared.Parts.InputParts
@using Nejcraft.Shared.Parts
@typeparam TItem
@inherits NejComponentBase
<div class="flex overflow-x-visible">
<Nejcraft.Shared.Parts.TableParts.Table Class="@GetCssClass()">
<thead class="">
<tr>
<CascadingValue Value="this">
@ChildContent
</CascadingValue>
</tr>
</thead>
<tbody class="">
@{
var index = 0;
foreach (TItem it in Data ?? Array.Empty<TItem>())
{
index++;
<tr @key=@(index + ", " + Key?.Invoke(it)) class="border-t border-secondary/50">
@foreach (DataTableCol<TItem> tab in Columns ?? new List<DataTableCol<TItem>>())
{
<Nejcraft.Shared.Parts.TableParts.TablePart>
@tab.ChildContent(it)
</Nejcraft.Shared.Parts.TableParts.TablePart>
}
</tr>
}
}
</tbody>
</Nejcraft.Shared.Parts.TableParts.Table>
</div>
@code {
[Parameter]
public IEnumerable<TItem>? Data { get; set; }
private List<DataTableCol<TItem>> Columns { get; set; } = new List<DataTableCol<TItem>>();
[Parameter]
public RenderFragment? ChildContent { get; set; }
[Parameter]
public Func<TItem, string>? Key { get; set; }
public void AddColumn(DataTableCol<TItem> item)
{
Columns.Add(item);
InvokeAsync(StateHasChanged);
}
}