예제 #1
0
        public async Task <IHtmlContent> Card(IDisplayHelper displayAsync, GroupingViewModel shape)
        {
            var tagBuilder = shape.GetTagBuilder("div");

            tagBuilder.AddCssClass("card-body");
            shape.Metadata.Alternates.Clear();
            shape.Metadata.Type = "ColumnGrouping";

            tagBuilder.InnerHtml.AppendHtml(await displayAsync.ShapeExecuteAsync(shape));
            var cardIdPrefix = $"card-{shape.Identifier}-{shape.Grouping.Key}".HtmlClassify();

            var cardTag = new TagBuilder("div");

            cardTag.AddCssClass("card mb-2");

            var headerArrowTag = new TagBuilder("div");

            headerArrowTag.AddCssClass("card-header");
            headerArrowTag.Attributes["id"] = $"heading-{cardIdPrefix}";

            var headerTitleTag = new TagBuilder("h5");

            headerTitleTag.AddCssClass("float-start mb-0 mt-1");
            headerTitleTag.InnerHtml.Append(shape.Grouping.Key);

            var buttonTag = new TagBuilder("button");

            buttonTag.AddCssClass("btn btn-link btn-block text-start float-end");
            buttonTag.Attributes["type"]           = "button";
            buttonTag.Attributes["data-bs-toggle"] = "collapse";
            buttonTag.Attributes["data-bs-target"] = $"#collapse-{cardIdPrefix}";
            buttonTag.Attributes["aria-expanded"]  = "true";
            buttonTag.Attributes["aria-controls"]  = $"collapse-{cardIdPrefix}";

            var buttonIconTag = new TagBuilder("i");

            buttonIconTag.AddCssClass("fa-solid fa-angle-down");

            buttonTag.InnerHtml.AppendHtml(buttonIconTag);

            headerArrowTag.InnerHtml.AppendHtml(headerTitleTag);
            headerArrowTag.InnerHtml.AppendHtml(buttonTag);

            var bodyTag = new TagBuilder("div");

            bodyTag.AddCssClass("collapse show");
            bodyTag.Attributes["id"] = $"collapse-{cardIdPrefix}";

            bodyTag.InnerHtml.AppendHtml(tagBuilder);
            cardTag.InnerHtml.AppendHtml(headerArrowTag);
            cardTag.InnerHtml.AppendHtml(bodyTag);

            return(cardTag);
        }
예제 #2
0
        public async Task <IHtmlContent> Tab(IDisplayHelper displayAsync, GroupingViewModel shape)
        {
            var tagBuilder = shape.GetTagBuilder("div");

            tagBuilder.Attributes["id"] = $"tab-{shape.Grouping.Key}-{shape.Identifier}".HtmlClassify();
            tagBuilder.AddCssClass("tab-pane fade");

            // Morphing this shape to a grouping shape to keep Model untouched.
            shape.Metadata.Alternates.Clear();
            shape.Metadata.Type = "CardGrouping";

            tagBuilder.InnerHtml.AppendHtml(await displayAsync.ShapeExecuteAsync(shape));

            return(tagBuilder);
        }