11import React , { Component } from 'react' ;
22import PropTypes from 'prop-types' ;
33import classNames from 'classnames' ;
4- import { sidebarCssClasses } from './Shared/index' ;
4+ import { sidebarCssClasses , validBreakpoints , checkBreakpoint } from './Shared/index' ;
55import toggleClasses from './Shared/toggle-classes' ;
66
77const propTypes = {
@@ -28,18 +28,16 @@ class AppSidebarToggler extends Component {
2828
2929 sidebarToggle ( e ) {
3030 e . preventDefault ( ) ;
31+ this . toggle ( ) ;
32+ }
3133
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`
4239 }
40+ toggleClasses ( cssClass , sidebarCssClasses , force )
4341 }
4442
4543 render ( ) {
@@ -51,7 +49,7 @@ class AppSidebarToggler extends Component {
5149 const classes = classNames ( className , 'navbar-toggler' ) ;
5250
5351 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 >
5553 { children || < span className = "navbar-toggler-icon" /> }
5654 </ Tag >
5755 ) ;
0 commit comments