From a4bbf9e4809879980975d76bd03270f4ed578011 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 15 Nov 2018 14:27:42 +0300 Subject: [PATCH] Added ReadOnlyInput and DisabledInput attributes to tag helpers --- .../Form/AbpInputTagHelperService.cs | 34 +++++++++++++++---- .../Form/AbpSelectTagHelperService.cs | 11 ++++++ .../TagHelpers/Form/DisabledInput.cs | 15 ++++++++ .../TagHelpers/Form/ReadOnlyInput.cs | 15 ++++++++ 4 files changed, 68 insertions(+), 7 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DisabledInput.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/ReadOnlyInput.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs index 8f687e6932..954619733b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs @@ -120,21 +120,41 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form var inputTagHelperOutput = GetInnerTagHelper(GetInputAttributes(context, output), context, tagHelper, "input"); ConvertToTextAreaIfTextArea(inputTagHelperOutput); + AddDisabledAttribute(inputTagHelperOutput); + AddReadOnlyAttribute(inputTagHelperOutput); + AddAutoFocusAttribute(inputTagHelperOutput); + isCheckbox = IsInputCheckbox(context, output, inputTagHelperOutput.Attributes); + inputTagHelperOutput.Attributes.AddClass(isCheckbox ? "form-check-input" : "form-control"); - if (TagHelper.IsDisabled && !inputTagHelperOutput.Attributes.ContainsName("disabled")) - { - inputTagHelperOutput.Attributes.Add("disabled", "true"); - } + return inputTagHelperOutput; + } + protected virtual void AddAutoFocusAttribute(TagHelperOutput inputTagHelperOutput) + { if (TagHelper.AutoFocus && !inputTagHelperOutput.Attributes.ContainsName("data-auto-focus")) { inputTagHelperOutput.Attributes.Add("data-auto-focus", "true"); } + } - isCheckbox = IsInputCheckbox(context, output, inputTagHelperOutput.Attributes); - inputTagHelperOutput.Attributes.AddClass(isCheckbox ? "form-check-input" : "form-control"); + protected virtual void AddDisabledAttribute(TagHelperOutput inputTagHelperOutput) + { + var disabledAttribute = GetAttribute(TagHelper.AspFor.ModelExplorer); - return inputTagHelperOutput; + if (disabledAttribute != null && !inputTagHelperOutput.Attributes.ContainsName("disabled")) + { + inputTagHelperOutput.Attributes.Add("disabled", ""); + } + } + + protected virtual void AddReadOnlyAttribute(TagHelperOutput inputTagHelperOutput) + { + var readOnlyAttribute = GetAttribute(TagHelper.AspFor.ModelExplorer); + + if (readOnlyAttribute != null && !inputTagHelperOutput.Attributes.ContainsName("readonly")) + { + inputTagHelperOutput.Attributes.Add("readonly", ""); + } } protected virtual bool IsInputCheckbox(TagHelperContext context, TagHelperOutput output, TagHelperAttributeList attributes) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs index 793ee5aa00..8607348fff 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs @@ -71,10 +71,21 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form var inputTagHelperOutput = GetInnerTagHelper(new TagHelperAttributeList(), context, selectTagHelper, "select", TagMode.StartTagAndEndTag); inputTagHelperOutput.Attributes.Add("class", "form-control"); + AddDisabledAttribute(inputTagHelperOutput); return inputTagHelperOutput; } + protected virtual void AddDisabledAttribute(TagHelperOutput inputTagHelperOutput) + { + var disabledAttribute = GetAttribute(TagHelper.AspFor.ModelExplorer); + + if (disabledAttribute != null && !inputTagHelperOutput.Attributes.ContainsName("disabled")) + { + inputTagHelperOutput.Attributes.Add("disabled", ""); + } + } + protected virtual List GetSelectItems(TagHelperContext context, TagHelperOutput output) { var selectItems = TagHelper.AspItems?.ToList(); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DisabledInput.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DisabledInput.cs new file mode 100644 index 0000000000..f43754cc22 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DisabledInput.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +{ + [AttributeUsage(AttributeTargets.Property)] + public class DisabledInput : Attribute + { + public DisabledInput() + { + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/ReadOnlyInput.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/ReadOnlyInput.cs new file mode 100644 index 0000000000..6cef8594b3 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/ReadOnlyInput.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +{ + [AttributeUsage(AttributeTargets.Property)] + public class ReadOnlyInput : Attribute + { + public ReadOnlyInput() + { + } + } +}