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

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();
    }
}
Was this page helpful?