Browse Source

Merge pull request #1 from jack-gaojz/dev-issue-6369

[dev-issue-6369]Added the "scrollable" feature for the Bootstrap Modal p…
pull/6659/head
Jack Gao 6 years ago
committed by GitHub
parent
commit
1c1c0d5fa6
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelper.cs
  2. 230
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelper.cs

@ -6,6 +6,8 @@
public bool? Centered { get; set; } = false; public bool? Centered { get; set; } = false;
public bool? Scrollable { get; set; } = false;
public bool? Static { get; set; } = false; public bool? Static { get; set; } = false;
public AbpModalTagHelper(AbpModalTagHelperService tagHelperService) public AbpModalTagHelper(AbpModalTagHelperService tagHelperService)

230
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalTagHelperService.cs

@ -1,112 +1,118 @@
using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
{ {
public class AbpModalTagHelperService : AbpTagHelperService<AbpModalTagHelper> public class AbpModalTagHelperService : AbpTagHelperService<AbpModalTagHelper>
{ {
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{ {
output.TagName = null; output.TagName = null;
var childContent = await output.GetChildContentAsync(); var childContent = await output.GetChildContentAsync();
SetContent(context, output, childContent); SetContent(context, output, childContent);
} }
protected virtual void SetContent(TagHelperContext context, TagHelperOutput output, TagHelperContent childContent) protected virtual void SetContent(TagHelperContext context, TagHelperOutput output, TagHelperContent childContent)
{ {
var modalContent = GetModalContentElement(context, output, childContent); var modalContent = GetModalContentElement(context, output, childContent);
var modalDialog = GetModalDialogElement(context, output, modalContent); var modalDialog = GetModalDialogElement(context, output, modalContent);
var modal = GetModal(context, output, modalDialog); var modal = GetModal(context, output, modalDialog);
output.Content.SetHtmlContent(modal); output.Content.SetHtmlContent(modal);
} }
protected virtual TagBuilder GetModalContentElement(TagHelperContext context, TagHelperOutput output, TagHelperContent childContent) protected virtual TagBuilder GetModalContentElement(TagHelperContext context, TagHelperOutput output, TagHelperContent childContent)
{ {
var element = new TagBuilder("div"); var element = new TagBuilder("div");
element.AddCssClass(GetModalContentClasses()); element.AddCssClass(GetModalContentClasses());
element.InnerHtml.SetHtmlContent(childContent); element.InnerHtml.SetHtmlContent(childContent);
return element; return element;
} }
protected virtual TagBuilder GetModalDialogElement(TagHelperContext context, TagHelperOutput output, IHtmlContent innerHtml) protected virtual TagBuilder GetModalDialogElement(TagHelperContext context, TagHelperOutput output, IHtmlContent innerHtml)
{ {
var element = new TagBuilder("div"); var element = new TagBuilder("div");
element.AddCssClass(GetModalDialogClasses()); element.AddCssClass(GetModalDialogClasses());
element.Attributes.Add("role", "document"); element.Attributes.Add("role", "document");
element.InnerHtml.SetHtmlContent(innerHtml); element.InnerHtml.SetHtmlContent(innerHtml);
return element; return element;
} }
protected virtual TagBuilder GetModal(TagHelperContext context, TagHelperOutput output, IHtmlContent innerHtml) protected virtual TagBuilder GetModal(TagHelperContext context, TagHelperOutput output, IHtmlContent innerHtml)
{ {
var element = new TagBuilder("div"); var element = new TagBuilder("div");
element.AddCssClass(GetModalClasses()); element.AddCssClass(GetModalClasses());
element.Attributes.Add("tabindex", "-1"); element.Attributes.Add("tabindex", "-1");
element.Attributes.Add("role", "dialog"); element.Attributes.Add("role", "dialog");
element.Attributes.Add("aria-hidden", "true"); element.Attributes.Add("aria-hidden", "true");
foreach (var attr in output.Attributes) foreach (var attr in output.Attributes)
{ {
element.Attributes.Add(attr.Name, attr.Value.ToString()); element.Attributes.Add(attr.Name, attr.Value.ToString());
} }
SetDataAttributes(element); SetDataAttributes(element);
element.InnerHtml.SetHtmlContent(innerHtml); element.InnerHtml.SetHtmlContent(innerHtml);
return element; return element;
} }
protected virtual string GetModalClasses() protected virtual string GetModalClasses()
{ {
return "modal fade"; return "modal fade";
} }
protected virtual string GetModalDialogClasses() protected virtual string GetModalDialogClasses()
{ {
var classNames = new StringBuilder("modal-dialog"); var classNames = new StringBuilder("modal-dialog");
if (TagHelper.Centered ?? false) if (TagHelper.Centered ?? false)
{ {
classNames.Append(" "); classNames.Append(" ");
classNames.Append("modal-dialog-centered"); classNames.Append("modal-dialog-centered");
} }
if (TagHelper.Size != AbpModalSize.Default) if (TagHelper.Scrollable ?? false)
{ {
classNames.Append(" "); classNames.Append(" ");
classNames.Append(TagHelper.Size.ToClassName()); classNames.Append("modal-dialog-scrollable");
} }
return classNames.ToString(); if (TagHelper.Size != AbpModalSize.Default)
} {
classNames.Append(" ");
protected virtual string GetModalContentClasses() classNames.Append(TagHelper.Size.ToClassName());
{ }
return "modal-content";
} return classNames.ToString();
}
protected virtual string GetDataAttributes()
{ protected virtual string GetModalContentClasses()
if (TagHelper.Static == true) {
{ return "modal-content";
return "data-backdrop=\"static\" "; }
}
return string.Empty; protected virtual string GetDataAttributes()
} {
if (TagHelper.Static == true)
protected virtual void SetDataAttributes(TagBuilder builder) {
{ return "data-backdrop=\"static\" ";
if (TagHelper.Static == true) }
{ return string.Empty;
builder.Attributes.Add("data-backdrop", "static"); }
}
} protected virtual void SetDataAttributes(TagBuilder builder)
} {
} if (TagHelper.Static == true)
{
builder.Attributes.Add("data-backdrop", "static");
}
}
}
}

Loading…
Cancel
Save