UNPKG

@x-govuk/govuk-eleventy-plugin

Version:

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

48 lines (42 loc) 1.38 kB
import { sortCollection } from './collection.js' import { smart } from './smart.js' /** * Transform Eleventy navigation data to `items` array that can be * consumed by GOV.UK Frontend `govukBreadcrumb` component * * @param {Array} eleventyNavigation - Eleventy navigation data * @param {string} [pageUrl] - URL of current page * @param {boolean} [sort] - Sort navigation items * @returns {Array} `items` array */ export function itemsFromNavigation( eleventyNavigation, pageUrl = false, sort = false ) { const navigationItems = [] const navigationData = sortCollection(eleventyNavigation, sort) navigationData.forEach((item) => { const isCurrentPage = pageUrl && item.url === pageUrl const navigationItem = { current: isCurrentPage, parent: pageUrl && pageUrl.startsWith(item.url), href: item.url, text: smart(item.title), theme: item.data?.theme, children: item.children ? sortCollection(item.children, sort).map((child) => ({ current: pageUrl && child.url === pageUrl, href: child.url, text: smart(child.title) })) : false } // If the current page is being shown in the navigation, do not link to it if (!isCurrentPage) { navigationItem.href = item.url } navigationItems.push(navigationItem) }) return navigationItems }