private void Body(CardConfig config) { if (config.Ajax != null || config.Content != null || config.HtmlContent != null) { TagBuilder body = new TagBuilder("div"); Element.InnerHtml.AppendHtml(body); body.AddCssClass("card-body"); this.AddElement(new TagBuilder("h5"), new[] { "card-title" }, config.Title, body); this.AddElement(new TagBuilder("h6"), new[] { "card-subtitle" }, config.SubTitle, body); if (config.Ajax != null) { string id = Guid.NewGuid().ToString(); string indicatorId = Guid.NewGuid().ToString(); TagBuilder ajaxTrigger = new TagBuilder("a"); AjaxConfigBase ajaxConfig = new AjaxConfigBase { Url = config.Ajax.Url, UpdateId = indicatorId, UpdateMode = AjaxUpdateMode.Replace, }; TagBuilder container = new TagBuilder("div"); body.Attributes.Add("id", id); ajaxTrigger.Attributes.Add("style", "display:none;"); ajaxTrigger.Attributes.Add("data-mvccorebootstrap-panel-ajax", null); body.InnerHtml.AppendHtml(ajaxTrigger); container.Attributes.Add("id", indicatorId); body.InnerHtml.AppendHtml(container); if (!string.IsNullOrEmpty(config.Ajax.IndicatorPath)) { TagBuilder indicator = new TagBuilder("img"); indicator.Attributes.Add("src", config.Ajax.IndicatorPath); indicator.AddCssClass(config.Ajax.IndicatorCss); container.InnerHtml.AppendHtml(indicator); } if (!string.IsNullOrEmpty(config.Ajax.ErrorContent)) { TagBuilder error = new TagBuilder("div"); string errorId = Guid.NewGuid().ToString(); error.Attributes.Add("id", errorId); error.Attributes.Add("style", "display:none;"); error.InnerHtml.AppendHtml(config.Ajax.ErrorContent); body.InnerHtml.AppendHtml(error); ajaxConfig.Error = $"$('#{errorId}').show();$('#{indicatorId}').hide();"; } this.ConfigAjax(ajaxTrigger, ajaxConfig); } else { this.AddElement(new TagBuilder("p"), new[] { "card-text" }, config.HtmlContent, body); this.AddElement(new TagBuilder("p"), new[] { "card-text" }, config.Content, body); } } }
private void Items() { foreach (var item in _config.Items) { TagBuilder element = new TagBuilder(_types == ItemTypes.Buttons ? "button" : (_types == ItemTypes.Links ? "a" : "li")); IEnumerable <string> cssClasses = item.Disabled ? new[] { "list-group-item", "d-flex", "justify-content-between", "align-items-center", "disabled" } : new[] { "list-group-item", "d-flex", "justify-content-between", "align-items-center" }; this.AddElement(element, cssClasses, item.Content); this.AddContextualState(element, item.State, "list-group-item-"); if (_types == ItemTypes.Buttons && item.ClickHandler != null && !item.Disabled) { element.Attributes.Add("onclick", item.ClickHandler.Replace("()", "") + $"({item.Id})"); } if (_types == ItemTypes.Links && !item.Disabled) { if (item.Ajax != null) { AjaxConfigBase ajaxConfig = new AjaxConfigBase { Url = item.Ajax.Url, UpdateId = item.Ajax.UpdateId, UpdateMode = AjaxUpdateMode.Replace, }; this.ConfigAjax(element, ajaxConfig); element.Attributes.Add("href", "#"); } else { element.Attributes.Add("href", item.Url); } } if (!string.IsNullOrEmpty(item.Badge)) { TagBuilder badge = new TagBuilder("span"); badge.AddCssClass("badge"); this.AddContextualState(badge, item.BadgeContextualState, "badge-"); this.AddElement(badge, item.Badge, element); //this.AddElement(new TagBuilder("span"), new[] { "badge badge-primary badge-pill" }, item.Badge, element); } } }
protected void ConfigAjax(TagBuilder element, AjaxConfigBase config, string url = null, bool dataOnSuccess = false, string id = null) { if (config != null) { element.Attributes.Add("data-ajax", "true"); if (config.UpdateId != null) { element.Attributes.Add("data-ajax-update", $"#{config.UpdateId}"); } element.Attributes.Add("data-ajax-mode", config.UpdateMode.ToString().ToLower()); element.Attributes.Add("data-ajax-url", url ?? config.Url); if (config.BusyIndicatorId != null) { element.Attributes.Add("data-ajax-loading", "#" + config.BusyIndicatorId); } element.Attributes.Add("data-ajax-begin", $"{this.AddJavascriptFuncPars(config.Start, id)}"); element.Attributes.Add("data-ajax-success", $"{this.AddJavascriptFuncPars(config.Success, id, true, dataOnSuccess)}"); element.Attributes.Add("data-ajax-failure", $"{this.AddJavascriptFuncPars(config.Error, id)}"); element.Attributes.Add("data-ajax-complete", $"{this.AddJavascriptFuncPars(config.Complete, id)}"); } }