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); }
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); }