ih-pagelet-navigation-collection
Version:
Styling PS Nav Collections.
112 lines (93 loc) • 4.21 kB
JavaScript
'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;