@miyagi/core
Version:
miyagi is a component development tool for JavaScript template engines.
59 lines (50 loc) • 1.52 kB
JavaScript
/**
* Module for rendering a directory in the menu
*
* @module renderMenuDirectory
*/
const toggle = require("./toggle.js");
const menuHelpers = require("./helpers.js");
const classes = require("./classes.js");
const helpers = require("../../helpers.js");
const menu = require("./index.js");
/**
* Renders a directory in the menu
*
* @param {object} app - the express instance
* @param {object} directory - the directory which should be rendered
* @param {object} request - the request object
* @returns {string} the directory html
*/
function render(app, directory, request) {
let html = "";
if (menuHelpers.childrenOfDirectoryContainDirectory(directory)) {
const expanded = menuHelpers.pathIsParentOfOrEqualRequestedPath(
helpers.getShortPathFromFullPath(app, directory.fullPath),
request.path
);
html += toggle.render(
`${directory.id}-components`,
expanded,
directory.index
);
}
html += `<span class="${classes.component} ${classes.component}--lvl${directory.index}">${directory.name}</span>`;
// starts recursion
if (directory.children && directory.children.length) {
html += `<div class="${classes.listContainer}"${
directory.id ? ` id="${directory.id}-components"` : ""
}>
${menu.render(
app,
directory.children,
request,
directory.children.find((child) => typeof child.index !== "undefined")
.index
)}</div>`;
}
return html;
}
module.exports = {
render,
};