diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2016-03-17 10:30:49 -0400 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2016-03-29 15:18:26 -0400 |
commit | c417fdc152e953982d9c9af2c04ca2c04ced41b3 (patch) | |
tree | 6bf1f8618474d3e60bbe844876de665407f80095 /webapp/components/backstage/backstage_category.jsx | |
parent | 9c36210edd7cae4026e3a2ee472cf2fa751a0f77 (diff) | |
download | chat-c417fdc152e953982d9c9af2c04ca2c04ced41b3.tar.gz chat-c417fdc152e953982d9c9af2c04ca2c04ced41b3.tar.bz2 chat-c417fdc152e953982d9c9af2c04ca2c04ced41b3.zip |
Added initial backstage components and InstalledIntegrations page
Diffstat (limited to 'webapp/components/backstage/backstage_category.jsx')
-rw-r--r-- | webapp/components/backstage/backstage_category.jsx | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/webapp/components/backstage/backstage_category.jsx b/webapp/components/backstage/backstage_category.jsx new file mode 100644 index 000000000..e8b0b57ae --- /dev/null +++ b/webapp/components/backstage/backstage_category.jsx @@ -0,0 +1,68 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import {Link} from 'react-router'; + +export default class BackstageCategory extends React.Component { + static get propTypes() { + return { + name: React.PropTypes.string.isRequired, + title: React.PropTypes.node.isRequired, + icon: React.PropTypes.string.isRequired, + parentLink: React.PropTypes.string, + children: React.PropTypes.arrayOf(React.PropTypes.element) + }; + } + + static get defaultProps() { + return { + parentLink: '', + children: [] + }; + } + + static get contextTypes() { + return { + router: React.PropTypes.object.isRequired + }; + } + + render() { + const {name, title, icon, parentLink, children} = this.props; + + const link = parentLink + '/' + name; + + let clonedChildren = null; + if (children.length > 0 && this.context.router.isActive(link)) { + clonedChildren = ( + <ul className='sections'> + { + React.Children.map(children, (child) => { + return React.cloneElement(child, { + parentLink: link + }); + }) + } + </ul> + ); + } + + return ( + <li className='backstage__sidebar__category'> + <Link + to={link} + className='category-title' + activeClassName='category-title--active' + > + <i className={'fa ' + icon}/> + <span className='category-title__text'> + {title} + </span> + </Link> + {clonedChildren} + </li> + ); + } +} |