Class
Sealed
public sealed class TabGroupRenderer : HtmlObjectRenderer<Moka.Docs.Parsing.Markdown.TabGroupBlock>
Namespace: Moka.Docs.Parsing.Markdown
Renders a tab group as HTML.
Inheritance
Inherits from: HtmlObjectRenderer<Moka.Docs.Parsing.Markdown.TabGroupBlock>
Methods
| Name | Description |
|---|---|
Write(HtmlRenderer renderer, TabGroupBlock block) override |
Type Relationships
classDiagram
style TabGroupRenderer fill:#f9f,stroke:#333,stroke-width:2px
TabGroupRenderer --|> TabGroupBlock~ : inherits
View Source
/// <summary>
/// Renders a tab group as HTML.
/// </summary>
public sealed class TabGroupRenderer : HtmlObjectRenderer<TabGroupBlock>
{
/// <inheritdoc/>
protected override void Write(HtmlRenderer renderer, TabGroupBlock block)
{
string groupId = block.GroupId;
renderer.EnsureLine();
renderer.Write($"<div class=\"tabs\" data-tab-group=\"{groupId}\">");
renderer.WriteLine();
// Tab headers
renderer.Write("<div class=\"tab-headers\" role=\"tablist\">");
renderer.WriteLine();
int index = 0;
foreach (Block child in block)
{
if (child is TabItemBlock tab)
{
string active = index == 0 ? " active" : "";
string selected = index == 0 ? "true" : "false";
renderer.Write($"<button class=\"tab-header{active}\" role=\"tab\" aria-selected=\"{selected}\" data-tab-index=\"{index}\">{tab.Title}</button>");
renderer.WriteLine();
index++;
}
}
renderer.Write("</div>");
renderer.WriteLine();
// Tab content panels
renderer.WriteChildren(block);
renderer.Write("</div>");
renderer.WriteLine();
}
}