private TagHelperOutput ProcessOutput(TagHelperOutput output) { string sectionIdentificator = $"section{this.Index}"; var htmlBuilder = new HtmlBuilder.HtmlBuilder(); htmlBuilder .StartElement(HtmlTags.Li) .WithConditionalClasses("active", string.Empty, this.Model.IsActive, "nav-item main-nav-item") .Append(x => x .OpenElement(HtmlTags.A) .WithConditionalClasses("collapsed", string.Empty, this.Model.IsSingle && this.Model.IsActive, "nav-link sidebar-main-menu-item") .WithAttribute("title", this.Model.Title) .WithAttributeIf("href", this.Model.SingleLinkItem?.DefaultRoute, this.Model.IsSingle && !this.Model.Dropdown) .WithAttributeIf("href", $"#{sectionIdentificator}", this.Model.Dropdown) .WithAttributeIf("aria-controls", sectionIdentificator, !this.Model.IsSingle) .WithAttributeIf("aria-expanded", this.Model.IsActive.ToString().ToLower(), this.Model.Dropdown) .WithAttributeIf("data-toggle", "collapse", this.Model.Dropdown) .Append(xx => xx .OpenElement(HtmlTags.I) .WithClasses($"menu-icon {this.Model.Icon}")) .Append(xx => xx .OpenElement(HtmlTags.Span) .WithClasses("menu-title") .Append(this.Model.Title)) .AppendIf(this.Model.Dropdown, xx => xx .OpenElement(HtmlTags.I) .WithClasses("menu-arrow"))) .AppendIf(this.Model.Dropdown, x => x .OpenElement(HtmlTags.Div) .WithConditionalClasses("show", string.Empty, this.Model.IsActive && this.Model.Dropdown, "collapse") .WithId(sectionIdentificator) .Append(xx => xx .OpenElement(HtmlTags.Ul) .WithClasses("nav flex-column sub-menu") .AppendMultiple(xxx => { foreach (var child in this.Model.Children) { xxx.Append(xxxx => xxxx .OpenElement(HtmlTags.Li) .WithClasses("nav-item") .Append(xxxxx => xxxxx .OpenElement(HtmlTags.A) .WithConditionalClasses("active", string.Empty, child.IsActive, "nav-link") .WithAttribute("title", child.Title) .WithAttribute("href", child.DefaultRoute) .Append(child.Title))); } }))); output = htmlBuilder.ApplyToTagHelperOutput(output); return(output); }
/// <inheritdoc/> public override void Process(TagHelperContext context, TagHelperOutput output) { var htmlBuilder = new HtmlBuilder.HtmlBuilder(); htmlBuilder .StartElement(HtmlTags.Div) .WithClasses($"alert alert-warning") .WithAttribute("role", "alert") .Append(x => x .OpenElement(HtmlTags.Span) .Append(WarningMessage)); output = htmlBuilder.ApplyToTagHelperOutput(output); base.Process(context, output); }
/// <inheritdoc/> public override void Process(TagHelperContext context, TagHelperOutput output) { var htmlBuilder = new HtmlBuilder.HtmlBuilder(); htmlBuilder .StartElement(HtmlTags.Div) .WithClasses($"alert alert-{this.Type}") .WithAttribute("role", "alert") .Append(x => x .OpenElement(HtmlTags.Span) .Append(output.GetChildContentAsync()?.Result?.GetContent())); output = htmlBuilder.ApplyToTagHelperOutput(output); base.Process(context, output); }
/// <inheritdoc/> public override void Process(TagHelperContext context, TagHelperOutput output) { var defaultTableHtmlBuilder = new HtmlBuilder.HtmlBuilder(); var columns = new Dictionary <int, string>(); foreach (var column in this.Columns) { if (int.TryParse(column.Key, out int columnIndex)) { columns[Math.Abs(columnIndex)] = column.Value; } else { columns[columns.Keys.Max() + 10000] = column.Value; } } var columnsArray = columns.OrderBy(x => x.Key).Select(x => x.Value).ToArray(); defaultTableHtmlBuilder.StartElement(HtmlTags.Div) .WithClasses("responsive-table") .Append(x => x .OpenElement(HtmlTags.Table) .WithClasses("table table-hover table-striped table-bordered") .Append(xx => xx .OpenElement(HtmlTags.Thead) .WithClasses("text-left") .Append(xxx => xxx .OpenElement(HtmlTags.Tr) .AppendMultiple(xxxx => { foreach (var column in columnsArray) { xxxx.Append(xxxxx => xxxxx .OpenElement(HtmlTags.Th) .WithClasses("p-2 h-auto") .Append(column)); } }))) .Append(xx => xx .OpenElement(HtmlTags.Tbody) .Append(output?.GetChildContentAsync()?.Result?.GetContent() ?? string.Empty))); output = defaultTableHtmlBuilder.ApplyToTagHelperOutput(output); base.Process(context, output); }
/// <inheritdoc/> public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { var htmlBuilder = new HtmlBuilder.HtmlBuilder(); htmlBuilder .StartElement(HtmlTags.Div) .WithClasses("form-group") .Append(x => x .OpenElement(HtmlTags.Div) .WithClasses("g-recaptcha") .WithDataAttribute("sitekey", this.recaptchaOptions.VisibleRecaptcha.SiteKey) .AppendMultiple(xx => { if (this.ViewContext.ModelState.ContainsKey("ReCaptcha") && this.ViewContext.ModelState["ReCaptcha"].Errors != null && this.ViewContext.ModelState["ReCaptcha"].Errors.Count > 0) { foreach (var error in this.ViewContext.ModelState["ReCaptcha"].Errors) { xx.Append(xxx => xxx .OpenElement(HtmlTags.Span) .WithClasses("text-danger text-small") .Append(error.ErrorMessage)); } } })); output = htmlBuilder.ApplyToTagHelperOutput(output); var headHtmlBuilder = new HtmlBuilder.HtmlBuilder(); headHtmlBuilder .StartElement(HtmlTags.Script) .WithAttribute("src", "https://www.google.com/recaptcha/api.js") .WithAttribute("async", "true") .WithAttribute("defer", "true"); this.ViewContext.AppendIntoTheHead(headHtmlBuilder.RenderHtml()); return(base.ProcessAsync(context, output)); }