DatePicker - Index update binding beacuse of the name changes
This commit is contained in:
		
							parent
							
								
									92f42169fa
								
							
						
					
					
						commit
						978dd7ad85
					
				@ -20,7 +20,7 @@
 | 
				
			|||||||
</FormWizard>
 | 
					</FormWizard>
 | 
				
			||||||
<DatePicker 
 | 
					<DatePicker 
 | 
				
			||||||
CloseOnDateSelect=true
 | 
					CloseOnDateSelect=true
 | 
				
			||||||
@bind-Date=@date>
 | 
					@bind-SelectedDate=@date>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</DatePicker>
 | 
					</DatePicker>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,79 +0,0 @@
 | 
				
			|||||||
@using System.Globalization;
 | 
					 | 
				
			||||||
@if (loaded)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    <TextInput Value="@SelectedDate.ToString(Format)" Readonly="_readonly"></TextInput>
 | 
					 | 
				
			||||||
    @if (Shown)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <div id="picker" class="m-2" style="width:270px; height:auto;">
 | 
					 | 
				
			||||||
            <div id="picker_header" class="bg-info" style="height:80px;">
 | 
					 | 
				
			||||||
                <div class="text-medium p-1">
 | 
					 | 
				
			||||||
                    @SelectedDate.Year.ToString()
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <div class="text-large p-1">
 | 
					 | 
				
			||||||
                    @SelectedDate.ToString("ddd, " + Format)
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div id="picker_body" class="bg-white" style="height:auto;">
 | 
					 | 
				
			||||||
                @switch (Selecting)
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    case Selecting.Years:
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            <div class="text-justify text-md-justify">
 | 
					 | 
				
			||||||
                                <div class="d-inline-block p-2" style="width:10%;text-align:left"><i class='bx bx-chevron-left'></i></div>
 | 
					 | 
				
			||||||
                                <div class="d-inline-block" style="width:70%;text-align:center" @onclick=@(()=>Selecting = Selecting.Days)>@SelectedDate.ToString("yyyy")</div>
 | 
					 | 
				
			||||||
                                <div class="d-inline-block p-2" style="width:10%;text-align:right"><i class='bx bx-chevron-right'></i></div>
 | 
					 | 
				
			||||||
                            </div>
 | 
					 | 
				
			||||||
                            break;
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    case Selecting.Months:
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            <div class="text-justify text-md-justify">
 | 
					 | 
				
			||||||
                                <div class="d-inline-block p-2" style="width:10%;text-align:left"><i class='bx bx-chevron-left'></i></div>
 | 
					 | 
				
			||||||
                                <div class="d-inline-block" style="width:70%;text-align:center" @onclick=@(()=>Selecting = Selecting.Years)>@SelectedDate.ToString("yyyy")</div>
 | 
					 | 
				
			||||||
                                <div class="d-inline-block p-2" style="width:10%;text-align:right"><i class='bx bx-chevron-right'></i></div>
 | 
					 | 
				
			||||||
                            </div>
 | 
					 | 
				
			||||||
                                @for (int i = 1; i <= @DateTimeFormatInfo.CurrentInfo.MonthNames.Length - 1; i++)
 | 
					 | 
				
			||||||
                                {
 | 
					 | 
				
			||||||
                                    int m = i;
 | 
					 | 
				
			||||||
                                    <a href="#" @onclick="@(()=>SetMonth(m))">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                    <div class="chip-group-content d-inline-flex bg-core @MonthChipClass(m) m-1 b-1 b-r-3 text-light" style="width:30%;">
 | 
					 | 
				
			||||||
                                            <div class="chip-leading-icon"></div>
 | 
					 | 
				
			||||||
                                            <div class="chip-label">@DateTimeFormatInfo.CurrentInfo.GetMonthName(i).Substring(0,3)</div>
 | 
					 | 
				
			||||||
                                            <div class="chip-cta-icon"></div>
 | 
					 | 
				
			||||||
                                        </div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                    </a>
 | 
					 | 
				
			||||||
                                    if (i%3==0) { <br/> }
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            break;
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    case (Selecting.Days):
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            <div class="text-justify text-md-justify">
 | 
					 | 
				
			||||||
                                <div class="d-inline-block p-2" style="width:10%;text-align:left"><i class='bx bx-chevron-left'></i></div>
 | 
					 | 
				
			||||||
                                <div class="d-inline-block" style="width:70%;text-align:center" @onclick=@(()=>Selecting = Selecting.Months)>@SelectedDate.ToString("MMMM")</div>
 | 
					 | 
				
			||||||
                                <div class="d-inline-block p-2" style="width:10%;text-align:right"><i class='bx bx-chevron-right'></i></div>
 | 
					 | 
				
			||||||
                            </div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            @for (int i = 0; i < 7; i++)
 | 
					 | 
				
			||||||
                            {
 | 
					 | 
				
			||||||
                                <div class="chip-leading-icon d-inline-block p-1 m-1 bg-danger text-small text-light" style="width:30px; height:30px; text-align:center">@calendarStart.AddDays(i).ToString("ddd").Substring(0,1).ToUpper()</div>
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                            @foreach (var Date in Dates)
 | 
					 | 
				
			||||||
                            {
 | 
					 | 
				
			||||||
                                <a href="#" @onclick="@(()=>SetDate(Date))"><div class="chip-leading-icon d-inline-block p-1 m-1 @DateChipStyle(Date)" style="width:30px; height:30px; text-align:center">@Date.Day.ToString()</div></a>
 | 
					 | 
				
			||||||
                                @if (calendarStart.DayOfWeek.Equals(DayOfWeek.Sunday))
 | 
					 | 
				
			||||||
                                {
 | 
					 | 
				
			||||||
                                    <br />
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                calendarStart = calendarStart.AddDays(1);
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                            break;
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,162 +0,0 @@
 | 
				
			|||||||
using Connected.Utilities;
 | 
					 | 
				
			||||||
using Microsoft.AspNetCore.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace Connected.Components.DatePicker;
 | 
					 | 
				
			||||||
public partial class DatePicker
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	private bool loaded = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private Selecting Selecting = Selecting.Days;
 | 
					 | 
				
			||||||
	public DateTime calendarStart { get; set; }
 | 
					 | 
				
			||||||
	public DateTime calendarEnd { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	//private DateTime Today = DateTime.Today;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private DateTime SelectedDate = DateTime.Today;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private List<DateTime> Dates = new List<DateTime>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	[Parameter]
 | 
					 | 
				
			||||||
	public string Format { get; set; } = "dd.MM.yyyy";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private bool _readonly = false;
 | 
					 | 
				
			||||||
	[Parameter]
 | 
					 | 
				
			||||||
	public bool Editable
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		get
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return !_readonly;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		set
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			_readonly = !value;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	[Parameter]
 | 
					 | 
				
			||||||
	public bool Shown { get; set; } = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void SetMonthNavigation()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void SetDate(DateTime Date)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		SelectedDate = Date;
 | 
					 | 
				
			||||||
		SetStartStop();
 | 
					 | 
				
			||||||
		StateHasChanged();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void SetMonth(int month)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		SelectedDate = new DateTime(SelectedDate.Year, month, SelectedDate.Day);
 | 
					 | 
				
			||||||
		SetStartStop();
 | 
					 | 
				
			||||||
		StateHasChanged();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private string ChipFirstRowClass
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		get
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return new CssBuilder()
 | 
					 | 
				
			||||||
				.AddClass("chip-leading-icon d-inline-block p-1 bg-danger text-small text-light")
 | 
					 | 
				
			||||||
				.Build();
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	private string ChipFirstRowStyle
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		get
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return new StyleBuilder()
 | 
					 | 
				
			||||||
				.AddStyle("width", "30px")
 | 
					 | 
				
			||||||
				.AddStyle("height", "30px")
 | 
					 | 
				
			||||||
				.AddStyle("text-align", "center")
 | 
					 | 
				
			||||||
				.Build();
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 @for (int i=0;i<7; i++)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                <div class="chip-leading-icon d-inline-block p-1 bg-danger text-small text-light" style="width:30px; height:30px; text-align:center">@calendarStart.AddDays(i).ToString("ddd").Substring(0,1)</div>
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            @while (calendarStart.CompareTo(calendarEnd) < 0)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                <a href="#" @onclick="@(()=>SetDate(calendarStart))"><div class="chip-leading-icon d-inline-block p-1 @ChipStyle(calendarStart)" style="width:30px; height:30px; text-align:center">@calendarStart.Day.ToString()</div></a>
 | 
					 | 
				
			||||||
                @if (calendarStart.DayOfWeek.Equals(DayOfWeek.Sunday))
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    <br />
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                calendarStart = calendarStart.AddDays(1);
 | 
					 | 
				
			||||||
            } 
 | 
					 | 
				
			||||||
	 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void SetStartStop()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		calendarStart = SelectedDate;
 | 
					 | 
				
			||||||
		while (calendarStart.Day != 1)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			calendarStart = calendarStart.AddDays(-1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		while (!calendarStart.DayOfWeek.Equals(DayOfWeek.Monday))
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			calendarStart = calendarStart.AddDays(-1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		calendarEnd = SelectedDate;
 | 
					 | 
				
			||||||
		while (calendarEnd.Month == SelectedDate.Month)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			calendarEnd = calendarEnd.AddDays(1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		while (!calendarEnd.DayOfWeek.Equals(DayOfWeek.Monday))
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			calendarEnd = calendarEnd.AddDays(1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		DateTime start = calendarStart;
 | 
					 | 
				
			||||||
		if (Dates is null) Dates = new();
 | 
					 | 
				
			||||||
		Dates.Clear();
 | 
					 | 
				
			||||||
		while (start.CompareTo(calendarEnd) < 0)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			Dates.Add(start);
 | 
					 | 
				
			||||||
			start = start.AddDays(1);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public string DateChipStyle(DateTime date)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		string result = "";
 | 
					 | 
				
			||||||
		if (date.Month.CompareTo(SelectedDate.Month) < 0 || date.Month.CompareTo(SelectedDate.Month) > 0) return "bg-core text-light";
 | 
					 | 
				
			||||||
		if (date.Month.CompareTo(SelectedDate.Month) == 0)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			if (date.Date.CompareTo(SelectedDate.Date) == 0)
 | 
					 | 
				
			||||||
				return "bg-info text-light";
 | 
					 | 
				
			||||||
			else
 | 
					 | 
				
			||||||
				return "bg-core text-dark";
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return result;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public string MonthChipClass(int month)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		if (month.CompareTo(SelectedDate.Month) == 0)
 | 
					 | 
				
			||||||
			return "bg-info text-light";
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			return "bg-core text-dark";
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	protected override async Task OnInitializedAsync()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		SelectedDate = DateTime.Today;
 | 
					 | 
				
			||||||
		SetStartStop();
 | 
					 | 
				
			||||||
		loaded = true;
 | 
					 | 
				
			||||||
		await base.OnInitializedAsync();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public enum Selecting
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	Days,
 | 
					 | 
				
			||||||
	Months,
 | 
					 | 
				
			||||||
	Years
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user