File tree 3 files changed +29
-6
lines changed
3 files changed +29
-6
lines changed Original file line number Diff line number Diff line change @@ -126,6 +126,7 @@ const Modal = React.createClass({
126
126
127
127
getDefaultProps ( ) {
128
128
return {
129
+ bsClass : 'modal' ,
129
130
show : false ,
130
131
animation : true ,
131
132
backdrop : true ,
@@ -203,12 +204,12 @@ const Modal = React.createClass({
203
204
} ,
204
205
205
206
renderBackdrop ( modal ) {
206
- let { animation } = this . props ;
207
+ let { animation, bsClass } = this . props ;
207
208
let duration = Modal . BACKDROP_TRANSITION_DURATION ;
208
209
209
210
let backdrop = (
210
211
< div ref = "backdrop"
211
- className = { classNames ( 'modal -backdrop' , { in : this . props . show && ! animation } ) }
212
+ className = { classNames ( ` ${ bsClass } -backdrop` , { in : this . props . show && ! animation } ) }
212
213
onClick = { this . handleBackdropClick }
213
214
/>
214
215
) ;
Original file line number Diff line number Diff line change @@ -32,10 +32,11 @@ const ModalDialog = React.createClass({
32
32
33
33
render ( ) {
34
34
let modalStyle = { display : 'block' } ;
35
+ let bsClass = this . props . bsClass ;
35
36
let dialogClasses = this . getBsClassSet ( ) ;
36
37
37
38
delete dialogClasses . modal ;
38
- dialogClasses [ 'modal -dialog' ] = true ;
39
+ dialogClasses [ ` ${ bsClass } -dialog` ] = true ;
39
40
40
41
return (
41
42
< div
@@ -44,10 +45,10 @@ const ModalDialog = React.createClass({
44
45
tabIndex = "-1"
45
46
role = "dialog"
46
47
style = { modalStyle }
47
- className = { classNames ( this . props . className , 'modal' ) }
48
+ className = { classNames ( this . props . className , bsClass ) }
48
49
>
49
50
< div className = { classNames ( this . props . dialogClassName , dialogClasses ) } >
50
- < div className = "modal -content" role = 'document' >
51
+ < div className = { ` ${ bsClass } -content` } role = 'document' >
51
52
{ this . props . children }
52
53
</ div >
53
54
</ div >
Original file line number Diff line number Diff line change 1
1
import React from 'react' ;
2
2
import ReactTestUtils from 'react/lib/ReactTestUtils' ;
3
3
import Modal from '../src/Modal' ;
4
- import { render } from './helpers' ;
4
+ import { render , shouldWarn } from './helpers' ;
5
5
6
6
describe ( 'Modal' , function ( ) {
7
7
let mountPoint ;
@@ -115,6 +115,27 @@ describe('Modal', function () {
115
115
ReactTestUtils . Simulate . click ( button ) ;
116
116
} ) ;
117
117
118
+ it ( 'Should use bsClass on the dialog' , function ( ) {
119
+ let noOp = function ( ) { } ;
120
+ let instance = render (
121
+ < Modal show bsClass = 'mymodal' onHide = { noOp } >
122
+ < strong > Message</ strong >
123
+ </ Modal >
124
+ , mountPoint ) ;
125
+
126
+ let dialog = React . findDOMNode ( instance . refs . dialog ) ;
127
+ let backdrop = React . findDOMNode ( instance . refs . backdrop ) ;
128
+
129
+ assert . ok ( dialog . className . match ( / \b m y m o d a l \b / ) ) ;
130
+ assert . ok ( dialog . children [ 0 ] . className . match ( / \b m y m o d a l - d i a l o g \b / ) ) ;
131
+ assert . ok ( dialog . children [ 0 ] . children [ 0 ] . className . match ( / \b m y m o d a l - c o n t e n t \b / ) ) ;
132
+
133
+ assert . ok ( backdrop . className . match ( / \b m y m o d a l - b a c k d r o p \b / ) ) ;
134
+
135
+
136
+ shouldWarn ( "Invalid prop 'bsClass' of value 'mymodal'" ) ;
137
+ } ) ;
138
+
118
139
it ( 'Should pass bsSize to the dialog' , function ( ) {
119
140
let noOp = function ( ) { } ;
120
141
let instance = render (
You can’t perform that action at this time.
0 commit comments