File tree Expand file tree Collapse file tree 2 files changed +18
-5
lines changed Expand file tree Collapse file tree 2 files changed +18
-5
lines changed Original file line number Diff line number Diff line change @@ -32,6 +32,7 @@ const CSidebar = props=>{
3232 const key = useState ( Math . random ( ) . toString ( 36 ) . substr ( 2 ) ) [ 0 ]
3333
3434 const [ isOpen , setIsOpen ] = useState ( show )
35+ const [ openDropdown , setOpenDropdown ] = useState ( )
3536
3637 const node = useRef ( { } ) . current
3738 const reference = ( r ) => {
@@ -133,7 +134,9 @@ const CSidebar = props=>{
133134 < Context . Provider value = { {
134135 dropdownMode,
135136 scrollbarExist : ! minimized || unfoldable ,
136- toggleMinimize
137+ toggleMinimize,
138+ openDropdown,
139+ setOpenDropdown
137140 } } >
138141 < div
139142 { ...attributes }
@@ -176,7 +179,6 @@ CSidebar.defaultProps = {
176179 show : 'responsive' ,
177180 hideOnMobileClick : true ,
178181 colorScheme : 'dark' ,
179- dropdownMode : 'openActive' ,
180182}
181183
182184export default CSidebar
Original file line number Diff line number Diff line change @@ -38,12 +38,23 @@ const CSidebarNavDropdown = props => {
3838 ...attributes
3939 } = props
4040
41+ const key = useState ( Math . random ( ) . toString ( 36 ) . substr ( 2 ) ) [ 0 ]
42+
43+ const { dropdownMode, openDropdown, setOpenDropdown } = useContext ( Context )
44+
4145 const [ isOpen , setIsOpen ] = useState ( show )
4246 useMemo ( ( ) => {
4347 setIsOpen ( show )
4448 } , [ show ] )
4549
46- const { dropdownMode } = useContext ( Context )
50+ useMemo ( ( ) => {
51+ ! dropdownMode && openDropdown !== key && setIsOpen ( false )
52+ } , [ openDropdown ] )
53+
54+ const toggle = ( ) => {
55+ ! dropdownMode && setOpenDropdown ( isOpen ? null : key )
56+ setIsOpen ( ! isOpen )
57+ }
4758
4859 let path = ''
4960 try {
@@ -55,7 +66,7 @@ const CSidebarNavDropdown = props => {
5566 setIsOpen ( false )
5667 } else if ( dropdownMode === 'closeInactive' && route ) {
5768 setIsOpen ( path . includes ( route ) )
58- } else if ( dropdownMode !== 'noAction' && ! isOpen && route ) {
69+ } else if ( ( ! dropdownMode || dropdownMode !== 'noAction' ) && ! isOpen && route ) {
5970 setIsOpen ( path . includes ( route ) )
6071 }
6172 } , [ path ] )
@@ -76,7 +87,7 @@ const CSidebarNavDropdown = props => {
7687
7788 return (
7889 < li className = { classes } { ...attributes } ref = { innerRef } >
79- < a className = "c-sidebar-nav-dropdown-toggle" onClick = { ( ) => setIsOpen ( ! isOpen ) } >
90+ < a className = "c-sidebar-nav-dropdown-toggle" onClick = { toggle } >
8091 { icon && < CIconRaw { ...iconProps ( icon ) } /> }
8192 { fontIcon && < i className = { iconClasses } /> }
8293 { name }
You can’t perform that action at this time.
0 commit comments