@@ -42,7 +42,8 @@ const customStyles = {
4242module . exports = React . createClass ( {
4343
4444 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' ] )
4647 } ,
4748
4849 getDefaultProps ( ) {
@@ -53,6 +54,7 @@ module.exports = React.createClass( {
5354 footer :[ ] ,
5455 returnFocusTo :null ,
5556 size :'medium' ,
57+ prompt :'' , //if prompt !== '', it renders modal as prompt
5658 directional : false
5759 } ;
5860 } ,
@@ -106,48 +108,39 @@ module.exports = React.createClass( {
106108 }
107109 } ,
108110
111+ isPrompt ( ) {
112+ return this . props . prompt !== '' ;
113+ } ,
114+
109115 getModal ( ) {
110116 const modalClass = {
111117 'slds-modal' : true ,
112118 'slds-fade-in-open' :this . state . revealed ,
113119 'slds-modal--large' :this . props . size === 'large'
114120 } ;
115121
116- const footerClass = {
117- 'slds-modal__footer' : true ,
118- 'slds-modal__footer--directional' : this . props . directional
119- } ;
120-
121122 return < div
122123 className = { cx ( modalClass ) }
123124 style = { { pointerEvents :'inherit' } }
124- onClick = { this . closeModal }
125+ onClick = { this . isPrompt ( ) ? undefined : this . closeModal }
125126 >
126127 < div
127128 role = 'dialog'
128129 className = 'slds-modal__container'
129130 onClick = { this . handleModalClick }
130131 >
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 ( ) }
141134
142135 < div className = 'slds-modal__content' >
143136
144137 { this . props . children }
145138
146- </ div >
147- < div className = { cx ( footerClass ) } >
148- { this . props . footer }
139+ { this . isPrompt ( ) ? this . props . footer : null }
149140 </ div >
150141
142+ { this . footerComponent ( ) }
143+
151144 </ div >
152145
153146 </ div > ;
@@ -170,6 +163,47 @@ module.exports = React.createClass( {
170163 ) ;
171164 } ,
172165
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+
173207 componentDidUpdate ( prevProps , prevState ) {
174208
175209
0 commit comments