From b71ed66c3f07889e7d7f444641af29a51e2419af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 28 May 2018 01:40:09 +0300 Subject: [PATCH 1/4] Added AbpOptionsFactory --- .../Volo/Abp/Options/AbpOptionsFactory.cs | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/Volo.Abp.Core/Volo/Abp/Options/AbpOptionsFactory.cs diff --git a/src/Volo.Abp.Core/Volo/Abp/Options/AbpOptionsFactory.cs b/src/Volo.Abp.Core/Volo/Abp/Options/AbpOptionsFactory.cs new file mode 100644 index 0000000000..ecbe0d8271 --- /dev/null +++ b/src/Volo.Abp.Core/Volo/Abp/Options/AbpOptionsFactory.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using Microsoft.Extensions.Options; + +namespace Volo.Abp.Options +{ + //TODO: Derive from OptionsFactory when this is released: https://github.com/aspnet/Options/pull/258 (or completely remove this!) + public class AbpOptionsFactory : IOptionsFactory where TOptions : class, new() + { + private readonly IEnumerable> _setups; + private readonly IEnumerable> _postConfigures; + + public AbpOptionsFactory(IEnumerable> setups, IEnumerable> postConfigures) + { + _setups = setups; + _postConfigures = postConfigures; + } + + public virtual TOptions Create(string name) + { + var options = new TOptions(); + + foreach (var setup in _setups) + { + if (setup is IConfigureNamedOptions namedSetup) + { + namedSetup.Configure(name, options); + } + else if (name == Microsoft.Extensions.Options.Options.DefaultName) + { + setup.Configure(options); + } + } + + foreach (var post in _postConfigures) + { + post.PostConfigure(name, options); + } + + return options; + } + } +} \ No newline at end of file From 419cd5c35256f7b945d44033870cdd1a4dc9314a Mon Sep 17 00:00:00 2001 From: yekalkan Date: Mon, 28 May 2018 11:40:28 +0300 Subject: [PATCH 2/4] Abp border tag helper --- .../TagHelpers/Border/AbpBorderTagHelper.cs | 16 +++ .../Border/AbpBorderTagHelperService.cs | 91 +++++++++++++++ .../TagHelpers/Border/AbpBorderType.cs | 106 ++++++++++++++++++ .../Pages/Components/DynamicForms.cshtml | 6 +- 4 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs create mode 100644 src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelperService.cs create mode 100644 src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs new file mode 100644 index 0000000000..2ab667d08b --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Razor.TagHelpers; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +{ + [HtmlTargetElement(Attributes = "abp-border")] + public class AbpBorderTagHelper : AbpTagHelper + { + public AbpBorderType AbpBorder { get; set; } = AbpBorderType._; + + public AbpBorderTagHelper(AbpBorderTagHelperService tagHelperService) + : base(tagHelperService) + { + + } + } +} diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelperService.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelperService.cs new file mode 100644 index 0000000000..3bf4bc16d4 --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelperService.cs @@ -0,0 +1,91 @@ +using Microsoft.AspNetCore.Razor.TagHelpers; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +{ + public class AbpBorderTagHelperService : AbpTagHelperService + { + public override void Process(TagHelperContext context, TagHelperOutput output) + { + var borderAttributeAsString = TagHelper.AbpBorder.ToString().ToLowerInvariant(); + + var borderClass = "border" + GetBorderDirection(context, output, borderAttributeAsString) + GetExtensionIfBorderIsSubtractive(context, output, borderAttributeAsString); + + output.Attributes.AddClass(borderClass); + + SetBorderType(context, output, borderAttributeAsString); + } + + protected virtual string GetBorderDirection(TagHelperContext context, TagHelperOutput output, string borderAttributeAsString) + { + if (borderAttributeAsString.Contains("top")) + { + return "-top"; + } + if (borderAttributeAsString.Contains("right")) + { + return "-right"; + } + if (borderAttributeAsString.Contains("left")) + { + return "-left"; + } + if (borderAttributeAsString.Contains("bottom")) + { + return "-bottom"; + } + + return ""; + } + + protected virtual string GetExtensionIfBorderIsSubtractive(TagHelperContext context, TagHelperOutput output, string borderAttributeAsString) + { + if (borderAttributeAsString.Contains("_0")) + { + return "-0"; + } + + return ""; + } + + protected virtual void SetBorderType(TagHelperContext context, TagHelperOutput output, string borderAttributeAsString) + { + if (borderAttributeAsString.Contains("primary")) + { + output.Attributes.AddClass("border-primary"); + } + if (borderAttributeAsString.Contains("secondary")) + { + output.Attributes.AddClass("border-secondary"); + } + if (borderAttributeAsString.Contains("success")) + { + output.Attributes.AddClass("border-success"); + } + if (borderAttributeAsString.Contains("danger")) + { + output.Attributes.AddClass("border-danger"); + } + if (borderAttributeAsString.Contains("warning")) + { + output.Attributes.AddClass("border-warning"); + } + if (borderAttributeAsString.Contains("info")) + { + output.Attributes.AddClass("border-info"); + } + if (borderAttributeAsString.Contains("light")) + { + output.Attributes.AddClass("border-light"); + } + if (borderAttributeAsString.Contains("dark")) + { + output.Attributes.AddClass("border-dark"); + } + if (borderAttributeAsString.Contains("white")) + { + output.Attributes.AddClass("border-white"); + } + } + } +} \ No newline at end of file diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs new file mode 100644 index 0000000000..08bdfb92cb --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs @@ -0,0 +1,106 @@ +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +{ + public enum AbpBorderType + { + _, + _0, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark, + White, + Primary_0, + Secondary_0, + Success_0, + Danger_0, + Warning_0, + Info_0, + Light_0, + Dark_0, + White_0, + Top, + Top_0, + Top_Primary, + Top_Secondary, + Top_Success, + Top_Danger, + Top_Warning, + Top_Info, + Top_Light, + Top_Dark, + Top_White, + Top_Primary_0, + Top_Secondary_0, + Top_Success_0, + Top_Danger_0, + Top_Warning_0, + Top_Info_0, + Top_Light_0, + Top_Dark_0, + Top_White_0, + Right, + Right_0, + Right_Primary, + Right_Secondary, + Right_Success, + Right_Danger, + Right_Warning, + Right_Info, + Right_Light, + Right_Dark, + Right_White, + Right_Primary_0, + Right_Secondary_0, + Right_Success_0, + Right_Danger_0, + Right_Warning_0, + Right_Info_0, + Right_Light_0, + Right_Dark_0, + Right_White_0, + Left, + Left_0, + Left_Primary, + Left_Secondary, + Left_Success, + Left_Danger, + Left_Warning, + Left_Info, + Left_Light, + Left_Dark, + Left_White, + Left_Primary_0, + Left_Secondary_0, + Left_Success_0, + Left_Danger_0, + Left_Warning_0, + Left_Info_0, + Left_Light_0, + Left_Dark_0, + Left_White_0, + Bottom, + Bottom_0, + Bottom_Primary, + Bottom_Secondary, + Bottom_Success, + Bottom_Danger, + Bottom_Warning, + Bottom_Info, + Bottom_Light, + Bottom_Dark, + Bottom_White, + Bottom_Primary_0, + Bottom_Secondary_0, + Bottom_Success_0, + Bottom_Danger_0, + Bottom_Warning_0, + Bottom_Info_0, + Bottom_Light_0, + Bottom_Dark_0, + Bottom_White_0, + } +} \ No newline at end of file diff --git a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml index 33a16791a2..745bc3befa 100644 --- a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml +++ b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml @@ -37,7 +37,8 @@
- + +
@@ -55,7 +56,8 @@
 <abp-dynamic-form abp-model="Model.PersonInput">
-    <abp-input asp-for="Model.PersonInput.Phone.Number" />
+    <abp-input asp-for="Model.PersonInput.Name" label="Overrided name" />
+    <abp-input asp-for="Model.PersonInput.Phone.Number" label="Overrided number" />
     <abp-button button-type="Primary" type="submit" text="submit" />
 </abp-dynamic-form>
 
From 0a81c22b7e389101000c0dc85668f42681f65983 Mon Sep 17 00:00:00 2001 From: yekalkan Date: Mon, 28 May 2018 11:48:58 +0300 Subject: [PATCH 3/4] abp rounded tag helper --- .../TagHelpers/Border/AbpBorderTagHelper.cs | 2 +- .../TagHelpers/Border/AbpBorderType.cs | 2 +- .../TagHelpers/Border/AbpRoundedTagHelper.cs | 16 +++++++++++++++ .../Border/AbpRoundedTagHelperService.cs | 20 +++++++++++++++++++ .../TagHelpers/Border/AbpRoundedType.cs | 12 +++++++++++ 5 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelper.cs create mode 100644 src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelperService.cs create mode 100644 src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedType.cs diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs index 2ab667d08b..bc7a6f9829 100644 --- a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs @@ -5,7 +5,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border [HtmlTargetElement(Attributes = "abp-border")] public class AbpBorderTagHelper : AbpTagHelper { - public AbpBorderType AbpBorder { get; set; } = AbpBorderType._; + public AbpBorderType AbpBorder { get; set; } = AbpBorderType.Default; public AbpBorderTagHelper(AbpBorderTagHelperService tagHelperService) : base(tagHelperService) diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs index 08bdfb92cb..14b1684876 100644 --- a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs @@ -2,7 +2,7 @@ { public enum AbpBorderType { - _, + Default, _0, Primary, Secondary, diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelper.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelper.cs new file mode 100644 index 0000000000..f8c3489cc9 --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelper.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Razor.TagHelpers; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +{ + [HtmlTargetElement(Attributes = "abp-rounded")] + public class AbpRoundedTagHelper : AbpTagHelper + { + public AbpRoundedType AbpRounded { get; set; } = AbpRoundedType.Default; + + public AbpRoundedTagHelper(AbpRoundedTagHelperService tagHelperService) + : base(tagHelperService) + { + + } + } +} diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelperService.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelperService.cs new file mode 100644 index 0000000000..89436785ba --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelperService.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Razor.TagHelpers; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +{ + public class AbpRoundedTagHelperService : AbpTagHelperService + { + public override void Process(TagHelperContext context, TagHelperOutput output) + { + var roundedClass = "rounded"; + + if (TagHelper.AbpRounded != AbpRoundedType.Default) + { + roundedClass += "-" + TagHelper.AbpRounded.ToString().ToLowerInvariant().Replace("_",""); + } + + output.Attributes.AddClass(roundedClass); + } + } +} \ No newline at end of file diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedType.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedType.cs new file mode 100644 index 0000000000..1910ffc714 --- /dev/null +++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedType.cs @@ -0,0 +1,12 @@ +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +{ + public enum AbpRoundedType + { + Default, + _0, + Top, + Right, + Left, + Bottom + } +} \ No newline at end of file From 745338ed97e1f81c66b9455c59e9eb5597ca851c Mon Sep 17 00:00:00 2001 From: yekalkan Date: Mon, 28 May 2018 12:01:00 +0300 Subject: [PATCH 4/4] Abp border & rounded tag helper examples --- .../Pages/Components/Borders.cshtml | 48 +++++++++++++++++++ .../Pages/Components/Borders.cshtml.cs | 17 +++++++ 2 files changed, 65 insertions(+) create mode 100644 test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml create mode 100644 test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml.cs diff --git a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml new file mode 100644 index 0000000000..a9fe5ce6d9 --- /dev/null +++ b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml @@ -0,0 +1,48 @@ +@page +@model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.BordersModel +@{ + ViewData["Title"] = "Borders"; +} + +

Borders

+ +

Based on Bootstrap Border.

+ +

# Borders Examples

+ +
+
+ + + + + + + + + + + + + + + +
+
+
+<span abp-border></span>
+<span abp-border="top"></span>
+<span abp-border="Right"></span>
+<span abp-border="Left"></span>
+<span abp-border="Bottom"></span>
+<span abp-border="top_0"></span>
+<span abp-border="Right_0"></span>
+<span abp-border="Left_0"></span>
+<span abp-border="Bottom_0"></span>
+<span abp-border="Top_Primary"></span>
+<span abp-border="Warning_0"></span>
+<span abp-border="Bottom_Primary_0"></span>
+<span abp-border="Left_Danger"></span>
+
+
+
diff --git a/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml.cs b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml.cs new file mode 100644 index 0000000000..1250014b6a --- /dev/null +++ b/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components +{ + public class BordersModel : PageModel + { + public void OnGet() + { + + } + } +} \ No newline at end of file