Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions src/Elastic.Markdown/Assets/markdown/list.css
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,13 @@
ol>li>ol>li>ol>li>ol>li>ol>li>ol { list-style-type: lower-roman; }

/* Special handling of elements within a list item */
li>p:nth-child(2),
li>div>.highlight,
li>.admonition
li>*:first-child,
li>p:nth-child(2)
{
@apply mt-1;
}
li>p:first-child
{
@apply mt-4;
}
}
9 changes: 7 additions & 2 deletions src/Elastic.Markdown/Myst/Directives/TabSetBlock.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,20 @@ public class TabSetBlock(DirectiveBlockParser parser, ParserContext context)
public override void FinalizeAndValidate(ParserContext context) => Index = FindIndex();

private int _index = -1;

// For simplicity, we use the line number as the index.
// It's not ideal, but it's unique.
// This is more efficient than finding the root block and then finding the index.
public int FindIndex()
{
if (_index > -1)
return _index;
var siblings = Parent!.OfType<TabSetBlock>().ToList();
_index = siblings.IndexOf(this);

_index = Line;
return _index;
}
}

public class TabItemBlock(DirectiveBlockParser parser, ParserContext context)
: DirectiveBlock(parser, context)
{
Expand Down
9 changes: 7 additions & 2 deletions src/Elastic.Markdown/Slices/Directives/TabItem.cshtml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
@inherits RazorSlice<TabItemViewModel>
<input class="tabs-input" checked="@(Model.Index == 0 ? "checked" : "")" id="tabs-item-@Model.TabSetIndex-@Model.Index" name="tabs-set-@Model.TabSetIndex" type="radio" tabindex="0">
<label class="tabs-label" data-sync-id="@Model.SyncKey" data-sync-group="@Model.TabSetGroupKey" for="tabs-item-@Model.TabSetIndex-@Model.Index">@Model.Title</label>

@{
var id = $"tabs-item-{Model.TabSetIndex}-{Model.Index}";
}

<input class="tabs-input" checked="@(Model.Index == 0 ? "checked" : "")" id="@id" name="tabs-set-@Model.TabSetIndex" type="radio" tabindex="0">
<label class="tabs-label" data-sync-id="@Model.SyncKey" data-sync-group="@Model.TabSetGroupKey" for="@id">@Model.Title</label>
<div class="tabs-content" tabindex="0">
[CONTENT]
</div>
5 changes: 2 additions & 3 deletions tests/Elastic.Markdown.Tests/Directives/TabTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ public void ParsesTabItems()
for (var i = 0; i < items.Length; i++)
{
items[i].Index.Should().Be(i);
items[i].TabSetIndex.Should().Be(0);
}
}
}
Expand Down Expand Up @@ -88,7 +87,7 @@ public void ParsesMultipleTabSets()
for (var i = 0; i < items.Length; i++)
{
items[i].Index.Should().Be(i);
items[i].TabSetIndex.Should().Be(s);
items[i].TabSetIndex.Should().Be(sets[s].Line);
}
}
}
Expand Down Expand Up @@ -148,7 +147,7 @@ public void ParsesMultipleTabSets()
for (var i = 0; i < items.Length; i++)
{
items[i].Index.Should().Be(i);
items[i].TabSetIndex.Should().Be(s);
items[i].TabSetIndex.Should().Be(sets[s].Line);
}
}
}
Expand Down