1
1
import React , { Component } from 'react' ;
2
2
import PropTypes from 'prop-types' ;
3
3
import classNames from 'classnames' ;
4
- import { sidebarCssClasses } from './Shared/index' ;
4
+ import { sidebarCssClasses , validBreakpoints , checkBreakpoint } from './Shared/index' ;
5
5
import toggleClasses from './Shared/toggle-classes' ;
6
6
7
7
const propTypes = {
@@ -28,18 +28,16 @@ class AppSidebarToggler extends Component {
28
28
29
29
sidebarToggle ( e ) {
30
30
e . preventDefault ( ) ;
31
+ this . toggle ( ) ;
32
+ }
31
33
32
- if ( this . props . mobile ) {
33
- document . body . classList . toggle ( 'sidebar-show' ) ;
34
- } else {
35
- const display = this . props . display ;
36
- const cssTemplate = `sidebar-${ display } -show` ;
37
- let [ cssClass ] = sidebarCssClasses [ 0 ] ;
38
- if ( display && sidebarCssClasses . indexOf ( cssTemplate ) > - 1 ) {
39
- cssClass = cssTemplate ;
40
- }
41
- toggleClasses ( cssClass , sidebarCssClasses ) ;
34
+ toggle ( force ) {
35
+ const [ display , mobile ] = [ this . props . display , this . props . mobile ]
36
+ let cssClass = sidebarCssClasses [ 0 ]
37
+ if ( ! mobile && display && checkBreakpoint ( display , validBreakpoints ) ) {
38
+ cssClass = `sidebar-${ display } -show`
42
39
}
40
+ toggleClasses ( cssClass , sidebarCssClasses , force )
43
41
}
44
42
45
43
render ( ) {
@@ -51,7 +49,7 @@ class AppSidebarToggler extends Component {
51
49
const classes = classNames ( className , 'navbar-toggler' ) ;
52
50
53
51
return (
54
- < Tag type = "button" className = { classes } { ...attributes } onClick = { ( event ) => this . sidebarToggle ( event ) } >
52
+ < Tag type = "button" className = { classes } { ...attributes } onClick = { ( event ) => this . sidebarToggle ( event ) } data-sidebar-toggler >
55
53
{ children || < span className = "navbar-toggler-icon" /> }
56
54
</ Tag >
57
55
) ;
0 commit comments