private void OnSelectDateInternal(DateTime selectedDate, bool shouldLetOpenDatePicker)
        {
            // stop propagation - needed?
            DateTime selectedDateWithTime = selectedDate.Add(timeOfDay);

            List <DateTime>?dateRange = DateUtilities.GetDateRangeArray(selectedDate, DateRangeType, FirstDayOfWeek, WorkWeekDays);

            if (DateRangeType != DateRangeType.Day)
            {
                dateRange = GetBoundedDateRange(dateRange, MinDate, MaxDate);
            }
            dateRange = dateRange.Where(d => !GetIsRestrictedDate(d)).ToList();

            OnSelectDate.InvokeAsync(new SelectedDateResult()
            {
                Date = selectedDateWithTime, SelectedDateRange = dateRange, ShouldLetOpenDatePicker = shouldLetOpenDatePicker
            });

            // Navigate to next or previous month if needed
            if (AutoNavigateOnSelection && selectedDateWithTime.Month != NavigatedDate.Month)
            {
                int compareResult = DateTime.Compare(selectedDateWithTime.Date, NavigatedDate.Date);
                if (compareResult < 0)
                {
                    OnSelectPrevMonth();
                }
                else if (compareResult > 0)
                {
                    OnSelectNextMonth();
                }
            }
        }
Пример #2
0
        protected async Task OnSelectDateInternal(SelectedDateResult result)
        {
            SelectedDate = result.Date;
            await OnSelectDate.InvokeAsync(result);

            await ValueChanged.InvokeAsync(result.Date);

            await RangeChanged.InvokeAsync(result.SelectedDateRange);
        }
Пример #3
0
        protected async Task OnSelectDateInternal(SelectedDateResult result)
        {
            SelectedDate = result.Date;
            CascadedEditContext?.NotifyFieldChanged(FieldIdentifier);
            await OnSelectDate.InvokeAsync(result);

            await ValueChanged.InvokeAsync(result.Date);

            await RangeChanged.InvokeAsync(result.SelectedDateRange);
        }
Пример #4
0
        protected void OnSelectedDate(SelectedDateResult selectedDateResult)
        {
            //skip calendar props OnSelectedDate callback, not implemented through DatePicker

            SelectedDate  = selectedDateResult.Date;
            FormattedDate = FormatDateInternal(selectedDateResult.Date);
            ErrorMessage  = "";


            OnSelectDate.InvokeAsync(selectedDateResult.Date);
            ValueChanged.InvokeAsync(selectedDateResult.Date);

            CalendarDismissed();
        }
Пример #5
0
        protected void OnSelectedDate(SelectedDateResult selectedDateResult)
        {
            //skip calendar props OnSelectedDate callback, not implemented through DatePicker

            SelectedDate  = selectedDateResult.Date;
            FormattedDate = FormatDateInternal(selectedDateResult.Date);
            ErrorMessage  = "";

            CascadedEditContext?.NotifyFieldChanged(FieldIdentifier);
            OnSelectDate.InvokeAsync(selectedDateResult.Date);
            ValueChanged.InvokeAsync(selectedDateResult.Date);
            if (!selectedDateResult.ShouldLetOpenDatePicker)
            {
                CalendarDismissed();
            }
        }
Пример #6
0
        private void ValidateTextInput()
        {
            if (IsDatePickerShown)
            {
                return;
            }

            var inputValue = FormattedDate;

            if (AllowTextInput)
            {
                DateTime date = DateTime.MinValue;
                if (!string.IsNullOrWhiteSpace(inputValue))
                {
                    if (SelectedDate != DateTime.MinValue && FormatDate != null && FormatDateInternal(SelectedDate) == inputValue)
                    {
                        return;
                    }
                    else
                    {
                        date = ParseDateFromString(inputValue);
                        // Check if date is minvalue, or date is Invalid Date
                        if (date == DateTime.MinValue)
                        {
                            // Reset invalid input field, if formatting is available
                            if (FormatDate != null)
                            {
                                date          = SelectedDate;
                                FormattedDate = FormatDateInternal(date);
                            }
                            ErrorMessage = InvalidInputErrorMessage;
                            //StateHasChanged();
                        }
                        else
                        {
                            // Check against optional date boundaries
                            if (IsDateOutOfBounds(date, MinDate, MaxDate))
                            {
                                ErrorMessage = IsOutOfBoundsErrorMessage;
                                //StateHasChanged();
                            }
                            else
                            {
                                SelectedDate = date;
                                ErrorMessage = "";

                                // When formatting is available. If formatted date is valid, but is different from input, update with formatted date
                                // This occurs when an invalid date is entered twice
                                if (FormatDate != null && FormatDateInternal(date) != inputValue)
                                {
                                    FormattedDate = FormatDateInternal(date);
                                }
                            }
                        }
                    }
                }
                else
                {
                    ErrorMessage = IsRequired ? IsRequiredErrorMessage : "";
                }

                OnSelectDate.InvokeAsync(date);
                ValueChanged.InvokeAsync(date);
            }
            else if (IsRequired && string.IsNullOrWhiteSpace(inputValue))
            {
                ErrorMessage = IsRequiredErrorMessage;
            }
        }