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("&times;");
                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);
        }
Exemple #7
0
 internal MvcCoreBootstrapModalFooterBuilder(ModalConfig config)
 {
     _config = config;
 }