mirror of
https://github.com/status-im/nft-faucet.git
synced 2025-02-24 12:38:30 +00:00
35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
|
using Microsoft.AspNetCore.Components;
|
||
|
using NftFaucetRadzen.Models;
|
||
|
|
||
|
namespace NftFaucetRadzen.Components;
|
||
|
|
||
|
public partial class CardList
|
||
|
{
|
||
|
[Parameter] public CardListItem[] Data { get; set; }
|
||
|
[Parameter] public Guid[] SelectedItemIds { get; set; }
|
||
|
[Parameter] public EventCallback<Guid[]> SelectedItemIdsChanged { get; set; }
|
||
|
[Parameter] public bool AllowMultipleSelection { get; set; }
|
||
|
[Parameter] public bool AllowUnselect { get; set; }
|
||
|
|
||
|
public async Task ToggleSelection(Guid itemId)
|
||
|
{
|
||
|
var selectedItemIds = SelectedItemIds?.ToList() ?? new List<Guid>();
|
||
|
var isAlreadySelected = selectedItemIds.Contains(itemId);
|
||
|
if (isAlreadySelected && AllowUnselect)
|
||
|
{
|
||
|
selectedItemIds.Remove(itemId);
|
||
|
}
|
||
|
else if (!isAlreadySelected)
|
||
|
{
|
||
|
if (!AllowMultipleSelection)
|
||
|
{
|
||
|
selectedItemIds.Clear();
|
||
|
}
|
||
|
selectedItemIds.Add(itemId);
|
||
|
}
|
||
|
SelectedItemIds = selectedItemIds.ToArray();
|
||
|
await SelectedItemIdsChanged.InvokeAsync(SelectedItemIds);
|
||
|
StateHasChanged();
|
||
|
}
|
||
|
}
|