2018-08-30 07:10:52 +00:00
import React from 'react' ;
const siteRoot = window . app . config . siteRoot ;
const serverRoot = window . app . config . serverRoot ;
class MainSideNav extends React . Component {
constructor ( props ) {
super ( props ) ;
this . state = {
groupsExtended : false ,
sharedExtended : false ,
closeSideBar : false ,
groupItems : [ ]
} ;
this . listHeight = 24 ; //for caculate tabheight
this . groupsHeight = 0 ;
this . adminHeight = 0 ;
}
grpsExtend = ( ) => {
this . setState ( {
groupsExtended : ! this . state . groupsExtended ,
} )
this . loadGroups ( ) ;
}
shExtend = ( ) => {
this . setState ( {
sharedExtended : ! this . state . sharedExtended ,
} )
}
loadGroups = ( ) => {
let _this = this ;
2018-09-10 10:24:49 +00:00
this . props . seafileAPI . listGroups ( ) . then ( res => {
2018-08-30 07:10:52 +00:00
let data = res . data . groups ;
this . groupsHeight = ( data . length + 1 ) * _this . listHeight ;
_this . setState ( {
groupItems : data
} )
} )
}
renderSharedGroups ( ) {
let style = { height : 0 } ;
if ( this . state . groupsExtended ) {
style = { height : this . groupsHeight } ;
}
return (
< ul className = { ` grp-list ${ this . state . groupsExtended ? 'side-panel-slide' : 'side-panel-slide-up' } ` } style = { style } >
< li >
< a href = { siteRoot + '#groups/' } >
< span className = "sharp" aria - hidden = "true" > # < / s p a n > A l l G r o u p s < / a >
< / l i >
{ this . state . groupItems . map ( item => {
return (
< li key = { item . id } >
< a href = { siteRoot + '#group/' + item . id + '/' } >
< span className = "sharp" aria - hidden = "true" > # < / s p a n > { i t e m . n a m e } < / a >
< / l i >
)
} ) }
< / u l >
)
}
renderSharedAdmin ( ) {
let height = 0 ;
if ( this . state . sharedExtended ) {
if ( ! this . adminHeight ) {
this . adminHeight = 3 * this . listHeight ;
}
height = this . adminHeight ;
}
let style = { height : height } ;
return (
< ul className = { ` ${ this . state . sharedExtended ? 'side-panel-slide' : 'side-panel-slide-up' } ` } style = { style } >
< li >
< a href = { siteRoot + '#share-admin-libs/' } > < span aria - hidden = "true" className = "sharp" > # < / s p a n > L i b r a r i e s < / a >
< / l i >
< li >
< a href = { siteRoot + '#share-admin-folders/' } > < span aria - hidden = "true" className = "sharp" > # < / s p a n > F o l d e r s < / a >
< / l i >
< li >
< a href = { siteRoot + '#share-admin-share-links/' } > < span aria - hidden = "true" className = "sharp" > # < / s p a n > L i n k s < / a >
< / l i >
< / u l >
)
}
render ( ) {
return (
< div id = "side-nav" className = "home-side-nav" >
< div className = "side-nav-con" >
< h3 className = "sf-heading" > Files < / h 3 >
< ul className = "side-tabnav-tabs" >
< li className = "tab" > < a href = { siteRoot + '#my-libs' } className = "ellipsis" title = "My Libraries" > < span className = "sf2-icon-user" aria - hidden = "true" > < / s p a n > M y L i b r a r i e s < / a > < / l i >
< li className = "tab" > < a href = { serverRoot + siteRoot + '#shared-libs/' } className = "ellipsis" title = "Shared with me" > < span className = "sf2-icon-share" aria - hidden = "true" > < / s p a n > S h a r e d w i t h m e < / a > < / l i >
< li className = "tab" > < a href = { serverRoot + siteRoot + '#org/' } className = "ellipsis" title = "Shared with all" > < span className = "sf2-icon-organization" aria - hidden = "true" > < / s p a n > S h a r e d w i t h a l l < / a > < / l i >
< li className = "tab" id = "group-nav" >
2018-09-13 06:26:39 +00:00
< a className = "ellipsis user-select-no" title = "Shared with groups" onClick = { this . grpsExtend } > < span className = { ` toggle-icon float-right fas ${ this . state . groupsExtended ? 'fa-caret-down' : 'icon-caret-left' } ` } aria - hidden = "true" > < / s p a n > < s p a n c l a s s N a m e = " s f 2 - i c o n - g r o u p " a r i a - h i d d e n = " t r u e " > < / s p a n > S h a r e d w i t h g r o u p s < / a >
2018-08-30 07:10:52 +00:00
{ this . renderSharedGroups ( ) }
< / l i >
< / u l >
< div className = "hd w-100 o-hidden" >
< h3 className = "float-left sf-heading" > Tools < / h 3 >
< / d i v >
< ul className = "side-tabnav-tabs" >
< li className = "tab" > < a href = { siteRoot + '#starred/' } > < span className = "sf2-icon-star" aria - hidden = "true" > < / s p a n > F a v o r i t e s < / a > < / l i >
< li className = "tab" > < a href = { siteRoot + 'dashboard' } > < span className = "sf2-icon-clock" aria - hidden = "true" > < / s p a n > A c i t i v i t i e s < / a > < / l i >
< li className = "tab" > < a href = { siteRoot + '#devices/' } className = "ellipsis" title = "Linked Devices" > < span className = "sf2-icon-monitor" aria - hidden = "true" > < / s p a n > L i n k e d D e v i c e s < / a > < / l i >
< li className = "tab" id = "share-admin-nav" >
2018-09-13 06:26:39 +00:00
< a className = "ellipsis user-select-no" title = "Share Admin" onClick = { this . shExtend } > < span className = { ` toggle-icon float-right fas ${ this . state . sharedExtended ? 'fa-caret-down' : 'fa-caret-left' } ` } aria - hidden = "true" > < / s p a n > < s p a n a r i a - h i d d e n = " t r u e " c l a s s N a m e = " s f 2 - i c o n - w r e n c h " > < / s p a n > S h a r e A d m i n < / a >
2018-08-30 07:10:52 +00:00
{ this . renderSharedAdmin ( ) }
< / l i >
< / u l >
< / d i v >
< / d i v >
)
}
}
export default MainSideNav ;