Create AbpDateRangePicker.cs

pull/15806/head
Salih 3 years ago
parent e204c4e13a
commit d7d4c0cc3c

@ -0,0 +1,146 @@
using System;
using System.Linq;
using System.Text;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Localization.Resources.AbpUi;
using Microsoft.AspNetCore.Mvc.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Microsoft.Extensions.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions;
using Volo.Abp.Json;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.DatePicker;
[HtmlTargetElement("abp-date-range-picker", TagStructure = TagStructure.NormalOrSelfClosing)]
public class AbpDateRangePickerTagHelper : AbpDatePickerBaseTagHelper<AbpDateRangePickerTagHelper>
{
// Start date
[CanBeNull]
public ModelExpression AspForStart { get; set; }
// End date
[CanBeNull]
public ModelExpression AspForEnd { get; set; }
public AbpDateRangePickerTagHelper(AbpDateRangePickerTagHelperService tagHelperService) : base(tagHelperService)
{
}
}
public class AbpDateRangePickerTagHelperService : AbpDatePickerBaseTagHelperService<AbpDateRangePickerTagHelper>
{
public AbpDateRangePickerTagHelperService(IJsonSerializer jsonSerializer, IHtmlGenerator generator,
HtmlEncoder encoder, IServiceProvider serviceProvider, IStringLocalizer<AbpUiResource> l,
IAbpTagHelperLocalizer tagHelperLocalizer) : base(jsonSerializer, generator, encoder, serviceProvider, l,
tagHelperLocalizer)
{
}
protected override string TagName { get; set; } = "abp-date-range-picker";
protected override T GetAttributeAndModelExpression<T>(out ModelExpression modelExpression)
{
modelExpression =
new[] { TagHelper.AspForStart, TagHelper.AspForEnd }.FirstOrDefault(x =>
x?.ModelExplorer?.GetAttribute<T>() != null);
return modelExpression?.ModelExplorer.GetAttribute<T>();
}
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
if (TagHelper.AspForStart != null)
{
var startDateAttributes =
new TagHelperAttributeList { { "data-start-date", "true" }, { "type", "hidden" } };
StartDateTagHelper = new InputTagHelper(Generator) {
ViewContext = TagHelper.ViewContext, For = TagHelper.AspForStart, InputTypeName = "hidden"
};
StartDateTagHelperOutput =
await StartDateTagHelper.ProcessAndGetOutputAsync(startDateAttributes, context, "input");
}
if (TagHelper.AspForEnd != null)
{
var endDateAttributes = new TagHelperAttributeList { { "data-end-date", "true" }, { "type", "hidden" } };
EndDateTagHelper = new InputTagHelper(Generator) {
ViewContext = TagHelper.ViewContext, For = TagHelper.AspForEnd,InputTypeName = "hidden"
};
EndDateTagHelperOutput =
await EndDateTagHelper.ProcessAndGetOutputAsync(endDateAttributes, context, "input");
}
await base.ProcessAsync(context, output);
}
protected override TagHelperOutput TagHelperOutput { get; set; }
[CanBeNull]
protected virtual InputTagHelper StartDateTagHelper { get; set; }
[CanBeNull]
protected virtual TagHelperOutput StartDateTagHelperOutput { get; set; }
[CanBeNull]
protected virtual InputTagHelper EndDateTagHelper { get; set; }
[CanBeNull]
protected virtual TagHelperOutput EndDateTagHelperOutput { get; set; }
protected override string GetPropertyName()
{
return TagHelper.AspForStart?.Name ?? string.Empty;
}
protected override int GetOrder()
{
return TagHelper.Order;
}
protected override void AddBaseTagAttributes(TagHelperAttributeList attributes)
{
if (TagHelper.AspForStart != null && TagHelper.AspForStart.Model != null &&
SupportedInputTypes.TryGetValue(TagHelper.AspForStart.Metadata.ModelType, out var convertFuncStart))
{
attributes.Add("data-start-date", convertFuncStart(TagHelper.AspForStart.Model));
}
if (TagHelper.AspForEnd != null && TagHelper.AspForEnd.Model != null &&
SupportedInputTypes.TryGetValue(TagHelper.AspForEnd.Metadata.ModelType, out var convertFuncEnd))
{
attributes.Add("data-end-date", convertFuncEnd(TagHelper.AspForEnd.Model));
}
}
protected override string GetExtraInputHtml(TagHelperContext context, TagHelperOutput output)
{
return StartDateTagHelperOutput?.Render(Encoder) + EndDateTagHelperOutput?.Render(Encoder);
}
protected override ModelExpression GetModelExpression()
{
return TagHelper.AspForStart;
}
protected async override Task<string> GetValidationAsHtmlAsync(TagHelperContext context, TagHelperOutput output)
{
var validationHtml = string.Empty;
if (StartDateTagHelper != null)
{
validationHtml += await GetValidationAsHtmlByInputAsync(context, output, StartDateTagHelper);
}
if (EndDateTagHelper != null)
{
validationHtml += await GetValidationAsHtmlByInputAsync(context, output, EndDateTagHelper);
}
return validationHtml;
}
}
Loading…
Cancel
Save