using System; using System.Collections.Generic; using System.Globalization; using AntDesign.Internal; using Microsoft.AspNetCore.Components; namespace AntDesign { public class DatePickerPanelBase : PickerPanelBase { [CascadingParameter] public IDatePicker DatePicker { get; set; } [Parameter] public string PrefixCls { get; set; } [Parameter] public string Picker { get; set; } [Parameter] public bool IsRange { get; set; } = false; [Parameter] public bool IsCalendar { get; set; } = false; [Parameter] public bool IsShowHeader { get; set; } = true; [Parameter] public DatePickerLocale Locale { get; set; } [Parameter] public CultureInfo CultureInfo { get; set; } [Parameter] public Action ClosePanel { get; set; } [Parameter] public Action ChangePickerValue { get; set; } //nullable int as picker index is no longer needed here unless forced [Parameter] public Action ChangeValue { get; set; } [Parameter] public Action ChangePickerType { get; set; } [Parameter] public Func GetIndexPickerValue { get; set; } [Parameter] public Func GetIndexValue { get; set; } [Parameter] public Func DisabledDate { get; set; } = null; /// /// for Calendar.DateFullCellRender、DatePicker.DateRender /// [Parameter] public Func DateRender { get; set; } /// /// for Calendar.MonthFullCellRender、DatePicker.MonthCellRender /// [Parameter] public Func MonthCellRender { get; set; } /// /// for Calendar.DateCellRender /// [Parameter] public Func CalendarDateRender { get; set; } /// /// for Calendar.MonthCellRender /// [Parameter] public Func CalendarMonthCellRender { get; set; } [Parameter] public RenderFragment RenderExtraFooter { get; set; } protected Dictionary GetAttritubes() { return new Dictionary() { { "PrefixCls", PrefixCls }, { "Picker", Picker }, { "Locale", Locale }, { "CultureInfo", CultureInfo }, { "ClosePanel", ClosePanel }, { "ChangePickerValue", ChangePickerValue }, { "ChangeValue", ChangeValue }, { "ChangePickerType", ChangePickerType }, { "GetIndexPickerValue", GetIndexPickerValue }, { "GetIndexValue", GetIndexValue }, { "DisabledDate", DisabledDate }, { "DateRender", DateRender }, { "MonthCellRender", MonthCellRender }, { "CalendarDateRender", CalendarDateRender }, { "CalendarMonthCellRender", CalendarMonthCellRender }, { "RenderExtraFooter", RenderExtraFooter }, { "IsRange", IsRange }, { "PickerIndex", PickerIndex }, { "IsCalendar", IsCalendar }, { "IsShowHeader", IsShowHeader }, }; } protected void OnSelectTime(DateTime date) { OnSelect?.Invoke(date, PickerIndex); } protected void OnSelectDate(DateTime date) { OnSelect?.Invoke(CombineNewShowDate(year: date.Year, month: date.Month, day: date.Day), PickerIndex); } protected void OnSelectYear(DateTime date) { OnSelect?.Invoke(CombineNewShowDate(year: date.Year), PickerIndex); } protected void OnSelectQuarter(DateTime date) { OnSelect?.Invoke(CombineNewShowDate(month: date.Month), PickerIndex); } protected void OnSelectMonth(DateTime date) { OnSelect?.Invoke(CombineNewShowDate(month: date.Month), PickerIndex); } protected void OnSelectDay(DateTime date) { OnSelect?.Invoke(CombineNewShowDate(day: date.Day), PickerIndex); } protected void OnSelectHour(DateTime date) { OnSelect?.Invoke(CombineNewShowDate(hour: date.Hour), PickerIndex); } protected void OnSelectMinute(DateTime date) { OnSelect?.Invoke(CombineNewShowDate(minute: date.Minute), PickerIndex); } protected void OnSelectSecond(DateTime date) { OnSelect?.Invoke(CombineNewShowDate(second: date.Second), PickerIndex); } protected void OnSelectShowYear(DateTime date) { ChangePickerValue(CombineNewShowDate(year: date.Year), PickerIndex); } protected void OnSelectShowMonth(DateTime date) { ChangePickerValue(CombineNewShowDate(month: date.Month), PickerIndex); } protected void OnSelectShowDay(DateTime date) { ChangePickerValue(CombineNewShowDate(day: date.Day), PickerIndex); } protected DateTime CombineNewShowDate( int? year = null, int? month = null, int? day = null, int? hour = null, int? minute = null, int? second = null) { return DateHelper.CombineNewDate( PickerValue, year, month, day, hour, minute, second ); } protected void ChangePickerYearValue(int interval) { ChangePickerValue(DateHelper.AddYearsSafely(PickerValue, interval), null); } protected void ChangePickerMonthValue(int interval) { ChangePickerValue(DateHelper.AddMonthsSafely(PickerValue, interval), null); } protected void Close() { ClosePanel?.Invoke(); } protected DateTime PickerValue { get => GetIndexPickerValue(PickerIndex); } protected DateTime Value { get => GetIndexValue(PickerIndex) ?? DateTime.Now; } public void PopUpPicker(string type) { ChangePickerType(type, PickerIndex); } protected override void OnInitialized() { base.OnInitialized(); ClassMapper.Add($"{PrefixCls}-panel") .If($"{PrefixCls}-panel-rtl", () => RTL); } } }