react-page-routes
Version:
Simplify coding your react-router-dom <Routes/> and <NavLinks/> by using attributes in your component.
33 lines (32 loc) • 1.36 kB
JavaScript
import { Routes, Route, NavLink } from 'react-router-dom';
import React from 'react';
export function useDirectory() {
var pages = [];
for (var _i = 0; _i < arguments.length; _i++) {
pages[_i] = arguments[_i];
}
return {
Pages: function (props) {
if (pages instanceof Array) {
if ('map' in props && props.map) {
return React.createElement(Routes, null, pages.map(props.map));
}
else {
return React.createElement(Routes, null, pages.map(PageToRoute));
}
}
return React.createElement(React.Fragment, null);
},
NavBar: function (props) {
var defaultMapper = function (E) { return (React.createElement(NavLink, { key: E.path.toString(), to: E.path.toString() }, E.title)); };
if (pages instanceof Array) {
return React.createElement(React.Fragment, null, props.map && 'map' in props ? pages.map(props.map) : pages.map(defaultMapper));
}
return React.createElement(React.Fragment, null);
}
};
}
function PageToRoute(E) {
return React.createElement(Route, { key: String(E.name), element: React.createElement(E, null), path: 'path' in E ? String(E.path) : '' });
}
export var routes = useDirectory;