Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #4
0
        /// <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));
        }