1
1
import React , { Component } from 'react' ;
2
2
import PropTypes from 'prop-types' ;
3
3
import classNames from 'classnames' ;
4
- import { asideMenuCssClasses } from './Shared/index' ;
4
+ import { asideMenuCssClasses , validBreakpoints , checkBreakpoint } from './Shared/index' ;
5
5
import toggleClasses from './Shared/toggle-classes' ;
6
6
7
7
const propTypes = {
8
8
children : PropTypes . node ,
9
9
className : PropTypes . string ,
10
+ defaultOpen : PropTypes . bool ,
10
11
display : PropTypes . any ,
11
12
mobile : PropTypes . bool ,
12
13
tag : PropTypes . oneOfType ( [ PropTypes . func , PropTypes . string ] ) ,
13
14
type : PropTypes . string
14
15
} ;
15
16
16
17
const defaultProps = {
18
+ defaultOpen : false ,
17
19
display : 'lg' ,
18
20
mobile : false ,
19
21
tag : 'button' ,
@@ -28,27 +30,30 @@ class AppAsideToggler extends Component {
28
30
this . state = {} ;
29
31
}
30
32
31
- asideToggle ( e ) {
32
- e . preventDefault ( ) ;
33
+ componentDidMount ( ) {
34
+ this . toggle ( this . props . defaultOpen )
35
+ }
33
36
34
- if ( this . props . mobile ) {
35
- document . body . classList . toggle ( 'aside-menu-show' ) ;
36
- } else {
37
- const display = this . props . display ;
38
- const cssTemplate = `aside-menu-${ display } -show` ;
39
- let [ cssClass ] = asideMenuCssClasses [ 0 ] ;
40
- if ( display && asideMenuCssClasses . indexOf ( cssTemplate ) > - 1 ) {
41
- cssClass = cssTemplate ;
42
- }
43
- toggleClasses ( cssClass , asideMenuCssClasses ) ;
37
+ toggle ( force ) {
38
+ const [ display , mobile ] = [ this . props . display , this . props . mobile ] ;
39
+ let cssClass = asideMenuCssClasses [ 0 ] ;
40
+ if ( ! mobile && display && checkBreakpoint ( display , validBreakpoints ) ) {
41
+ cssClass = `aside-menu-${ display } -show`
44
42
}
43
+ toggleClasses ( cssClass , asideMenuCssClasses , force )
44
+ }
45
+
46
+ asideToggle ( e ) {
47
+ e . preventDefault ( ) ;
48
+ this . toggle ( )
45
49
}
46
50
47
51
render ( ) {
48
52
const { className, children, type, tag : Tag , ...attributes } = this . props ;
49
53
50
C214
code>
- delete attributes . display
51
- delete attributes . mobile
54
+ delete attributes . defaultOpen ;
55
+ delete attributes . display ;
56
+ delete attributes . mobile ;
52
57
53
58
const classes = classNames ( className , 'navbar-toggler' ) ;
54
59
0 commit comments