Browse Source

Alert Tag Helper

pull/279/head
yekalkan 9 years ago
parent
commit
4eed69ba57
  1. 13
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderSize.cs
  2. 13
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelper.cs
  3. 25
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelperService.cs
  4. 11
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelper.cs
  5. 16
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelperService.cs
  6. 15
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelper.cs
  7. 54
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelperService.cs
  8. 15
      src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertType.cs
  9. 2363
      test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Logs/logs.txt
  10. 87
      test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Alerts.cshtml
  11. 17
      test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Alerts.cshtml.cs
  12. 8
      test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Dropdowns.cshtml
  13. 1
      test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Index.cshtml

13
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderSize.cs

@ -0,0 +1,13 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
{
public enum AbpAlertHeaderSize
{
Default,
h1,
h2,
h3,
h4,
h5,
h6
}
}

13
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelper.cs

@ -0,0 +1,13 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
{
public class AbpAlertHeaderTagHelper : AbpTagHelper<AbpAlertHeaderTagHelper, AbpAlertHeaderTagHelperService>
{
public AbpAlertHeaderSize Size { get; set; } = AbpAlertHeaderSize.Default;
public AbpAlertHeaderTagHelper(AbpAlertHeaderTagHelperService tagHelperService)
: base(tagHelperService)
{
}
}
}

25
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelperService.cs

@ -0,0 +1,25 @@
using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
{
public class AbpAlertHeaderTagHelperService : AbpTagHelperService<AbpAlertHeaderTagHelper>
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = GetHeaderSize(context, output);
output.Attributes.AddClass("alert-heading");
output.TagMode = TagMode.StartTagAndEndTag;
}
protected virtual string GetHeaderSize(TagHelperContext context, TagHelperOutput output)
{
if (TagHelper.Size == AbpAlertHeaderSize.Default)
{
return AbpAlertHeaderSize.h4.ToString();
}
return TagHelper.Size.ToString();
}
}
}

11
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelper.cs

@ -0,0 +1,11 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
{
public class AbpAlertLinkTagHelper : AbpTagHelper<AbpAlertLinkTagHelper, AbpAlertLinkTagHelperService>
{
public AbpAlertLinkTagHelper(AbpAlertLinkTagHelperService tagHelperService)
: base(tagHelperService)
{
}
}
}

16
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelperService.cs

@ -0,0 +1,16 @@
using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
{
public class AbpAlertLinkTagHelperService : AbpTagHelperService<AbpAlertLinkTagHelper>
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "a";
output.Attributes.AddClass("alert-link");
output.TagMode = TagMode.StartTagAndEndTag;
}
}
}

15
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelper.cs

@ -0,0 +1,15 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
{
public class AbpAlertTagHelper : AbpTagHelper<AbpAlertTagHelper, AbpAlertTagHelperService>
{
public AbpAlertType AlertType { get; set; } = AbpAlertType.Default;
public bool? Dismissible { get; set; }
public AbpAlertTagHelper(AbpAlertTagHelperService tagHelperService)
: base(tagHelperService)
{
}
}
}

54
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelperService.cs

@ -0,0 +1,54 @@
using System;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
{
public class AbpAlertTagHelperService : AbpTagHelperService<AbpAlertTagHelper>
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "div";
output.TagMode = TagMode.StartTagAndEndTag;
AddClasses(context, output);
AddDismissButtonIfDismissible(context, output);
}
protected virtual void AddClasses(TagHelperContext context, TagHelperOutput output)
{
output.Attributes.Add("role", "alert");
output.Attributes.AddClass("alert");
if (TagHelper.AlertType != AbpAlertType.Default)
{
output.Attributes.AddClass("alert-" + TagHelper.AlertType.ToString().ToLowerInvariant());
}
if (TagHelper.Dismissible ?? false)
{
output.Attributes.AddClass("alert-dismissible");
output.Attributes.AddClass("fade");
output.Attributes.AddClass("show");
}
}
protected virtual void AddDismissButtonIfDismissible(TagHelperContext context, TagHelperOutput output)
{
if (!TagHelper.Dismissible ?? true)
{
return;
}
var buttonAsHtml =
"<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">" + Environment.NewLine +
" <span aria-hidden=\"true\">&times;</span>" + Environment.NewLine +
" </button>";
output.PostContent.SetHtmlContent(buttonAsHtml);
}
}
}

15
src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertType.cs

@ -0,0 +1,15 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert
{
public enum AbpAlertType
{
Default,
Primary,
Secondary,
Success,
Danger,
Warning,
Info,
Light,
Dark
}
}

2363
test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Logs/logs.txt

File diff suppressed because it is too large

87
test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Alerts.cshtml

@ -0,0 +1,87 @@
@page
@model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.AlertsModel
@{
ViewData["Title"] = "Alerts";
}
<h2>Alerts</h2>
<p>Based on <a href="https://getbootstrap.com/docs/4.1/components/alerts/" target="_blank"> Bootstrap Alert</a>.</p>
<h4># Alert Example</h4>
<div class="demo-with-code">
<div class="demo-area">
<abp-alert alert-type="Danger">
I'm an abp alert!
</abp-alert>
</div>
<div class="code-area">
<pre>
&lt;abp-alert alert-type=&quot;Danger&quot;&gt;
I&#39;m an abp alert!
&lt;/abp-alert&gt;
</pre>
</div>
</div>
<h4># Dismissible Alert Example</h4>
<div class="demo-with-code">
<div class="demo-area">
<abp-alert alert-type="Warning" dismissible="true">
I'm a dismissible abp alert!
</abp-alert>
</div>
<div class="code-area">
<pre>
&lt;abp-alert alert-type=&quot;Warning&quot; dismissible=&quot;true&quot;&gt;
I&#39;m a dismissible abp alert!
&lt;/abp-alert&gt;
</pre>
</div>
</div>
<h4># Alert With Link Example</h4>
<div class="demo-with-code">
<div class="demo-area">
<abp-alert alert-type="Secondary">
I'm an abp alert with <abp-alert-link href="#">Link</abp-alert-link>!
</abp-alert>
</div>
<div class="code-area">
<pre>
&lt;abp-alert alert-type=&quot;Info&quot;&gt;
I&#39;m an abp alert with &lt;abp-alert-link href=&quot;#&quot;&gt;Link&lt;/abp-alert-link&gt;!
&lt;/abp-alert&gt;
</pre>
</div>
</div>
<h4># Alert With Header Example</h4>
<div class="demo-with-code">
<div class="demo-area">
<abp-alert alert-type="Primary">
<abp-alert-header size="h3">Header</abp-alert-header>
I'm an abp alert!
</abp-alert>
</div>
<div class="code-area">
<pre>
&lt;abp-alert alert-type=&quot;Primary&quot;&gt;
&lt;abp-alert-header size=&quot;h3&quot;&gt;Header&lt;/abp-alert-header&gt;
I&#39;m an abp alert!
&lt;/abp-alert&gt;
</pre>
</div>
</div>

17
test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Alerts.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 AlertsModel : PageModel
{
public void OnGet()
{
}
}
}

8
test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Dropdowns.cshtml

@ -83,9 +83,9 @@
<div class="demo-with-code">
<div class="demo-area">
<abp-dropdown direction="Right">
<abp-dropdown direction="Up">
<abp-dropdown-button Link="true" button-type="Primary" text="Dropdown"/>
<abp-dropdown-menu>
<abp-dropdown-menu align="Right">
<abp-dropdown-header>Dropdown header</abp-dropdown-header>
<abp-dropdown-item href="#" active="true">Action</abp-dropdown-item>
<abp-dropdown-item href="#" disabled="true">Another disabled action</abp-dropdown-item>
@ -98,9 +98,9 @@
</div>
<div class="code-area">
<pre>
&lt;abp-dropdown direction=&quot;Right&quot;&gt;
&lt;abp-dropdown direction=&quot;Up&quot;&gt;
&lt;abp-dropdown-button Link=&quot;true&quot; button-type=&quot;Primary&quot; text=&quot;Dropdown&quot;/&gt;
&lt;abp-dropdown-menu&gt;
&lt;abp-dropdown-menu align=&quot;Right&quot;&gt;
&lt;abp-dropdown-header&gt;Dropdown header&lt;/abp-dropdown-header&gt;
&lt;abp-dropdown-item href=&quot;#&quot; active=&quot;true&quot;&gt;Action&lt;/abp-dropdown-item&gt;
&lt;abp-dropdown-item href=&quot;#&quot; disabled=&quot;true&quot;&gt;Another disabled action&lt;/abp-dropdown-item&gt;

1
test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Index.cshtml

@ -13,5 +13,6 @@
<li><a asp-page="Components/DynamicForms">Dynamic Forms</a></li>
<li><a asp-page="Components/Tabs">Tabs</a></li>
<li><a asp-page="Components/Dropdowns">Dropdowns</a></li>
<li><a asp-page="Components/alerts">Alerts</a></li>
</ul>

Loading…
Cancel
Save