|  | @ -6,7 +6,7 @@ import { push } from 'react-router-redux'; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | let scrollbar = null |  |  | let scrollbar = null | 
			
		
	
		
		
			
				
					|  |  | const Sider = props => { |  |  | const Sider = props => { | 
			
		
	
		
		
			
				
					
					|  |  |    const { collapsed, clientHeight, dispatch } = props |  |  |    const { collapsed, clientHeight, dispatch, pathname } = props | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |    const [items, setItems] = useState([]) |  |  |    const [items, setItems] = useState([]) | 
			
		
	
		
		
			
				
					|  |  |    const [selectedKeys, setSelectedKeys] = useState([]) |  |  |    const [selectedKeys, setSelectedKeys] = useState([]) | 
			
		
	
		
		
			
				
					|  |  |    const [openKeys, setOpenKeys] = useState([]) |  |  |    const [openKeys, setOpenKeys] = useState([]) | 
			
		
	
	
		
		
			
				
					|  | @ -14,6 +14,27 @@ const Sider = props => { | 
			
		
	
		
		
			
				
					|  |  |    useEffect(() => { |  |  |    useEffect(() => { | 
			
		
	
		
		
			
				
					|  |  |       const { sections, dispatch, user } = props; |  |  |       const { sections, dispatch, user } = props; | 
			
		
	
		
		
			
				
					|  |  |       let nextItems = [] |  |  |       let nextItems = [] | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       const initKeys = (items, lastKeys) => { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          for (let it of items) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             if (it.to && it.to == pathname) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                lastKeys.selectedKeys.push(it.itemKey) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                return lastKeys | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             } else if (it.items && it.items.length) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                const preLastKeys = JSON.parse(JSON.stringify(lastKeys)) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                preLastKeys.openKeys.push(it.itemKey) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                const nextKeys = initKeys(it.items, JSON.parse(JSON.stringify(preLastKeys))) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                if (nextKeys.selectedKeys.length > preLastKeys.selectedKeys.length || nextKeys.openKeys.length > preLastKeys.openKeys.length) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                   return nextKeys | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          return lastKeys | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          return { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             selectedKeys: [], | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             openKeys: [] | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |       for (let c of sections) { |  |  |       for (let c of sections) { | 
			
		
	
		
		
			
				
					|  |  |          if (typeof c.getNavItem == 'function') { |  |  |          if (typeof c.getNavItem == 'function') { | 
			
		
	
		
		
			
				
					|  |  |             let item = c.getNavItem(user, dispatch); |  |  |             let item = c.getNavItem(user, dispatch); | 
			
		
	
	
		
		
			
				
					|  | @ -24,6 +45,17 @@ const Sider = props => { | 
			
		
	
		
		
			
				
					|  |  |       } |  |  |       } | 
			
		
	
		
		
			
				
					|  |  |       setItems(nextItems) |  |  |       setItems(nextItems) | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       const { selectedKeys, openKeys } = initKeys( | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          nextItems, | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             selectedKeys: [], | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             openKeys: [] | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       ) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       if (selectedKeys.length || openKeys.length) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          setSelectedKeys(selectedKeys) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |          setOpenKeys(openKeys) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       } else { | 
			
		
	
		
		
			
				
					|  |  |          const lastSelectedKeys = localStorage.getItem('vcmp_selected_sider') |  |  |          const lastSelectedKeys = localStorage.getItem('vcmp_selected_sider') | 
			
		
	
		
		
			
				
					|  |  |          if (lastSelectedKeys) { |  |  |          if (lastSelectedKeys) { | 
			
		
	
		
		
			
				
					|  |  |             setSelectedKeys(JSON.parse(lastSelectedKeys)) |  |  |             setSelectedKeys(JSON.parse(lastSelectedKeys)) | 
			
		
	
	
		
		
			
				
					|  | @ -32,6 +64,7 @@ const Sider = props => { | 
			
		
	
		
		
			
				
					|  |  |          if (lastOpenKeys) { |  |  |          if (lastOpenKeys) { | 
			
		
	
		
		
			
				
					|  |  |             setOpenKeys(JSON.parse(lastOpenKeys)) |  |  |             setOpenKeys(JSON.parse(lastOpenKeys)) | 
			
		
	
		
		
			
				
					|  |  |          } |  |  |          } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |       scrollbar = new PerfectScrollbar('#page-slider', { suppressScrollX: true }); |  |  |       scrollbar = new PerfectScrollbar('#page-slider', { suppressScrollX: true }); | 
			
		
	
		
		
			
				
					|  |  |    }, []) |  |  |    }, []) | 
			
		
	
	
		
		
			
				
					|  | 
 |