diff --git a/content/languages/javascript/testing.md b/content/languages/javascript/testing.md new file mode 100644 index 00000000..597c9316 --- /dev/null +++ b/content/languages/javascript/testing.md @@ -0,0 +1,9 @@ +--- +category: guides +tags: + - testing +languages: + - javascript +--- + +# Testing JavaScript diff --git a/content/refs/javascript-ref.md b/content/refs/javascript-ref.md new file mode 100644 index 00000000..205ad015 --- /dev/null +++ b/content/refs/javascript-ref.md @@ -0,0 +1,10 @@ +--- +category: references +languages: [javascript] +--- + +# Sample JavaScript Reference + +> TODO Remove this file + +This file exists to show how the sidebar on language pages are automatically populated and grouped by `category`. diff --git a/data/categories.yml b/data/categories.yml index 9463c380..bf7978b2 100644 --- a/data/categories.yml +++ b/data/categories.yml @@ -2,3 +2,9 @@ - id: docs name: Docs description: Docs + +- id: guides + name: Guides +- id: references + name: References + description: Reference Manuals diff --git a/data/tags.yml b/data/tags.yml index 26cae916..b5e70879 100644 --- a/data/tags.yml +++ b/data/tags.yml @@ -9,3 +9,6 @@ name: Content - id: codewars name: Codewars + +- id: testing + name: Testing diff --git a/gridsome.config.js b/gridsome.config.js index 75aa1b1c..292f5c2e 100644 --- a/gridsome.config.js +++ b/gridsome.config.js @@ -61,9 +61,9 @@ module.exports = { typeName: "Tag", }, // Can reference multiple languages to be listed on the language page. - // languages: { - // typeName: "Language", - // }, + languages: { + typeName: "Language", + }, }, }, }, diff --git a/src/assets/styles.css b/src/assets/styles.css index 344593b2..e6287e64 100644 --- a/src/assets/styles.css +++ b/src/assets/styles.css @@ -149,7 +149,7 @@ pre[class*="language-"] { } & > code[class*="language-"] { - @apply border-none leading-relaxed; + @apply border-none leading-relaxed px-0; } } diff --git a/src/components/NextPrevLinks.vue b/src/components/NextPrevLinks.vue index 7c94fc2c..60971a4d 100644 --- a/src/components/NextPrevLinks.vue +++ b/src/components/NextPrevLinks.vue @@ -22,29 +22,18 @@ - -query { - allMarkdownPage { - edges { - node { - path - title - } - } - } -} - - diff --git a/src/components/Sidebar.vue b/src/components/Sidebar.vue index 3a3a136a..20367fba 100644 --- a/src/components/Sidebar.vue +++ b/src/components/Sidebar.vue @@ -1,10 +1,10 @@ - -query Sidebar { - metadata { - settings { - sidebar { - name - sections { - title - items - } - } - } - } - - allMarkdownPage { - edges { - node { - path - title - } - } - } -} - - diff --git a/src/layouts/Default.vue b/src/layouts/Default.vue index af0ad8a0..a2aacaf7 100644 --- a/src/layouts/Default.vue +++ b/src/layouts/Default.vue @@ -21,7 +21,7 @@
@@ -52,6 +52,24 @@ query { metadata { siteName + settings { + sidebar { + name + sections { + title + items + } + } + } + } + + allMarkdownPage { + edges { + node { + path + title + } + } } } @@ -66,8 +84,9 @@ export default { currentPath: { type: String, }, - sidebarName: { - type: String, + sidebar: { + // Name of the sidebar defined in settings or array of sections. + type: [String, Array], }, }, components: { @@ -95,6 +114,9 @@ export default { }, }, computed: { + pages() { + return this.$static.allMarkdownPage.edges.map((edge) => edge.node); + }, sidebarStyle() { return { top: this.headerHeight + "px", @@ -104,10 +126,27 @@ export default { hasSidebar() { return ( this.$page && - (this.$page.markdownPage || this.sidebarName) && + (this.$page.markdownPage || this.sidebar) && this.headerHeight > 0 ); }, + sidebarSections() { + if (Array.isArray(this.sidebar)) return this.sidebar; + + const def = this.$static.metadata.settings.sidebar.find( + (sidebar) => sidebar.name === this.sidebar + ); + if (!def) return null; + + return def.sections.map((section) => { + return { + title: section.title, + items: section.items.map((link) => + this.pages.find((page) => page.path === link) + ), + }; + }); + }, }, mounted() { this.setHeaderHeight(); diff --git a/src/pages/Languages.vue b/src/pages/Languages.vue index 73ececcf..0a9d1955 100644 --- a/src/pages/Languages.vue +++ b/src/pages/Languages.vue @@ -1,5 +1,5 @@ @@ -111,6 +113,29 @@ query($id: ID!) { url } } + + belongsTo(sortBy: "title", order: ASC) { + totalCount + + edges { + node { + ... on MarkdownPage { + title + excerpt + path + category { + id + name + } + tags { + id + name + path + } + } + } + } + } } allLanguage { @@ -124,7 +149,12 @@ query($id: ID!) {