UNPKG

@x-govuk/govuk-eleventy-plugin

Version:

Write documentation using Markdown and publish it using GOV.UK styles

58 lines (48 loc) 1.68 kB
import { sortCollection } from './collection.js' /** * Flatten Eleventy navigation data * * @param {Array} eleventyNavigation - Eleventy navigation data * @returns {string} Flattened Eleventy navigation data */ function flattenNavigation(eleventyNavigation) { const navigationData = sortCollection(eleventyNavigation, true) let flattened = [] for (const item of navigationData) { flattened.push(item) if (item.children && item.children.length > 0) { flattened = flattened.concat(flattenNavigation(item.children)) } } return flattened } /** * Get next item in Eleventy navigation data * * @param {Array} eleventyNavigation - Eleventy navigation data * @param {string} pageUrl - URL of current page * @returns {object} Eleventy navigation data object */ export function getNextNavigationItem(eleventyNavigation, pageUrl) { const flatNavigation = flattenNavigation(eleventyNavigation) const currentIndex = flatNavigation.findIndex((item) => item.url === pageUrl) if (currentIndex >= 0 && currentIndex < flatNavigation.length - 1) { return flatNavigation[currentIndex + 1] } return null } /** * Get previous item in Eleventy navigation data * * @param {Array} eleventyNavigation - Eleventy navigation data * @param {string} pageUrl - URL of current page * @returns {object} Eleventy navigation data object */ export function getPreviousNavigationItem(eleventyNavigation, pageUrl) { const flatNavigation = flattenNavigation(eleventyNavigation) const currentIndex = flatNavigation.findIndex((item) => item.url === pageUrl) if (currentIndex > 0) { return flatNavigation[currentIndex - 1] } return null }