@@ -57,6 +57,10 @@ class AppSidebarNav2 extends Component {
5757 }
5858 }
5959
60+ getAttribs ( attributes ) {
61+ return JSON . parse ( JSON . stringify ( attributes || { } ) ) ;
62+ }
63+
6064 // nav list
6165 navList ( items ) {
6266 return items . map ( ( item , index ) => this . navType ( item , index ) ) ;
@@ -110,11 +114,14 @@ class AppSidebarNav2 extends Component {
110114 // nav dropdown
111115 navDropdown ( item , key ) {
112116 const classIcon = classNames ( 'nav-icon' , item . icon ) ;
113- const attributes = JSON . parse ( JSON . stringify ( item . attributes || { } ) ) ;
117+ const attributes = this . getAttribs ( item . attributes ) ;
114118 const classes = classNames ( 'nav-link' , 'nav-dropdown-toggle' , item . class , attributes . class ) ;
115119 delete attributes . class ;
120+ const itemAttr = this . getAttribs ( item . itemAttr ) ;
121+ const liClasses = classNames ( this . activeRoute ( item . url , this . props ) , itemAttr . class )
122+ delete itemAttr . class ;
116123 return (
117- < li key = { key } className = { this . activeRoute ( item . url , this . props ) } >
124+ < li key = { key } className = { liClasses } { ... itemAttr } >
118125 < a className = { classes } href = "#" onClick = { this . handleClick } { ...attributes } > < i className = { classIcon } />
119126 { item . name } { this . navBadge ( item . badge ) }
120127 </ a >
@@ -141,10 +148,15 @@ class AppSidebarNav2 extends Component {
141148 const url = item . url || '' ;
142149 const itemIcon = < i className = { classes . icon } />
143150 const itemBadge = this . navBadge ( item . badge )
144- const attributes = item . attributes || { }
151+ const attributes = this . getAttribs ( item . attributes )
152+ classes . link = classNames ( classes . link , attributes . class )
153+ delete attributes . class ;
154+ const itemAttr = this . getAttribs ( item . itemAttr )
155+ classes . item = classNames ( classes . item , itemAttr . class )
156+ delete itemAttr . class ;
145157 const NavLink = this . props . router . NavLink || RsNavLink
146158 return (
147- < NavItem key = { key } className = { classes . item } >
159+ < NavItem key = { key } className = { classes . item } { ... itemAttr } >
148160 { attributes . disabled ?
149161 < RsNavLink href = { '' } className = { classes . link } { ...attributes } >
150162 { itemIcon } { item . name } { itemBadge }
0 commit comments