private void Footer(ModalConfig config, TagBuilder footer) { footer.AddCssClass("modal-footer"); foreach (ModalButton modalButton in config.Buttons) { TagBuilder button = new TagBuilder("button"); button.AddCssClass("btn"); this.AddContextualState(button, modalButton.State, "btn-"); if (modalButton.JsFunc != null) { button.Attributes.Add("data-mvccorebootstrap-modal-btn-action", modalButton.JsFunc + "()"); } else if (modalButton.Submit) { button.Attributes.Add("type", "submit"); button.Attributes.Add("data-mvccorebootstrap-modal-submit-btn", null); } else { button.Attributes.Add("data-dismiss", "modal"); } button.InnerHtml.AppendHtml(modalButton.Text); footer.InnerHtml.AppendHtml(button); } }
/// <summary> /// Renders an Mvc Core Bootstrap modal. /// </summary> /// <param name="htmlHelper">Html helper instance.</param> /// <param name="configAction">Action that implements modal configuration.</param> /// <returns>Modal html markup.</returns> public static IHtmlContent MvcCoreBootstrapModal(this IHtmlHelper htmlHelper, Action <MvcCoreBootstrapModalBuilder> configAction) { ModalConfig config = new ModalConfig(); configAction(new MvcCoreBootstrapModalBuilder(config)); return(new ModalRenderer().Render(config)); }
public void Show(ModalConfig config = null) { var modalConfig = config ?? new ModalConfig(); IsOpen = true; ShowChanged?.Invoke(this, new ShowModalEventArgs { Show = true, CloseOnOverlayClick = modalConfig.CloseOnOverlayClick, Content = modalConfig.Content }); }
private void TriggerModal(TagBuilder button, ModalConfig modal) { if (modal != null || _config.ModalId != null) { button.Attributes.Add("data-toggle", "modal"); button.Attributes.Add("data-target", "#" + (modal != null ? modal.Id : _config.ModalId)); //if(modal != null) //{ // _builder.AppendHtml(_modalRenderer.Render(modal)); //} } }
private void SetSize(ModalConfig config, TagBuilder dialog) { switch (config.Size) { case MvcCoreBootstrapModalSize.Large: dialog.AddCssClass("modal-lg"); break; case MvcCoreBootstrapModalSize.Default: break; case MvcCoreBootstrapModalSize.Small: dialog.AddCssClass("modal-sm"); break; default: Debug.Assert(false); break; } }
public IHtmlContent Render(ModalConfig config) { TagBuilder dialog = new TagBuilder("div"); TagBuilder content = new TagBuilder("div"); TagBuilder header = new TagBuilder("div"); TagBuilder body = new TagBuilder("div"); TagBuilder footer = new TagBuilder("div"); TagBuilder title = new TagBuilder("h4"); Element = new TagBuilder("div"); this.BaseConfig(config, "modal"); Element.Attributes.Add("role", "dialog"); Element.Attributes.Add("tabindex", "-1"); this.AddCssClass("fade", config.Animation); if (config.OnLoad) { Element.Attributes.Add("data-mvccorebootstrap-modal-on-load", null); } Element.InnerHtml.AppendHtml(dialog); this.SetSize(config, dialog); this.AddContextualState(header, config.State, "bg-"); dialog.AddCssClass("modal-dialog"); dialog.Attributes.Add("role", "document"); dialog.InnerHtml.AppendHtml(content); content.AddCssClass("modal-content"); content.InnerHtml.AppendHtml(header); content.InnerHtml.AppendHtml(body); content.InnerHtml.AppendHtml(footer); header.AddCssClass("modal-header"); if (config.Dismissable) { TagBuilder closeBtn = new TagBuilder("button"); TagBuilder x = new TagBuilder("span"); closeBtn.Attributes.Add("type", "button"); closeBtn.AddCssClass("close"); closeBtn.Attributes.Add("data-dismiss", "modal"); closeBtn.Attributes.Add("aria-label", "Close"); closeBtn.Attributes.Add("aria-hidden", "true"); x.InnerHtml.AppendHtml("×"); closeBtn.InnerHtml.AppendHtml(x); header.InnerHtml.AppendHtml(closeBtn); } title.AddCssClass("modal-title"); title.InnerHtml.Append(config.Title); header.InnerHtml.AppendHtml(title); body.AddCssClass("modal-body"); if (config.BodyHtml != null) { body.InnerHtml.AppendHtml(config.BodyHtml); } else { body.InnerHtml.AppendHtml(config.Body); } this.Footer(config, footer); return(Element); }
internal MvcCoreBootstrapModalFooterBuilder(ModalConfig config) { _config = config; }