2020-05-03 21:46:21 +08:00
|
|
|
|
using Microsoft.AspNetCore.Components;
|
2020-05-21 14:49:07 +08:00
|
|
|
|
using OneOf;
|
2020-05-03 21:46:21 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
2020-05-29 00:33:49 +08:00
|
|
|
|
namespace AntDesign
|
2020-05-03 21:46:21 +08:00
|
|
|
|
{
|
2020-05-21 14:49:07 +08:00
|
|
|
|
using GutterType = OneOf<int, Dictionary<string, int>, (int, int)>;
|
|
|
|
|
public class ListGridType
|
2020-05-03 21:46:21 +08:00
|
|
|
|
{
|
2020-05-21 14:49:07 +08:00
|
|
|
|
public int Gutter { get; set; }
|
|
|
|
|
public int Column { get; set; }
|
|
|
|
|
public int Xs { get; set; }
|
|
|
|
|
public int Sm { get; set; }
|
|
|
|
|
public int Md { get; set; }
|
|
|
|
|
public int Lg { get; set; }
|
|
|
|
|
public int Xl { get; set; }
|
|
|
|
|
public int Xxl { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public partial class AntList<TItem> : AntDomComponentBase
|
|
|
|
|
{
|
|
|
|
|
public string PrefixName { get; set; } = "ant-list";
|
|
|
|
|
|
|
|
|
|
[Parameter] public RenderFragment<TItem> Item { get; set; }
|
2020-05-03 21:46:21 +08:00
|
|
|
|
|
2020-05-21 14:49:07 +08:00
|
|
|
|
[Parameter] public IEnumerable<TItem> DataSource { get; set; }
|
2020-05-03 21:46:21 +08:00
|
|
|
|
|
|
|
|
|
[Parameter] public RenderFragment Header { get; set; }
|
|
|
|
|
|
|
|
|
|
[Parameter] public RenderFragment Footer { get; set; }
|
|
|
|
|
|
2020-05-21 14:49:07 +08:00
|
|
|
|
[Parameter] public RenderFragment LoadMore { get; set; }
|
2020-05-03 21:46:21 +08:00
|
|
|
|
|
2020-05-10 15:42:02 +08:00
|
|
|
|
[Parameter] public AntDirectionVHType ItemLayout { get; set; } = AntDirectionVHType.Horizontal;
|
2020-05-03 21:46:21 +08:00
|
|
|
|
|
|
|
|
|
[Parameter] public bool Loading { get; set; } = false;
|
|
|
|
|
|
|
|
|
|
[Parameter] public string NoResult { get; set; }
|
|
|
|
|
|
|
|
|
|
[Parameter] public string Pagination { get; set; }
|
|
|
|
|
|
|
|
|
|
[Parameter] public string Size { get; set; } = AntSizeLDSType.Default;
|
|
|
|
|
|
|
|
|
|
[Parameter] public bool Split { get; set; } = true;
|
|
|
|
|
|
|
|
|
|
[Parameter] public string ClassName { get; set; }
|
|
|
|
|
|
2020-05-21 14:49:07 +08:00
|
|
|
|
[Parameter] public ListGridType Grid { get; set; }
|
|
|
|
|
|
|
|
|
|
private bool IsSomethingAfterLastItem
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return LoadMore != null || Footer != null || !string.IsNullOrEmpty(Pagination);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-05-03 21:46:21 +08:00
|
|
|
|
protected override void OnParametersSet()
|
|
|
|
|
{
|
|
|
|
|
base.OnParametersSet();
|
|
|
|
|
SetClassMap();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override async Task OnParametersSetAsync()
|
|
|
|
|
{
|
|
|
|
|
await base.OnParametersSetAsync();
|
|
|
|
|
SetClassMap();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void SetClassMap()
|
|
|
|
|
{
|
|
|
|
|
// large => lg
|
|
|
|
|
// small => sm
|
|
|
|
|
string sizeCls = string.Empty;
|
|
|
|
|
switch (Size)
|
|
|
|
|
{
|
|
|
|
|
case "large":
|
|
|
|
|
sizeCls = "lg";
|
|
|
|
|
break;
|
2020-05-10 15:42:02 +08:00
|
|
|
|
|
2020-05-03 21:46:21 +08:00
|
|
|
|
case "small":
|
|
|
|
|
sizeCls = "sm";
|
|
|
|
|
break;
|
2020-05-10 15:42:02 +08:00
|
|
|
|
|
2020-05-03 21:46:21 +08:00
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ClassMapper.Clear()
|
2020-05-21 14:49:07 +08:00
|
|
|
|
.Add(PrefixName)
|
2020-05-03 21:46:21 +08:00
|
|
|
|
.Add(ClassName)
|
2020-05-21 14:49:07 +08:00
|
|
|
|
.If($"{PrefixName}-split", () => Split)
|
|
|
|
|
.Add($"{PrefixName}-bordered")
|
|
|
|
|
.If($"{PrefixName}-{sizeCls}", () => !string.IsNullOrEmpty(sizeCls))
|
|
|
|
|
.If($"{PrefixName}-vertical", () => ItemLayout == AntDirectionVHType.Vertical)
|
|
|
|
|
.If($"{PrefixName}-loading", () => (Loading))
|
|
|
|
|
.If($"{PrefixName}-grid", () => Grid != null)
|
|
|
|
|
.If($"{PrefixName}-something-after-last-item", () => IsSomethingAfterLastItem);
|
|
|
|
|
|
2020-05-03 21:46:21 +08:00
|
|
|
|
}
|
2020-05-21 14:49:07 +08:00
|
|
|
|
|
2020-05-03 21:46:21 +08:00
|
|
|
|
}
|
|
|
|
|
}
|