Skip to content

Commit aeeffd7

Browse files
committed
Merge pull request #254 from salesforce-ux/lookup
Refactor Lookup so that it can accept menu items WITHOUT icons
2 parents 94127f6 + 292553f commit aeeffd7

File tree

6 files changed

+34
-8
lines changed

6 files changed

+34
-8
lines changed

components/SLDSLookup/Menu/Item/index.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,18 +62,23 @@ class Item extends React.Component {
6262
}
6363

6464
getLabel(){
65+
let icon;
6566
if(this.props.listItemLabelRenderer){
6667
const ListItemLabel = this.props.listItemLabelRenderer;
6768
return <ListItemLabel {... this.props} />;
6869
}
70+
if(this.props.iconName){
71+
icon = <SLDSIcon category={this.props.iconCategory} inverse={this.props.iconInverse} key={this.props.iconName} name={this.props.iconName} size="small" />;
72+
}
6973
return [
70-
<SLDSIcon category={this.props.iconCategory} inverse={this.props.iconInverse} key={this.props.iconName} name={this.props.iconName} size="small" />,
74+
icon,
7175
this.boldSearchText(this.props.children.label)
7276
]
7377
}
7478

7579
render(){
7680
let className = 'slds-lookup__item';
81+
let labelClassName = this.props.iconName ? '' : 'slds-m-left--x-small';
7782
let id = this.props.id;
7883
if(this.props.isActive) className += ' slds-theme--shade';
7984

@@ -89,7 +94,9 @@ class Item extends React.Component {
8994
ref={id}
9095
role="option"
9196
tabIndex="-1">
97+
<span className={labelClassName}>
9298
{ this.getLabel() }
99+
</span>
93100
</a>
94101
</li>
95102
)

components/SLDSLookup/index.jsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -408,13 +408,13 @@ class SLDSLookup extends React.Component {
408408

409409
renderSelectedItem() {
410410
let selectedItem = this.props.options[this.state.selectedIndex].label;
411+
const renderIcon = this.props.iconName ? <SLDSIcon category={this.props.iconCategory} className="slds-icon slds-pill__icon" inverse={this.props.iconInverse} name={this.props.iconName} /> : null;
412+
let labelClassName = this.props.iconName ? 'slds-pill__label' : 'slds-pill__label slds-m-left--x-small';
411413
return (
412414
<a href="javascript:void(0)" className="slds-pill" ref={"pill-" + this.state.selectedIndex} onKeyDown={this.handlePillKeyDown.bind(this)}>
413-
<span className="slds-pill__label">
414-
<SLDSIcon category={this.props.iconCategory} className="slds-icon slds-pill__icon" inverse={this.props.iconInverse} name={this.props.iconName} />
415-
<span className="slds-pill__label">
416-
{selectedItem}
417-
</span>
415+
{renderIcon}
416+
<span className={labelClassName}>
417+
{selectedItem}
418418
</span>
419419
<SLDSButton
420420
assistiveText="Press delete to remove"

demo/Samples.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const Samples = {
1010
IconButtons: require('fs').readFileSync('demo/code-snippets/ButtonIconExamples.js', 'utf8'),
1111
Lookups1: require('fs').readFileSync('demo/code-snippets/LookupExamples1.js', 'utf8'),
1212
Lookups2: require('fs').readFileSync('demo/code-snippets/LookupExamples2.js', 'utf8'),
13+
Lookups3: require('fs').readFileSync('demo/code-snippets/LookupExamples3.js', 'utf8'),
1314
Modals1: require('fs').readFileSync('demo/code-snippets/ModalExamples1.js', 'utf8'),
1415
Modals2: require('fs').readFileSync('demo/code-snippets/ModalExamples2.js', 'utf8'),
1516
Modals3: require('fs').readFileSync('demo/code-snippets/ModalExamples3.js', 'utf8'),

demo/code-snippets/LookupExamples3.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<SLDSLookup
2+
emptyMessage="No items found"
3+
hasError={false}
4+
label="Account"
5+
onChange={function(newValue){console.log("New search term: ", newValue)}}
6+
onSelect={function(item){console.log(item , " Selected")}}
7+
options={[
8+
{label: "Paddy\"s Pub"},
9+
{label: "Tyrell Corp"},
10+
{label: "Paper St. Soap Company"},
11+
{label: "Nakatomi Investments"},
12+
{label: "Acme Landscaping"},
13+
{label: "Acme Construction"}
14+
]}
15+
/>

demo/pages/LookupSection.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ class LookupSection extends React.Component {
3939
{docs ? <p dangerouslySetInnerHTML={this.getDescription()} className="slds-p-vertical--small" style={{ "maxWidth": "800px"}} /> : null}
4040
</div>
4141

42+
<section className="slds-p-vertical--large">
43+
<CodeMirror codeText={Samples.Lookups3} />
44+
</section>
4245
<section className="slds-p-vertical--large">
4346
<CodeMirror codeText={Samples.Lookups1} />
4447
</section>

tests/SLDSLookup/lookup.test.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ describe('SLDSLookup: ', function(){
137137
TestUtils.Simulate.keyDown(input, {key: "Down", keyCode: 40, which: 40});
138138
TestUtils.Simulate.keyDown(input, {key: "Down", keyCode: 40, which: 40});
139139
TestUtils.Simulate.keyDown(input, {key: "Enter", keyCode: 13, which: 13});
140-
let selected = lookup.getElementsByTagName("a")[0].getElementsByTagName('span')[0].innerText;
140+
let selected = lookup.getElementsByTagName("a")[0].getElementsByClassName('slds-pill__label')[0].innerText;
141141
expect(selected).to.equal('Paper St. Soap Company');
142142
});
143143

@@ -149,7 +149,7 @@ describe('SLDSLookup: ', function(){
149149
TestUtils.Simulate.keyDown(input, {key: "Down", keyCode: 40, which: 40});
150150
TestUtils.Simulate.keyDown(input, {key: "Down", keyCode: 40, which: 40});
151151
TestUtils.Simulate.keyDown(input, {key: "Enter", keyCode: 13, which: 13});
152-
let selected = lookup.getElementsByTagName("a")[0].getElementsByTagName('span')[0].innerText;
152+
let selected = lookup.getElementsByTagName("a")[0].getElementsByClassName('slds-pill__label')[0].innerText;
153153
expect(selected).to.equal('Tyrell Corp');
154154
});
155155

0 commit comments

Comments
 (0)