50 lines
No EOL
1.6 KiB
Text
50 lines
No EOL
1.6 KiB
Text
@namespace LANCommander.UI.Components
|
|
@typeparam TItem
|
|
|
|
<CascadingValue Value="Item" Name="Item">
|
|
<div class="data-list-item" @onclick="ToggleSelection">
|
|
<Flex Align="Align" Justify="Justify" Gap="Gap">
|
|
@if (InputPosition == DataListInputPosition.Left)
|
|
{
|
|
<DataListItemInput TItem="TItem"/>
|
|
}
|
|
|
|
@ItemTemplate(Item)
|
|
|
|
@if (InputPosition == DataListInputPosition.Right)
|
|
{
|
|
<DataListItemInput TItem="TItem"/>
|
|
}
|
|
</Flex>
|
|
</div>
|
|
</CascadingValue>
|
|
|
|
@code {
|
|
[CascadingParameter(Name = "Selected")]
|
|
public bool Selected { get; set; }
|
|
|
|
[CascadingParameter(Name = "Radio")]
|
|
public bool Radio { get; set; }
|
|
|
|
[CascadingParameter(Name = "Checkbox")]
|
|
public bool Checkbox { get; set; }
|
|
|
|
[CascadingParameter(Name = "InputPosition")]
|
|
public DataListInputPosition InputPosition { get; set; }
|
|
|
|
[CascadingParameter(Name = "SelectionTemplate")]
|
|
public RenderFragment<TItem> SelectionTemplate { get; set; }
|
|
|
|
[Parameter] public TItem Item { get; set; }
|
|
[Parameter] public RenderFragment<TItem> ItemTemplate { get; set; }
|
|
[Parameter] public EventCallback<bool> OnSelectedChanged { get; set; }
|
|
[Parameter] public FlexAlign Align { get; set; } = FlexAlign.Center;
|
|
[Parameter] public FlexJustify Justify { get; set; } = FlexJustify.Center;
|
|
[Parameter] public FlexGap Gap { get; set; } = FlexGap.Middle;
|
|
|
|
private async Task ToggleSelection()
|
|
{
|
|
if (OnSelectedChanged.HasDelegate)
|
|
await OnSelectedChanged.InvokeAsync(!Selected);
|
|
}
|
|
} |