Skip to content

Commit 8c6834e

Browse files
committed
Merge pull request #19 from sfdc-matrix/prompt-support
Prompt Support
2 parents 36ec304 + 44841c3 commit 8c6834e

File tree

1 file changed

+54
-20
lines changed

1 file changed

+54
-20
lines changed

components/SLDSModal/index.jsx

Lines changed: 54 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ const customStyles = {
4242
module.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

Comments
 (0)