19 lines
740 B
JavaScript
19 lines
740 B
JavaScript
function buildNavigation(routes, permissions = []) {
|
|
const layout = routes
|
|
.filter((route) => route.path === '/' && Array.isArray(route.children) && route.children.length > 0)
|
|
.sort((left, right) => right.children.length - left.children.length)[0]
|
|
|
|
return (layout?.children || [])
|
|
.filter((route) => route.meta?.title && !route.meta?.hidden)
|
|
.filter((route) => !route.meta?.permission || permissions.includes(route.meta.permission))
|
|
.map((route) => ({
|
|
path: route.path ? `/${route.path}`.replace('//', '/') : '/',
|
|
title: route.meta.title,
|
|
icon: route.meta.icon,
|
|
order: route.meta.order || 0
|
|
}))
|
|
.sort((left, right) => left.order - right.order)
|
|
}
|
|
|
|
module.exports = { buildNavigation }
|