UNPKG

dtd

Version:

根据数梦工场视觉规范打造的组件库,感谢react-components和ant design

1 lines 5.61 kB
import _extends from"babel-runtime/helpers/extends";import _classCallCheck from"babel-runtime/helpers/classCallCheck";import _createClass from"babel-runtime/helpers/createClass";import _possibleConstructorReturn from"babel-runtime/helpers/possibleConstructorReturn";import _inherits from"babel-runtime/helpers/inherits";import*as React from"react";import classNames from"classnames";import Item from"./Item";import SubSidebar from"./SubSidebar";import Logo from"./Logo";import Switcher from"./Switcher";import{SidebarContext}from"./sidebar-context";import{noop}from"./utils";var Sidebar=function(e){function t(e){_classCallCheck(this,t);var r=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));r.logoComponent=null,r.setParentState=function(e){r.setState(_extends({},r.state,e)),void 0!==e.isDrawerOpen&&r.state.isDrawerOpen!==e.isDrawerOpen&&r.props.onSubSidebarChange&&r.props.onSubSidebarChange(!e.isDrawerOpen)},r.onDrawerClickHandler=function(){r.props.onSubSidebarChange&&r.props.onSubSidebarChange(!!r.state.isDrawerOpen),r.setState({isDrawerOpen:!r.state.isDrawerOpen})},r.toggleCollapsed=function(){r.setState({collapsed:!r.state.collapsed}),r.props.onCollapseChange&&r.props.onCollapseChange(!r.state.collapsed)};var a="",s="",o=[];"openKeys"in e?o=e.openKeys||[]:"defaultOpenKeys"in e&&(o=e.defaultOpenKeys),r.logoComponent=null,r.props.children.forEach(function(e){e.type&&"Logo"===e.type.name&&(r.logoComponent=e)});var n={};r.props.children&&Array.isArray(r.props.children)&&r.props.children.forEach(function(e){"SubSidebar"===e.type.rawName&&e.props.children.forEach(function(t){"SubSidebar"===t.type.rawName&&(n[t.key]={outer:e,inner:t})})}),"selectedKey"in e?a=e.selectedKey:"defaultSelectedKey"in e&&(a=e.defaultSelectedKey);e:for(var i in n)if(n.hasOwnProperty(i)){if(r.props.selectedDrawer==i){s=r.props.selectedDrawer;break e}for(var l=0;l<n[i].inner.props.children.length;l++){if(n[i].inner.props.children[l].key==a){s=i;break e}s=""}}var p=Object.keys(n),d=null,c=!0,b=!1,u=void 0;try{for(var S,h=o[Symbol.iterator]();!(c=(S=h.next()).done);c=!0){var f=S.value;if(p.indexOf(f)>-1){d=f;break}}}catch(e){b=!0,u=e}finally{try{!c&&h.return&&h.return()}finally{if(b)throw u}}return r.state={openKeys:o||[],selectedKey:a||"",setParentState:r.setParentState,collapsed:!d&&r.props.collapsed,prefixCls:r.props.prefixCls,onSidebarItemClick:r.props.onClick,onSubSidebarOpenChange:r.props.onOpenChange,onSubSidebarChange:r.props.onSubSidebarChange,onSubSidebarClick:r.props.onSubSidebarClick,subDrawerStore:n,subSidebarStore:{},sidebarItemStore:{},isDrawerOpen:!!d,drawerContent:d?n[d]:null,selectedDrawer:s||""},r}return _inherits(t,e),_createClass(t,[{key:"componentWillReceiveProps",value:function(e){var t=this;if(this.state.collapsed!==e.collapsed&&(this.props.onCollapseChange&&this.props.onCollapseChange(!!e.collapsed),this.setState({collapsed:e.collapsed})),this.state.selectedKey!==e.selectedKey){e:for(var r in this.state.subDrawerStore)if(this.state.subDrawerStore.hasOwnProperty(r)){if(e.selectedKey==r){this.setState({selectedDrawer:r});break e}for(var a=0;a<this.state.subDrawerStore[r].inner.props.children.length;a++){if(this.state.subDrawerStore[r].inner.props.children[a].key==e.selectedKey){this.setState({selectedDrawer:r});break e}this.setState({selectedDrawer:""})}}for(var s in this.setState({selectedKey:e.selectedKey}),this.state.sidebarItemStore)this.state.sidebarItemStore.hasOwnProperty(s)&&function(){var r=t.state.sidebarItemStore[s],a=s===e.selectedKey;r.forEach(function(e){e.state.selected!==a&&e.updater.isMounted(e)&&e.setState({selected:a})})}()}this.state.openKeys!==e.openKeys&&function(){t.setState({openKeys:e.openKeys||[]});var r=!1,a=function(a){if(!t.state.subSidebarStore.hasOwnProperty(a))return"continue";var s=t.state.subSidebarStore[a],o=e.openKeys&&e.openKeys.indexOf(a)>-1;o?s.forEach(function(e){e.state.isSubDrawer&&!r?(t.setState({isDrawerOpen:!0,drawerContent:e.props.subDrawerStore[e.props.itemKey]}),r=!0):e.state.subSidebarOpen!==o&&e.updater.isMounted(e)&&e.setState({subSidebarOpen:o})}):s.forEach(function(e){e.state.isSubDrawer&&!r?t.setState({isDrawerOpen:!1,drawerContent:null}):e.state.subSidebarOpen!==o&&e.updater.isMounted(e)&&e.setState({subSidebarOpen:o})})};for(var s in t.state.subSidebarStore)a(s)}()}},{key:"render",value:function(){var e=this.props,t=e.prefixCls,r=e.className,a=e.withSwitcher,s=this.state,o=s.collapsed,n=s.drawerContent,i=s.isDrawerOpen,l=0;return this.logoComponent&&(l+=60),a&&(l+=30),React.createElement(SidebarContext.Provider,{value:this.state},React.createElement("div",{className:classNames(t,r,{"dt-sidebar-inline-collapsed":o,"dt-sidebar-show-drawer":i})},this.logoComponent,a&&React.createElement(Switcher,{collapsed:o,onClick:this.toggleCollapsed}),React.createElement("ul",{style:{paddingTop:l},className:classNames(t+"-ul")},this.props.children.filter(function(e){return!e.type||"Logo"!==e.type.name})),n&&React.createElement("div",{className:"dt-sidebar-drawer","data-key":n.outer.key},React.createElement("div",{className:"dt-sidebar-drawer-inner"},n.inner,React.createElement("div",{className:"dt-expend-btn",onClick:this.onDrawerClickHandler})))))}}]),t}(React.PureComponent);export default Sidebar;Sidebar.Item=Item,Sidebar.SubSidebar=SubSidebar,Sidebar.Logo=Logo,Sidebar.Switcher=Switcher,Sidebar.defaultProps={prefixCls:"dt-sidebar",className:"",defaultSelectedKey:"",selectedKey:"",defaultOpenKeys:[],openKeys:[],onClick:noop,onOpenChange:noop,onCollapseChange:noop,onSubSidebarChange:noop,onSubSidebarClick:noop,withSwitcher:!0,selectedDrawer:""};