mirror of https://github.com/abpframework/abp.git
1 changed files with 96 additions and 0 deletions
@ -0,0 +1,96 @@ |
|||||
|
using System; |
||||
|
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-picker", TagStructure = TagStructure.NormalOrSelfClosing)] |
||||
|
public class AbpDatePickerTagHelper : AbpDatePickerBaseTagHelper<AbpDatePickerTagHelper> |
||||
|
{ |
||||
|
[CanBeNull] |
||||
|
public ModelExpression AspFor { get; set; } |
||||
|
|
||||
|
public AbpDatePickerTagHelper(AbpDatePickerTagHelperService service) : base(service) |
||||
|
{ |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
public class AbpDatePickerTagHelperService : AbpDatePickerBaseTagHelperService<AbpDatePickerTagHelper> |
||||
|
{ |
||||
|
public AbpDatePickerTagHelperService(IJsonSerializer jsonSerializer, IHtmlGenerator generator, HtmlEncoder encoder, IServiceProvider serviceProvider, IStringLocalizer<AbpUiResource> l, IAbpTagHelperLocalizer tagHelperLocalizer) : base(jsonSerializer, generator, encoder, serviceProvider, l, tagHelperLocalizer) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
protected override TagHelperOutput TagHelperOutput { get; set; } |
||||
|
|
||||
|
[CanBeNull] |
||||
|
protected virtual InputTagHelper DateTagHelper { get; set; } |
||||
|
|
||||
|
[CanBeNull] |
||||
|
protected virtual TagHelperOutput DateTagHelperOutput { get; set; } |
||||
|
protected override string GetPropertyName() |
||||
|
{ |
||||
|
return TagHelper.AspFor?.Name ?? string.Empty; |
||||
|
} |
||||
|
|
||||
|
protected override T GetAttributeAndModelExpression<T>(out ModelExpression modelExpression) |
||||
|
{ |
||||
|
modelExpression = TagHelper.AspFor; |
||||
|
return modelExpression?.ModelExplorer.GetAttribute<T>(); |
||||
|
} |
||||
|
|
||||
|
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) |
||||
|
{ |
||||
|
|
||||
|
if(TagHelper.AspFor != null) |
||||
|
{ |
||||
|
DateTagHelper = new InputTagHelper(Generator) { |
||||
|
InputTypeName = "hidden", ViewContext = TagHelper.ViewContext, For = TagHelper.AspFor, |
||||
|
}; |
||||
|
var attributes = new TagHelperAttributeList { { "data-date", "true" }, { "type", "hidden" } }; |
||||
|
DateTagHelperOutput = await DateTagHelper.ProcessAndGetOutputAsync(attributes, context, "input"); |
||||
|
} |
||||
|
|
||||
|
await base.ProcessAsync(context, output); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
protected override int GetOrder() |
||||
|
{ |
||||
|
return TagHelper.AspFor?.Metadata.Order ?? 0; |
||||
|
} |
||||
|
|
||||
|
protected override void AddBaseTagAttributes(TagHelperAttributeList attributes) |
||||
|
{ |
||||
|
if(TagHelper.AspFor != null && TagHelper.AspFor.Model != null && SupportedInputTypes.TryGetValue(TagHelper.AspFor.Metadata.ModelType, out var convertFunc)) |
||||
|
{ |
||||
|
attributes.Add("data-date", convertFunc(TagHelper.AspFor.Model)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
protected override ModelExpression GetModelExpression() |
||||
|
{ |
||||
|
return TagHelper.AspFor; |
||||
|
} |
||||
|
|
||||
|
protected async override Task<string> GetValidationAsHtmlAsync(TagHelperContext context, TagHelperOutput output) |
||||
|
{ |
||||
|
return DateTagHelper != null ? await GetValidationAsHtmlByInputAsync(context, output, DateTagHelper) : string.Empty; |
||||
|
} |
||||
|
|
||||
|
protected override string GetExtraInputHtml(TagHelperContext context, TagHelperOutput output) |
||||
|
{ |
||||
|
return DateTagHelperOutput?.Render(Encoder); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue