Skip to content

Commit ce8a585

Browse files
committed
Add error/emptymessage/messages into lookup
1 parent ef5c220 commit ce8a585

File tree

2 files changed

+31
-15
lines changed

2 files changed

+31
-15
lines changed

components/SLDSLookup/Menu/index.js

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,17 @@ class Menu extends React.Component {
6666
}
6767
}
6868
renderMessages(){
69-
if (this.props.messages.length){
70-
return <li className="slds-lookup__item" role="presentaion">
71-
{this.props.messages.join("; ")}
72-
</li>
73-
}
69+
return this.props.messages.map((message) => {
70+
return <li className="slds-lookup__message" aria-live="polite">{message}</li>;
71+
});
72+
}
73+
74+
renderErrors(){
75+
return this.props.errors.map((error) => {
76+
return <li className="slds-lookup__error" aria-live="polite">{error}</li>;
77+
});
7478
}
79+
7580
renderItems(){
7681
return this.props.items.filter(this.filter, this).map((c, i) => {
7782
//isActive means it is aria-activedescendant
@@ -99,13 +104,26 @@ class Menu extends React.Component {
99104
});
100105
}
101106

107+
renderContent() {
108+
if (this.props.errors.length)
109+
return this.renderErrors
110+
else if (this.props.items.length === 0)
111+
return <li className="slds-lookup__message" aria-live="polite">{this.props.emptyMessage}</li>;
112+
113+
elements = this.renderItems()
114+
if (this.props.messages.length){
115+
return elements.concat(this.renderMessages());
116+
}
117+
return elements;
118+
119+
}
120+
102121
render(){
103122
return (
104123
<section id="menuContainer">
105124
{this.renderHeader()}
106125
<ul id="list" className="slds-lookup__list" role="presentation" ref="list">
107-
{this.renderMessages()}
108-
{this.renderItems()}
126+
{this.renderContent()}
109127
</ul>
110128
{this.renderFooter()}
111129
</section>
@@ -120,7 +138,9 @@ Menu.propTypes = {
120138
focusIndex: React.PropTypes.number,
121139
listLength: React.PropTypes.number,
122140
items: React.PropTypes.array,
141+
emptyMessage: React.PropTypes.string,
123142
messages: React.PropTypes.arrayOf(React.PropTypes.string),
143+
errors: React.PropTypes.arrayOf(React.PropTypes.string),
124144
filterWith: React.PropTypes.func,
125145
getListLength: React.PropTypes.func,
126146
setFocus: React.PropTypes.func,

components/SLDSLookup/index.jsx

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ class SLDSLookup extends React.Component {
193193
items={this.state.items}
194194
emptyMessage={this.props.emptyMessage}
195195
messages={this.state.messages}
196+
errors={this.state.errors}
196197
filterWith={this.props.filterWith}
197198
getListLength={this.getListLength.bind(this)}
198199
setFocus={this.setFocus.bind(this)}
@@ -224,11 +225,6 @@ class SLDSLookup extends React.Component {
224225
}
225226
};
226227

227-
renderErrors(){
228-
if (this.state.errors.length){
229-
return <div className="slds-lookup__error">{this.state.errors.join("; ")}</div>;
230-
}
231-
}
232228
renderSelectedItem(){
233229
let selectedItem = this.props.items[this.state.selectedIndex].label;
234230
return (
@@ -270,7 +266,7 @@ class SLDSLookup extends React.Component {
270266
this.setState({message: newProps.message});
271267
}
272268
if (newProps.error){
273-
this.setState({error: newProps.error});
269+
this.setState({errors: newProps.error});
274270
}
275271
}
276272

@@ -307,7 +303,6 @@ class SLDSLookup extends React.Component {
307303
value={this.state.searchTerm}
308304
/>
309305
</div>
310-
{this.renderErrors()}
311306
{this.props.modal?this.renderModalMenu():this.renderSimpleMenu()}
312307
</section>
313308
</div>
@@ -319,8 +314,9 @@ class SLDSLookup extends React.Component {
319314
SLDSLookup.propTypes = {
320315
items: React.PropTypes.array,
321316
errors: React.PropTypes.arrayOf(React.PropTypes.string),
322-
emptyMessage: React.PropTypes.string
317+
emptyMessage: React.PropTypes.string,
323318
messages: React.PropTypes.arrayOf(React.PropTypes.string),
319+
errors: React.PropTypes.arrayOf(React.PropTypes.string),
324320
label: React.PropTypes.string,
325321
type: React.PropTypes.string,
326322
filterWith: React.PropTypes.func,

0 commit comments

Comments
 (0)