nixos-render-docs: make examples collapsible by default

DS 2ce2079e 7d892036

Changed files
+20 -4
doc
pkgs
tools
nix
nixos-render-docs
src
nixos_render_docs
+16
doc/style.css
···
margin-top: 1.5em;
}
+
div.book div.example details,
+
div.appendix div.example details {
+
padding: 5px;
+
}
+
+
div.book div.example details[open],
+
div.appendix div.example details[open] {
+
border: 1px solid #aaa;
+
border-radius: 4px;
+
}
+
+
div.book div.example details>summary,
+
div.appendix div.example details>summary {
+
cursor: pointer;
+
}
+
div.book br.example-break,
div.appendix br.example-break {
display: none;
+4 -4
pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/html.py
···
def example_open(self, token: Token, tokens: Sequence[Token], i: int) -> str:
if id := cast(str, token.attrs.get('id', '')):
id = f'id="{escape(id, True)}"' if id else ''
-
return f'<div class="example"><span {id} ></span>'
+
return f'<div class="example"><span {id} ></span><details>'
def example_close(self, token: Token, tokens: Sequence[Token], i: int) -> str:
-
return '</div></div><br class="example-break" />'
+
return '</div></details></div><br class="example-break" />'
def example_title_open(self, token: Token, tokens: Sequence[Token], i: int) -> str:
-
return '<p class="title"><strong>'
+
return '<summary><span class="title"><strong>'
def example_title_close(self, token: Token, tokens: Sequence[Token], i: int) -> str:
-
return '</strong></p><div class="example-contents">'
+
return '</strong></span></summary><div class="example-contents">'
def image(self, token: Token, tokens: Sequence[Token], i: int) -> str:
src = self._pull_image(cast(str, token.attrs['src']))
alt = f'alt="{escape(token.content, True)}"' if token.content else ""