From cf3f8e6042a7fa423f2d2c48ce227e3ae1bc4974 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 19 Dec 2018 10:54:33 +0300 Subject: [PATCH] added size for input tag helpers --- .../TagHelpers/Form/AbpFormControlSize.cs | 15 +++++++++++ .../TagHelpers/Form/AbpInputTagHelper.cs | 2 ++ .../Form/AbpInputTagHelperService.cs | 24 +++++++++++++++++- .../TagHelpers/Form/AbpSelectTagHelper.cs | 2 ++ .../Form/AbpSelectTagHelperService.cs | 25 ++++++++++++++++++- .../TagHelpers/Form/FormControlSize.cs | 18 +++++++++++++ 6 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormControlSize.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormControlSize.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormControlSize.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormControlSize.cs new file mode 100644 index 0000000000..97acb45822 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormControlSize.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 +{ + public enum AbpFormControlSize + { + Default, + Small, + Medium, + Large + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs index de93ff4b1d..30a6a11d39 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs @@ -18,6 +18,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form public bool AutoFocus { get; set; } + public AbpFormControlSize Size { get; set; } = AbpFormControlSize.Default; + [HtmlAttributeNotBound] [ViewContext] public ViewContext ViewContext { get; set; } 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 b5abe780ae..e31a2c8100 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 @@ -124,7 +124,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form AddReadOnlyAttribute(inputTagHelperOutput); AddAutoFocusAttribute(inputTagHelperOutput); isCheckbox = IsInputCheckbox(context, output, inputTagHelperOutput.Attributes); - inputTagHelperOutput.Attributes.AddClass(isCheckbox ? "form-check-input" : "form-control"); + inputTagHelperOutput.Attributes.AddClass(isCheckbox ? "form-check-input" : "form-control" + " " + GetSize(context,output)); return inputTagHelperOutput; } @@ -254,5 +254,27 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form output.Attributes.Add(newAttritube); } } + + protected virtual string GetSize(TagHelperContext context, TagHelperOutput output) + { + var attribute = GetAttribute(TagHelper.AspFor.ModelExplorer); + + if (attribute != null) + { + TagHelper.Size = attribute.Size; + } + + switch (TagHelper.Size) + { + case AbpFormControlSize.Small: + return "form-control-sm"; + case AbpFormControlSize.Medium: + return "form-control-md"; + case AbpFormControlSize.Large: + return "form-control-lg"; + } + + return ""; + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs index 889fe4208d..3cb2fd4667 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs @@ -13,6 +13,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form public IEnumerable AspItems { get; set; } + public AbpFormControlSize Size { get; set; } = AbpFormControlSize.Default; + [HtmlAttributeNotBound] [ViewContext] public ViewContext ViewContext { get; set; } 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 8607348fff..ad5b4c62cf 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 @@ -70,7 +70,8 @@ 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"); + inputTagHelperOutput.Attributes.AddClass("form-control"); + inputTagHelperOutput.Attributes.AddClass(GetSize(context,output)); AddDisabledAttribute(inputTagHelperOutput); return inputTagHelperOutput; @@ -170,5 +171,27 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form return RenderTagHelper(new TagHelperAttributeList(), context, labelTagHelper, _encoder, "label", TagMode.StartTagAndEndTag, true); } + + protected virtual string GetSize(TagHelperContext context, TagHelperOutput output) + { + var attribute = GetAttribute(TagHelper.AspFor.ModelExplorer); + + if (attribute != null) + { + TagHelper.Size = attribute.Size; + } + + switch (TagHelper.Size) + { + case AbpFormControlSize.Small: + return "form-control-sm"; + case AbpFormControlSize.Medium: + return "form-control-md"; + case AbpFormControlSize.Large: + return "form-control-lg"; + } + + return ""; + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormControlSize.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormControlSize.cs new file mode 100644 index 0000000000..19a5edd0af --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormControlSize.cs @@ -0,0 +1,18 @@ +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 FormControlSize : Attribute + { + public AbpFormControlSize Size { get; set; } + + public FormControlSize(AbpFormControlSize size) + { + Size = size; + } + } +}