UNPKG

ih-pagelet-navigation-collection

Version:

Styling PS Nav Collections.

112 lines (93 loc) 4.21 kB
'use strict'; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _reactAddons = require('react/addons'); var _reactAddons2 = _interopRequireDefault(_reactAddons); require('./NavigationDrawerCollection.css'); var _NavigationDrawerSubItemJs = require('./NavigationDrawerSubItem.js'); var _NavigationDrawerSubItemJs2 = _interopRequireDefault(_NavigationDrawerSubItemJs); var _UtilJs = require('../../Util.js'); var _UtilJs2 = _interopRequireDefault(_UtilJs); var _reactEssence = require('react-essence'); /** * Navigation Drawer/ Accordion- a collection of links or folders with links/subitems * @class */ var NavigationDrawerCollection = _reactAddons2['default'].createClass({ displayName: 'NavigationDrawerCollection', /** * react property validation */ propTypes: { data: _reactAddons2['default'].PropTypes.object }, /** * Renders navigation collection shortcut in a folder * @param navigation collection shortcut * @returns @see {NavDrawerSubItem} */ renderListSubItem: function renderListSubItem(item) { return _reactAddons2['default'].createElement(_NavigationDrawerSubItemJs2['default'], { data: item, key: item.Name }); }, /** * Renders Item that has subitems * @param navigation collection folder item * @returns essence @see {ListItem} */ renderListItem: function renderListItem(item) { var contentLink = item.AbsolutePortalURL ? item.AbsolutePortalURL : 'javascript:void(0)'; contentLink = '#' + item.Label.toLowerCase().replace(/(\b) (\b)/g, '$1_$2'); var listItem = null; if (item.NavItem !== undefined) { var listDataArray = []; listDataArray = !Array.isArray(item.NavItem) ? _UtilJs2['default'].toArray(item.NavItem) : item.NavItem; listItem = _reactAddons2['default'].createElement( _reactEssence.ListItem, { contentLink: contentLink, contentText: item.Label, hasSubmenu: true, key: item.Name, listType: 'navigation' }, listDataArray.map(this.renderListSubItem) ); } else { listItem = _reactAddons2['default'].createElement(_reactEssence.ListItem, { contentLink: item.AbsolutePortalURL, contentText: item.Label, hasSubmenu: false, key: item.Name, listType: '', classes: 'nodropdown' }); } return listItem; }, /** * React render function * @returns jsx output */ render: function render() { var data = this.props.data; var links = data.NavCollection.Contents.NavItem; var listItems = null; if (links !== undefined) { if (Array.isArray(links)) { listItems = links.map(this.renderListItem); } else { if (links.NavItem) { var contentLink = links.AbsolutePortalURL ? links.AbsolutePortalURL : 'javascript:void(0)'; contentLink = '#' + links.Label.toLowerCase().replace(/(\b) (\b)/g, '$1_$2'); var listDataArray = []; listDataArray = !Array.isArray(links.NavItem) ? _UtilJs2['default'].toArray(links.NavItem) : links.NavItem; listItems = _reactAddons2['default'].createElement( _reactEssence.ListItem, { contentLink: contentLink, contentText: links.Label, hasSubmenu: true, key: links.Name, listType: 'navigation' }, listDataArray.map(this.renderListSubItem) ); } else { listItems = _reactAddons2['default'].createElement(_reactEssence.ListItem, { contentLink: data.NavCollection.Contents.NavItem.AbsolutePortalURL, contentText: data.NavCollection.Contents.NavItem.Label, classes: 'nodropdown' }); } } } else { listItems = _reactAddons2['default'].createElement(_reactEssence.ListItem, { contentLink: '#', contentText: 'No links available', hasSubmenu: false, key: 'list-item-1', listType: '', classes: 'nodropdown' }); } return _reactAddons2['default'].createElement( _reactEssence.Navigation, { header: data.NavCollection.Label, live: false }, _reactAddons2['default'].createElement( _reactEssence.List, { classes: 'e-list-navigation', id: data.NavCollection.Name }, listItems ) ); } }); module.exports = NavigationDrawerCollection;