Skip to content

Commit

Permalink
chore(react-core, react-docs): added ability to add demos to react-do…
Browse files Browse the repository at this point in the history
…cs. (#711)

affects: @patternfly/react-core, @patternfly/react-docs

ISSUES CLOSED: #690
  • Loading branch information
dlabaj authored and jschuler committed Oct 5, 2018
1 parent e1c90b6 commit 0d86301
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 13 deletions.
1 change: 1 addition & 0 deletions packages/patternfly-4/react-core/.babelrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"presets": ["../.babelrc.js"],
"ignore": ["demos"],
"env": {
"production:esm": {
"plugins": [
Expand Down
1 change: 1 addition & 0 deletions packages/patternfly-4/react-core/src/demos/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This folder contains demos that show case the PatternFly components used in a variety of use cases. Demos should be placed in a sub folder with the name of the demo. For example a demo for PageLayout would found in src/demos/PageLayout.
2 changes: 1 addition & 1 deletion packages/patternfly-4/react-docs/gatsby-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ exports.modifyWebpackConfig = ({ config, stage }) => {
return config;
};

const componentPathRegEx = /(components|layouts)\//;
const componentPathRegEx = /(components|layouts|demos)\//;

exports.onCreateNode = ({ node, boundActionCreators }) => {
const { createNodeField } = boundActionCreators;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@ const routeShape = PropTypes.shape({

const propTypes = {
componentRoutes: PropTypes.arrayOf(routeShape),
layoutRoutes: PropTypes.arrayOf(routeShape)
layoutRoutes: PropTypes.arrayOf(routeShape),
demoRoutes: PropTypes.arrayOf(routeShape)
};

const defaultProps = {
componentRoutes: [],
layoutRoutes: []
layoutRoutes: [],
demoRoutes: []
};

class Navigation extends React.Component {
Expand All @@ -37,14 +39,16 @@ class Navigation extends React.Component {
};

render() {
const { componentRoutes, layoutRoutes } = this.props;
const { componentRoutes, layoutRoutes, demoRoutes } = this.props;
const { searchValue } = this.state;
const searchRE = new RegExp(searchValue, 'i');

const filteredComponentRoutes = componentRoutes.filter(c => searchRE.test(c.label));

const filteredLayoutRoutes = layoutRoutes.filter(c => searchRE.test(c.label));

const filteredDemoRoutes = demoRoutes.filter(c => searchRE.test(c.label));

return (
<div className={css(styles.navigation)}>
<div className={css(styles.navigationContent)}>
Expand Down Expand Up @@ -84,6 +88,15 @@ class Navigation extends React.Component {
))}
</NavigationItemGroup>
)}
{Boolean(filteredDemoRoutes.length) && (
<NavigationItemGroup title="Demos">
{filteredDemoRoutes.map(route => (
<NavigationItem key={route.label} to={route.to}>
{route.label}
</NavigationItem>
))}
</NavigationItemGroup>
)}
</div>
</div>
);
Expand Down
41 changes: 32 additions & 9 deletions packages/patternfly-4/react-docs/src/layouts/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,26 @@ const propTypes = {
};

const Layout = ({ children, data }) => {
const componentRoutes = data.componentPages.edges.map(e => ({
to: e.node.path,
label: e.node.fields.label
}));
const componentRoutes = data.componentPages
? data.componentPages.edges.map(e => ({
to: e.node.path,
label: e.node.fields.label
}))
: [];

const layoutRoutes = data.layoutPages.edges.map(e => ({
to: e.node.path,
label: e.node.fields.label
}));
const layoutRoutes = data.layoutPages
? data.layoutPages.edges.map(e => ({
to: e.node.path,
label: e.node.fields.label
}))
: [];

const demoRoutes = data.demoPages
? data.demoPages.edges.map(e => ({
to: e.node.path,
label: e.node.fields.label
}))
: [];

return (
<React.Fragment>
Expand All @@ -41,7 +52,9 @@ const Layout = ({ children, data }) => {
</Helmet>
<Page
title="Patternfly React"
navigation={<Navigation componentRoutes={componentRoutes} layoutRoutes={layoutRoutes} />}
navigation={
<Navigation componentRoutes={componentRoutes} layoutRoutes={layoutRoutes} demoRoutes={demoRoutes} />
}
>
{children()}
</Page>
Expand Down Expand Up @@ -81,5 +94,15 @@ export const query = graphql`
}
}
}
demoPages: allSitePage(filter: { path: { glob: "**/demos/*" } }, sort: { fields: [fields___label], order: ASC }) {
edges {
node {
path
fields {
label
}
}
}
}
}
`;

0 comments on commit 0d86301

Please sign in to comment.