UNPKG

i-react-utils

Version:
1 lines 4.44 kB
'use strict';Object.defineProperty(exports,'__esModule',{value:true});exports.Breadcrumbs=undefined;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if('value'in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();exports.bc=bc;var _react=require('react');var _react2=_interopRequireDefault(_react);var _reactRouter=require('react-router');var _iJsUtils=require('i-js-utils');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function')}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called')}return call&&(typeof call==='object'||typeof call==='function')?call:self}function _inherits(subClass,superClass){if(typeof superClass!=='function'&&superClass!==null){throw new TypeError('Super expression must either be null or a function, not '+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}function bc(link,label){return{link:link,label:label}}var Breadcrumbs=exports.Breadcrumbs=function(_React$Component){_inherits(Breadcrumbs,_React$Component);function Breadcrumbs(props){_classCallCheck(this,Breadcrumbs);var _this=_possibleConstructorReturn(this,(Breadcrumbs.__proto__||Object.getPrototypeOf(Breadcrumbs)).call(this));_this.props=props;_this.state={config:_this.props.config?_this.props.config:null};_this.configuration=_this.configuration.bind(_this);_this.clear=_this.clear.bind(_this);return _this}_createClass(Breadcrumbs,[{key:'configuration',value:function configuration(config){var bc=this.context.breadcrumbs?this.context.breadcrumbs:this;var oldState=bc.state.config;if(oldState==null||!(0,_iJsUtils.isEquivalent)(oldState,config)){bc.setState({config:config})}}},{key:'clear',value:function clear(){this.configuration([])}},{key:'getChildContext',value:function getChildContext(){return{breadcrumbs:this}}},{key:'componentWillMount',value:function componentWillMount(){if(this.props.config){this.configuration(this.props.config)}}},{key:'componentWillReceiveProps',value:function componentWillReceiveProps(nextProps){if(this.props.config){this.configuration(this.props.config)}}},{key:'render',value:function render(){var _this2=this;if(this.context.breadcrumbs){return null}var divProps=(0,_iJsUtils.shallowCopyExcept)({},this.props,['config','renderHome']);if(this.state.config==null||this.state.config.length==0){return _react2.default.createElement('div',divProps,this.props.children)}else{var items=[];if(this.props.renderHome){items.push(_react2.default.createElement('li',{key:'bc-home'},_react2.default.createElement(_reactRouter.Link,{className:'home',to:'/'},_react2.default.createElement('span',{className:'ico-panel ico-breadcrumb-home'}))))}this.state.config.forEach(function(br,i){if(i==_this2.state.config.length-1){items.push(_react2.default.createElement('li',{key:'bc-item-'+i,className:'active'},_react2.default.createElement('span',null,br.label)))}else{items.push(_react2.default.createElement('li',{key:'bc-item-'+i},_react2.default.createElement(_reactRouter.Link,{to:br.link},br.label)))}});return _react2.default.createElement('div',divProps,_react2.default.createElement('div',{id:'breadcrumb',className:'breadcrumb'},_react2.default.createElement('ol',{className:'breadcrumb'},items)),this.props.children)}}}]);return Breadcrumbs}(_react2.default.Component);Breadcrumbs.childContextTypes={breadcrumbs:_react.PropTypes.object};Breadcrumbs.contextTypes={breadcrumbs:_react.PropTypes.object};Breadcrumbs.propTypes={config:_react.PropTypes.arrayOf(_react.PropTypes.shape({link:_react.PropTypes.string.isRequired,label:_react.PropTypes.string.isRequired})),renderHome:_react.PropTypes.bool};Breadcrumbs.defaultProps={renderHome:false};