@@ -42,7 +42,8 @@ const customStyles = {
42
42
module . exports = React . createClass ( {
43
43
44
44
propTypes : {
45
- size : React . PropTypes . oneOf ( [ 'medium' , 'large' ] )
45
+ size : React . PropTypes . oneOf ( [ 'medium' , 'large' ] ) ,
46
+ prompt : React . PropTypes . oneOf ( [ '' , 'success' , 'warning' , 'error' , 'wrench' , 'offline' , 'info' ] )
46
47
} ,
47
48
48
49
getDefaultProps ( ) {
@@ -53,6 +54,7 @@ module.exports = React.createClass( {
53
54
footer :[ ] ,
54
55
returnFocusTo :null ,
55
56
size :'medium' ,
57
+ prompt :'' , //if prompt !== '', it renders modal as prompt
56
58
directional : false
57
59
} ;
58
60
} ,
@@ -106,48 +108,39 @@ module.exports = React.createClass( {
106
108
}
107
109
} ,
108
110
111
+ isPrompt ( ) {
112
+ return this . props . prompt !== '' ;
113
+ } ,
114
+
109
115
getModal ( ) {
110
116
const modalClass = {
111
117
'slds-modal' : true ,
112
118
'slds-fade-in-open' :this . state . revealed ,
113
119
'slds-modal--large' :this . props . size === 'large'
114
120
} ;
115
121
116
- const footerClass = {
117
- 'slds-modal__footer' : true ,
118
- 'slds-modal__footer--directional' : this . props . directional
119
- } ;
120
-
121
122
return < div
122
123
className = { cx ( modalClass ) }
123
124
style = { { pointerEvents :'inherit' } }
124
- onClick = { this . closeModal }
125
+ onClick = { this . isPrompt ( ) ? undefined : this . closeModal }
125
126
>
126
127
< div
127
128
role = 'dialog'
128
129
className = 'slds-modal__container'
129
130
onClick = { this . handleModalClick }
130
131
>
131
- < div className = 'slds-modal__header' >
132
- < h2 className = 'slds-text-heading--medium' > { this . props . title } </ h2 >
133
- < SLDSButton
134
- label = 'Close'
135
- variant = 'icon'
136
- iconName = 'close'
137
- iconSize = 'small'
138
- className = 'slds-modal__close'
139
- onClick = { this . closeModal } />
140
- </ div >
132
+
133
+ { this . headerComponent ( ) }
141
134
142
135
< div className = 'slds-modal__content' >
143
136
144
137
{ this . props . children }
145
138
146
- </ div >
147
- < div className = { cx ( footerClass ) } >
148
- { this . props . footer }
139
+ { this . isPrompt ( ) ? this . props . footer : null }
149
140
</ div >
150
141
142
+ { this . footerComponent ( ) }
143
+
151
144
</ div >
152
145
153
146
</ div > ;
@@ -170,6 +163,47 @@ module.exports = React.createClass( {
170
163
) ;
171
164
} ,
172
165
166
+ footerComponent ( ) {
167
+ const footerClass = {
168
+ 'slds-modal__footer' : true ,
169
+ 'slds-modal__footer--directional' : this . props . directional
170
+ } ;
171
+
172
+ let footer ;
173
+
174
+ if ( ! this . isPrompt ( ) ) {
175
+ footer = ( < div className = { cx ( footerClass ) } > { this . props . footer } </ div > ) ;
176
+ }
177
+
178
+ return footer ;
179
+ } ,
180
+
181
+ headerComponent ( ) {
182
+ let headingClasses = [ ] , headerClasses = [ 'slds-modal__header' ] ;
183
+ let closeButton ;
184
+
185
+ if ( this . isPrompt ( ) ) {
186
+ headerClasses . push ( `slds-theme--${ this . props . prompt } ` ) ;
187
+ headingClasses . push ( 'slds-text-heading--small' ) ;
188
+ } else {
189
+ headingClasses . push ( 'slds-text-heading--medium' )
190
+
191
+ closeButton = ( < SLDSButton
192
+ label = 'Close'
193
+ variant = 'icon'
194
+ iconName = 'close'
195
+ iconSize = 'small'
196
+ className = 'slds-modal__close'
197
+ onClick = { this . closeModal } /> ) ;
198
+ }
199
+
200
+ return (
201
+ < div className = { cx ( headerClasses ) } >
202
+ < h2 className = { cx ( headingClasses ) } > { this . props . title } </ h2 >
203
+ { closeButton }
204
+ </ div > ) ;
205
+ } ,
206
+
173
207
componentDidUpdate ( prevProps , prevState ) {
174
208
175
209
0 commit comments