File tree 2 files changed +18
-5
lines changed
2 files changed +18
-5
lines changed Original file line number Diff line number Diff line change @@ -32,6 +32,7 @@ const CSidebar = props=>{
32
32
const key = useState ( Math . random ( ) . toString ( 36 ) . substr ( 2 ) ) [ 0 ]
33
33
34
34
const [ isOpen , setIsOpen ] = useState ( show )
35
+ const [ openDropdown , setOpenDropdown ] = useState ( )
35
36
36
37
const node = useRef ( { } ) . current
37
38
const reference = ( r ) => {
@@ -133,7 +134,9 @@ const CSidebar = props=>{
133
134
< Context . Provider value = { {
134
135
dropdownMode,
135
136
scrollbarExist : ! minimized || unfoldable ,
136
- toggleMinimize
137
+ toggleMinimize,
138
+ openDropdown,
139
+ setOpenDropdown
137
140
} } >
138
141
< div
139
142
{ ...attributes }
@@ -176,7 +179,6 @@ CSidebar.defaultProps = {
176
179
show : 'responsive' ,
177
180
hideOnMobileClick : true ,
178
181
colorScheme : 'dark' ,
179
- dropdownMode : 'openActive' ,
180
182
}
181
183
182
184
export default CSidebar
Original file line number Diff line number Diff line change @@ -38,12 +38,23 @@ const CSidebarNavDropdown = props => {
38
38
...attributes
39
39
} = props
40
40
41
+ const key = useState ( Math . random ( ) . toString ( 36 ) . substr ( 2 ) ) [ 0 ]
42
+
43
+ const { dropdownMode, openDropdown, setOpenDropdown } = useContext ( Context )
44
+
41
45
const [ isOpen , setIsOpen ] = useState ( show )
42
46
useMemo ( ( ) => {
43
47
setIsOpen ( show )
44
48
} , [ show ] )
45
49
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
+ }
47
58
48
59
let path = ''
49
60
try {
@@ -55,7 +66,7 @@ const CSidebarNavDropdown = props => {
55
66
setIsOpen ( false )
56
67
} else if ( dropdownMode === 'closeInactive' && route ) {
57
68
setIsOpen ( path . includes ( route ) )
58
- } else if ( dropdownMode !== 'noAction' && ! isOpen && route ) {
69
+ } else if ( ( ! dropdownMode || dropdownMode !== 'noAction' ) && ! isOpen && route ) {
59
70
setIsOpen ( path . includes ( route ) )
60
71
}
61
72
} , [ path ] )
@@ -76,7 +87,7 @@ const CSidebarNavDropdown = props => {
76
87
77
88
return (
78
89
< 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 } >
80
91
{ icon && < CIconRaw { ...iconProps ( icon ) } /> }
81
92
{ fontIcon && < i className = { iconClasses } /> }
82
93
{ name }
You can’t perform that action at this time.
0 commit comments