- ${section.slugs.map((slug) => {
- const page = DOC_PAGES.find((candidate) => candidate.slug === slug);
- if (!page) return "";
- return html`
-
${page.title}
- `;
- })}
+
${doc.description}
+ ${this.docsNavOpen ? html`
+
+
+
+ ` : ""}
+
+
-
- ${doc.description}
+
${unsafeHTML(renderMarkdown(doc.markdown, { sourcePath: doc.sourcePath }))}
@@ -78,6 +94,43 @@ export class BlazeplotDocsPage extends LitElement {
`;
}
+ private renderDocsNav(doc: DocPage, closeOnSelect: boolean): TemplateResult[] {
+ return DOC_NAV_SECTIONS.map((section) => html`
+
+
${section.title}
+
+ ${section.slugs.map((slug) => {
+ const page = DOC_PAGES.find((candidate) => candidate.slug === slug);
+ if (!page) return "";
+ return html`
+
${page.title}
+ `;
+ })}
+
+
+ `);
+ }
+
+ private readonly toggleDocsNav = (): void => {
+ this.docsNavOpen = !this.docsNavOpen;
+ };
+
+ private readonly closeDocsNav = (): void => {
+ this.docsNavOpen = false;
+ };
+
+ private readonly onKeyDown = (event: KeyboardEvent): void => {
+ if (event.key === "Escape") this.closeDocsNav();
+ };
+
+ private readonly stopPropagation = (event: Event): void => {
+ event.stopPropagation();
+ };
+
private mountDocCharts(doc: DocPage): void {
if (this.mountedDocSlug === doc.slug && (this.docCharts.length > 0 || this.docDisposers.length > 0)) return;
this.disposeDocCharts();
diff --git a/website/src/site/components/previews-page.ts b/website/src/site/components/previews-page.ts
index 405ef78..3528e6a 100644
--- a/website/src/site/components/previews-page.ts
+++ b/website/src/site/components/previews-page.ts
@@ -7,13 +7,16 @@ export class BlazeplotPreviewsPage extends LitElement {
static override styles = siteStyles;
static override properties = {
previewId: { type: String },
+ previewNavOpen: { state: true },
};
declare previewId: PreviewId;
+ declare private previewNavOpen: boolean;
constructor() {
super();
this.previewId = "live";
+ this.previewNavOpen = false;
new PreviewChartsController(this);
}
@@ -22,6 +25,18 @@ export class BlazeplotPreviewsPage extends LitElement {
return index >= 0 ? index : 0;
}
+ override connectedCallback(): void {
+ super.connectedCallback();
+ window.addEventListener("blazeplot-previews-nav-toggle", this.togglePreviewNav);
+ window.addEventListener("keydown", this.onKeyDown);
+ }
+
+ override disconnectedCallback(): void {
+ window.removeEventListener("blazeplot-previews-nav-toggle", this.togglePreviewNav);
+ window.removeEventListener("keydown", this.onKeyDown);
+ super.disconnectedCallback();
+ }
+
override render(): TemplateResult {
return this.renderPreviews();
}
@@ -32,7 +47,31 @@ export class BlazeplotPreviewsPage extends LitElement {
const selected = PREVIEWS[this.previewIndex] ?? PREVIEWS[0]!;
return html`
-