Declined
Last Updated: 20 Mar 2020 08:01 by ADMIN

I'm making a wrapper on top of TelerikDatePicker and this is how my component is working

<TelerikDatePicker T="TDate"
                   Value="@_value"
                   ValueChanged="@ValueChanged"
                   ValueExpression="@ValueExpression"
                   Enabled="@Enabled"
                   Class="@ClassMapper.AsString()"
                   Format="@Format" />

@code {

    // ... the other properties

    [Parameter]
    public virtual string Format { get; set; }

}

But here is the problem. This component will give me the error

Error: System.AggregateException: One or more errors occurred. (Value cannot be null. (Parameter 'input'))
 ---> System.ArgumentNullException: Value cannot be null. (Parameter 'input')
   at System.Text.RegularExpressions.Regex.Replace(String input, String replacement)
   at System.Text.RegularExpressions.Regex.Replace(String input, String pattern, String replacement)
   at Telerik.Blazor.Common.DateHelpers.FormatHelper.ExpandFormat(String format)
   at Telerik.Blazor.Common.DateHelpers.FormatHelper.ConvertToKendoIntl(String format)
   at Telerik.Blazor.Components.TelerikDateInputBase`1.GetDateInputOptions()
   at Telerik.Blazor.Components.TelerikDateInputBase`1.OnAfterRenderAsync(Boolean firstRender)

 

So another solution would be set it to string.Empty, but than it will have a different result when I don't pass the Format property.

 

Here are the cases:

    [Parameter]
    public virtual string Format { get; set; } // gives the error

 

    [Parameter]
    public virtual string Format { get; set; } = ""; // doesn't give the default result

 

I had to make a walkaround to not pass Format to the component for it to work

@if (!string.IsNullOrEmpty(Format))
{
    <TelerikDatePicker T="TDate"
                       Value="@_value"
                       ValueChanged="@ValueChanged"
                       ValueExpression="@ValueExpression"
                       Enabled="@Enabled"
                       Class="@ClassMapper.AsString()"
                       Format="@Format" />
}
else
{
    <TelerikDatePicker T="TDate"
                       Value="@_value"
                       ValueChanged="@ValueChanged"
                       ValueExpression="@ValueExpression"
                       Enabled="@Enabled"
                       Class="@ClassMapper.AsString()" />
}

 

What should I set as a default value to my wrapper's Format property so it doesn't give me the error and also get's the default value of Format?

 

Please don't say that I should keep the @if (!string.IsNullOrEmpty(Format)), it's so bad and I don't want to use telerik and still have to make walkarounds.

Declined
Last Updated: 23 Apr 2021 07:19 by ADMIN
Created by: Marc Simkin
Comments: 1
Category: DatePicker
Type: Feature Request
1

Currently, when dates need to be disable in the DatePicker and DateRangePicker, a collection of induvial dates are provided.  As a result, when I need to disable a 90 day or 180 day continuous range I need to add to the collection 90 or 180 day individual DateTime objects.

It would be more efficient to provide a range of dates to disable instead of induvial dates.

The DisabledDates should accept a collection of DisableDateItems that is similar to the below:

public class DisableDateItem
{
     public DateTime RangeBegin { get; set; }
     public DateTime RangeEnd { get; set; }
}

Using this collection I can disable an individual date by having the RangeBegin and RangeEnd dates be the same, as shown below:

var bankHoliday = new DisableDateTime
{
       RangeBegin = new DateTime(2021, 09, 01),
       RangeEnd = new DateTime(2021, 09, 01)
};


To disable a date range, for example the Eastern Good Friday Weekend, I would provide a DisableDateTime as:

var bankHoliday = new DisableDateTime
{
       RangeBegin = new DateTime(2021, 04, 30),
       RangeEnd = new DateTime(2021, 05, 02)
};

To disable a 90 day range, I would provide a DisableDateTime object as:

var bankHoliday = new DisableDateTime
{
       RangeBegin = new DateTime(2021, 05, 01),
       RangeEnd = new DateTime(2021, 07, 30)
};
Declined
Last Updated: 20 Jan 2022 16:26 by ADMIN

DateInput shows minvalue by default when bound to a nullable DateTime with value null. While this might not be a bug, in almost all cases, it would be much better to have the default value set to DateTime.Now rather than DateTime.Min which seem to be the case today. 

 

Declined
Last Updated: 08 Jan 2021 12:52 by René

If I set a Min-Date like this:

<TelerikDatePicker @bind-Value="myDate"
                                    Format="dd.MM.yyyy"
                                    Min="@DateTime.Today.AddDays(1)">
 </TelerikDatePicker>

clicking on the "Today" link in the calendar does not do anything!

 

If I don't set Min then a click on "Today" correctly sets the current date.

Regards,

René