2022-08-25 20:28:24 -05:00
|
|
|
using Microsoft.AspNetCore.Components;
|
|
|
|
using NftFaucetRadzen.Models;
|
|
|
|
|
|
|
|
namespace NftFaucetRadzen.Components;
|
|
|
|
|
2022-08-26 13:13:40 -05:00
|
|
|
public partial class CardList : BasicComponent
|
2022-08-25 20:28:24 -05:00
|
|
|
{
|
|
|
|
[Parameter] public CardListItem[] Data { get; set; }
|
2022-08-26 17:48:40 -05:00
|
|
|
[Parameter] public Guid[] SelectedItems { get; set; }
|
|
|
|
[Parameter] public EventCallback<Guid[]> SelectedItemsChanged { get; set; }
|
2022-08-25 20:28:24 -05:00
|
|
|
[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:28:24 -05:00
|
|
|
{
|
2022-08-25 20:38:16 -05:00
|
|
|
if (item.IsDisabled)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2022-08-26 17:48:40 -05:00
|
|
|
var selectedItems = SelectedItems?.ToList() ?? new List<Guid>();
|
|
|
|
var isAlreadySelected = selectedItems.Contains(item.Id);
|
2022-08-25 20:28:24 -05:00
|
|
|
if (isAlreadySelected && AllowUnselect)
|
|
|
|
{
|
2022-08-26 17:48:40 -05:00
|
|
|
selectedItems.Remove(item.Id);
|
2022-08-25 20:28:24 -05:00
|
|
|
}
|
|
|
|
else if (!isAlreadySelected)
|
|
|
|
{
|
|
|
|
if (!AllowMultipleSelection)
|
|
|
|
{
|
2022-08-25 20:34:10 -05:00
|
|
|
selectedItems.Clear();
|
2022-08-25 20:28:24 -05:00
|
|
|
}
|
2022-08-26 17:48:40 -05:00
|
|
|
selectedItems.Add(item.Id);
|
2022-08-25 20:28:24 -05:00
|
|
|
}
|
2022-08-25 20:34:10 -05:00
|
|
|
SelectedItems = selectedItems.ToArray();
|
|
|
|
await SelectedItemsChanged.InvokeAsync(SelectedItems);
|
2022-08-26 13:13:40 -05:00
|
|
|
RefreshMediator.NotifyStateHasChangedSafe();
|
2022-08-25 20:28:24 -05:00
|
|
|
}
|
|
|
|
}
|