35 lines
1.1 KiB
C#
Raw Normal View History

using Microsoft.AspNetCore.Components;
using NftFaucetRadzen.Models;
namespace NftFaucetRadzen.Components;
public partial class CardList
{
[Parameter] public CardListItem[] Data { get; set; }
2022-08-25 20:34:10 -05:00
[Parameter] public CardListItem[] SelectedItems { get; set; }
[Parameter] public EventCallback<CardListItem[]> SelectedItemsChanged { get; set; }
[Parameter] public bool AllowMultipleSelection { get; set; }
[Parameter] public bool AllowUnselect { get; set; }
2022-08-25 20:34:10 -05:00
public async Task ToggleSelection(CardListItem item)
{
2022-08-25 20:34:10 -05:00
var selectedItems = SelectedItems?.ToList() ?? new List<CardListItem>();
var isAlreadySelected = selectedItems.Contains(item);
if (isAlreadySelected && AllowUnselect)
{
2022-08-25 20:34:10 -05:00
selectedItems.Remove(item);
}
else if (!isAlreadySelected)
{
if (!AllowMultipleSelection)
{
2022-08-25 20:34:10 -05:00
selectedItems.Clear();
}
2022-08-25 20:34:10 -05:00
selectedItems.Add(item);
}
2022-08-25 20:34:10 -05:00
SelectedItems = selectedItems.ToArray();
await SelectedItemsChanged.InvokeAsync(SelectedItems);
StateHasChanged();
}
}