Skip to content

Commit b5c1e8a

Browse files
committed
Merge pull request #24 from salesforce-ux/lookups-refactor
Lookups refactor
2 parents cd64dee + 15d2cb3 commit b5c1e8a

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

components/SLDSLookup/index.jsx

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ class SLDSLookup extends React.Component {
4141
if(this.refs.lookup) React.findDOMNode(this.refs.lookup).focus();
4242
}
4343
else if(!prevState.selectedIndex && this.state.selectedIndex){
44-
if(this.refs.clearSelectedItemButton) React.findDOMNode(this.refs.clearSelectedItemButton).focus();
44+
let selectedItem = 'pill-' + this.state.selectedIndex;
45+
if(this.refs[selectedItem]) React.findDOMNode(this.refs[selectedItem]).focus();
4546
}
4647
}
4748

@@ -141,6 +142,15 @@ class SLDSLookup extends React.Component {
141142
}
142143
}
143144

145+
handlePillKeyDown(event){
146+
if(event.keyCode){
147+
if(event.keyCode === KEYS.DELETE || event.keyCode === KEYS.BACKSPACE){
148+
EventUtil.trapImmediate(event);
149+
this.handleDeleteSelected();
150+
}
151+
}
152+
}
153+
144154
//=================================================
145155
// Rendering Things
146156
renderMenu(){
@@ -164,41 +174,44 @@ class SLDSLookup extends React.Component {
164174
renderSelectedItem(){
165175
let selectedItem = this.props.items[this.state.selectedIndex].label;
166176
return (
167-
<div className="slds-pill">
168-
<a href="#" className="slds-pill__label">
177+
<a href="#" className="slds-pill" ref={'pill-' + this.state.selectedIndex} onKeyDown={this.handlePillKeyDown.bind(this)}>
178+
<span className="slds-pill__label">
169179
<Icon name={this.props.type} />
170180
{selectedItem}
171-
</a>
181+
</span>
172182
<SLDSButton
173-
label={'Remove ' + selectedItem}
183+
label='Press delete to remove'
174184
variant='icon'
175185
iconName='close'
176186
iconSize='medium'
187+
disabled={true}
177188
onClick={this.handleDeleteSelected.bind(this)}
178189
ref="clearSelectedItemButton"
179190
/>
180-
</div>
191+
</a>
181192
);
182193
}
183194

184195
render(){
185196
let inputClasses = this.state.selectedIndex === null ? 'slds-input':'slds-input slds-hide';
186197
let componentClasses = this.state.selectedIndex === null ? "slds-lookup ignore-react-onclickoutside":"slds-lookup ignore-react-onclickoutside slds-has-selection";
198+
let inputContainerClasses = this.state.selectedIndex === null ? '':' slds-input';
199+
let inputContainerStyle = this.state.selectedIndex === null ? {} : {padding: '5px'};
187200

188201
return (
189-
<div className={componentClasses} data-select="single" data-scope="single" data-typeahead="true">
202+
<div className={componentClasses} data-select="multi" data-scope="single" data-typeahead="true">
190203
<section className="slds-form-element">
191-
<label className="slds-form-element__label" forHTML="lookup">{this.props.label}</label>
192204

193-
<div className="slds-lookup__control slds-input-has-icon slds-input-has-icon--right">
205+
<label className="slds-form-element__label" htmlFor={this.props.type + "Lookup"}>{this.props.label}</label>
206+
207+
<div className={"slds-lookup__control slds-input-has-icon slds-input-has-icon--right" + inputContainerClasses} style={inputContainerStyle}>
194208
{ this.state.selectedIndex !== null ? this.renderSelectedItem() : null }
195209
<InputIcon name="search"/>
196210
<input
197-
id="lookup"
211+
id={this.props.type + "Lookup"}
198212
ref="lookup"
199213
className={inputClasses}
200214
type="text"
201-
aria-label="lookup"
202215
aria-haspopup="true"
203216
aria-autocomplete="list"
204217
aria-activedescendant={this.state.currentFocus ? this.state.currentFocus:""}

components/utils/KEYS.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ module.exports = {
66
UP :38,
77
RIGHT :39,
88
DOWN :40,
9-
TAB :9
10-
};
9+
TAB :9,
10+
DELETE :46,
11+
BACKSPACE :8
12+
};

0 commit comments

Comments
 (0)