mirror of
https://gitee.com/ant-design-blazor/ant-design-blazor.git
synced 2024-12-15 01:11:52 +08:00
080d4dda43
* feat: table column sort add sortway support singleness or mutiple * fix: error method name * add sort directions * delete useless property Co-authored-by: ElderJames <shunjiey@hotmail.com>
114 lines
4.0 KiB
C#
114 lines
4.0 KiB
C#
@namespace AntDesign
|
|
@inherits AntDomComponentBase
|
|
@using AntDesign.Internal
|
|
|
|
<div class="@(PrefixCls)-header"
|
|
style="@Style"
|
|
id="@Id"
|
|
@ref="@Ref">
|
|
@{
|
|
int startYear = Calendar.Value.AddYears(-10).Year;
|
|
int endYear = Calendar.Value.AddYears(10).Year;
|
|
|
|
if (Calendar.ValidRange != null)
|
|
{
|
|
startYear = Calendar.ValidRange[0].Year;
|
|
endYear = Calendar.ValidRange[1].Year;
|
|
}
|
|
|
|
string yearFormat = Calendar.Locale.Lang.YearFormat;
|
|
}
|
|
<Select Class=@($"{PrefixCls}-year-select")
|
|
@bind-Value="@_yearValue"
|
|
Size=@(Calendar.FullScreen ? AntSizeLDSType.Default : AntSizeLDSType.Small)
|
|
DefaultValue=@Calendar.Value.Year
|
|
TItemValue="int"
|
|
TItem="string"
|
|
Style="width: 70px;"
|
|
SortByLabel="@SortDirection.Ascending"
|
|
OnSelectedItemChanged="@(async (item) => await OnSelectYear(item))">
|
|
<SelectOptions>
|
|
@for (int year = startYear; year <= endYear; year++)
|
|
{
|
|
DateTime yearDate = new DateTime(year, 1, 1);
|
|
<SelectOption @key="@yearDate.Year" TItemValue="int" TItem="string" Value=@yearDate.Year Label="@(yearDate.ToString(yearFormat, Calendar.CultureInfo))" />
|
|
}
|
|
</SelectOptions>
|
|
</Select>
|
|
|
|
@if (Calendar.Mode == DatePickerType.Month)
|
|
{
|
|
int startMonth = 1;
|
|
int endMonth = 12;
|
|
|
|
if (Calendar.ValidRange != null)
|
|
{
|
|
startMonth = Calendar.Value.Year == Calendar.ValidRange[0].Year ? Calendar.ValidRange[0].Month : startMonth;
|
|
endMonth = Calendar.Value.Year == Calendar.ValidRange[1].Year ? Calendar.ValidRange[1].Month : endMonth;
|
|
}
|
|
|
|
string monthFormat = Calendar.Locale.Lang.MonthFormat;
|
|
|
|
<Select class=@($"{PrefixCls}-month-select")
|
|
@bind-Value="@_monthValue"
|
|
Size=@(Calendar.FullScreen ? AntSizeLDSType.Default : AntSizeLDSType.Small)
|
|
DefaultValue=@Calendar.Value.Month
|
|
Style="width: 70px;"
|
|
TItemValue="int"
|
|
TItem="string"
|
|
OnSelectedItemChanged="@(async (item) => await OnSelectMonth(item))">
|
|
<SelectOptions>
|
|
@for (int month = startMonth; month <= endMonth; month++)
|
|
{
|
|
DateTime monthDate = new DateTime(1, month, 1);
|
|
<SelectOption @key="@monthDate.Month" TItemValue="int" TItem="string" Value=@monthDate.Month Label="@(monthDate.ToString(monthFormat, Calendar.CultureInfo))" />
|
|
}
|
|
</SelectOptions>
|
|
</Select>
|
|
}
|
|
|
|
<RadioGroup class=@($"{PrefixCls}-mode-switch")
|
|
Size=@(Calendar.FullScreen ? AntSizeLDSType.Default : AntSizeLDSType.Small)
|
|
Value="@Calendar.Mode"
|
|
OnChange="OnModeChange" TValue="string">
|
|
<Radio RadioButton Value="@DatePickerType.Month">@(Calendar.Locale.Lang.Month)</Radio>
|
|
<Radio RadioButton Value="@DatePickerType.Year">@(Calendar.Locale.Lang.Year)</Radio>
|
|
</RadioGroup>
|
|
</div>
|
|
|
|
@code
|
|
{
|
|
[CascadingParameter(Name = "PrefixCls")]
|
|
public string PrefixCls { get; set; }
|
|
|
|
[CascadingParameter(Name = "Calendar")]
|
|
public Calendar Calendar { get; set; }
|
|
|
|
private DateTime currentDate;
|
|
private int _yearValue;
|
|
private int _monthValue;
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
base.OnInitialized();
|
|
|
|
currentDate = Calendar.Value;
|
|
}
|
|
|
|
private void OnModeChange(string value)
|
|
{
|
|
Calendar.ChangePickerType(value);
|
|
}
|
|
|
|
private async Task OnSelectYear(string value)
|
|
{
|
|
int year = Convert.ToInt32(value);
|
|
await Calendar.ChangeValue(DateHelper.CombineNewDate(Calendar.Value, year: year));
|
|
}
|
|
|
|
private async Task OnSelectMonth(string value)
|
|
{
|
|
int month = Convert.ToInt32(value);
|
|
await Calendar.ChangeValue(DateHelper.CombineNewDate(Calendar.Value, month: month));
|
|
}
|
|
} |