Skip to content

Commit 75b7a62

Browse files
committed
Link up key/space keys to trigger selectItem
1 parent 51fdd9b commit 75b7a62

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

components/SLDSLookup/Menu/Item/index.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ class Item extends React.Component {
3939

4040
//TODO: make isActive styles into a class??
4141
let styles = {};
42-
if(this.props.isActive) styles = {backgroundColor: 'red'};
42+
if(this.props.isActive) className += ' slds-theme--shade';
43+
4344

4445
return (
4546
//IMPORTANT: id is used to set lookup's input's aria-activedescendant

components/SLDSLookup/index.jsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,18 @@ class SLDSLookup extends React.Component {
6868
//=================================================
6969
// Basic Event Listeners on Input
7070
handleClose() {
71-
this.setState({isOpen:false})
71+
this.setState({
72+
isOpen:false,
73+
activeIndex:null
74+
})
7275
}
7376

7477
handleClick() {
7578
this.setState({isOpen:true})
7679
}
7780

7881
handleBlur() {
79-
this.setState({isOpen:false})
82+
this.handleClose();
8083
}
8184

8285
handleFocus() {
@@ -94,7 +97,7 @@ class SLDSLookup extends React.Component {
9497
event.keyCode === KEYS.ESCAPE ? this.handleClose() : this.handleClick();
9598

9699
//If user hits tab key, move aria activedescendant to first menu item
97-
if(event.keyCode === KEYS.TAB){
100+
if(event.keyCode === KEYS.TAB && this.state.activeIndex === null){
98101
this.setState({activeIndex: 0});
99102
EventUtil.trapImmediate(event);
100103
}
@@ -109,8 +112,10 @@ class SLDSLookup extends React.Component {
109112
this.decreaseIndex();
110113
}
111114

112-
else if(event.keyCode === KEYS.ENTER){
115+
//If user hits enter/space key, select current activedescendant item
116+
else if(event.keyCode === KEYS.ENTER || event.keyCode === KEYS.SPACE){
113117
EventUtil.trapImmediate(event);
118+
this.selectItem(this.state.activeIndex);
114119
}
115120
}
116121
}
@@ -158,7 +163,7 @@ class SLDSLookup extends React.Component {
158163
<label className="slds-form-element__label" forHTML="lookup">{this.props.label}</label>
159164

160165
<div className="slds-lookup__control slds-input-has-icon slds-input-has-icon--right">
161-
{ this.state.selectedIndex ? this.renderSelectedItem() : null }
166+
{ this.state.selectedIndex !== null ? this.renderSelectedItem() : null }
162167
<InputIcon name="search"/>
163168
<input
164169
id="lookup"

0 commit comments

Comments
 (0)