@salesforce/design-system-react
Version:
Salesforce Lightning Design System for React
154 lines (143 loc) • 3.25 kB
JSX
import React from 'react';
import { storiesOf } from '@storybook/react';
import { action } from '@storybook/addon-actions';
import IconSettings from '../../icon-settings';
import { LOOKUP } from '../../../utilities/constants';
import Lookup from '../../lookup';
import Header from '../../lookup/header';
import Footer from '../../lookup/footer';
import SLDSButton from '../../button';
import Default from '../__examples__/default';
import Files from '../__examples__/files';
import WithSelection from '../__examples__/with-selection';
import DeprecatedWarning from '../../utilities/deprecated-warning';
class DemoLookup extends React.Component {
static displayName = 'DemoLookup';
state = {
options: [
{
label: 'File 1',
},
{
label: 'File 2',
},
{
label: 'File 3',
},
{
label: 'File 4',
},
],
};
clearSelected = () => {
this.setState({
currentSelected: -1,
});
};
handleSelect = (selectedItem, ...rest) => {
action('select')(selectedItem, ...rest);
this.setState({
currentSelected: this.state.options.indexOf(selectedItem),
});
};
render() {
return (
<div>
<div>
<SLDSButton onClick={this.clearSelected}>Clear Selected</SLDSButton>
</div>
<Lookup
{...this.props}
onChange={action('change')}
onSelect={this.handleSelect}
options={this.state.options}
selectedItem={this.state.currentSelected}
/>
</div>
);
}
}
class DemoLookupAccounts extends React.Component {
static displayName = 'DemoLookupAccounts';
state = {
options: [
{
label: "Paddy's Pub",
subTitle: 'Boston, MA',
},
{
label: 'Tyrell Corp',
subTitle: 'San Francisco, CA',
},
{
label: 'Paper St. Soap Company',
subTitle: 'Beloit, WI',
},
{
label: 'Nakatomi Investments',
subTitle: 'Chicago, IL',
},
{
label: 'Acme Landscaping',
},
{
label: 'Acme Construction',
subTitle: 'Grand Marais, MN',
},
],
};
handleSelect = (selectedItem, ...rest) => {
action('select')(selectedItem, ...rest);
this.setState({
selectedItem,
});
};
render() {
return (
<Lookup
{...this.props}
footerRenderer={Footer}
headerRenderer={Header}
onChange={action('change')}
onSelect={this.handleSelect}
options={this.state.options}
/>
);
}
}
storiesOf(LOOKUP, module)
.addDecorator((getStory) => (
<div className="slds-p-around_medium">
<IconSettings iconPath="/assets/icons">
{<DeprecatedWarning />}
{getStory()}
</IconSettings>
</div>
))
.add('Standard', () => (
<DemoLookup
emptyMessage="No Files found"
hasError={false}
iconCategory="utility"
iconName="open_folder"
isInline
label="Files"
/>
))
.add('Disabled', () => <DemoLookup disabled />)
.add('Standard with Accounts', () => (
<DemoLookupAccounts
emptyMessage="No Accounts found"
hasError={false}
iconCategory="standard"
iconName="account"
isInline
label="Account"
/>
))
.add('Custom Empty Message Content', () => (
<DemoLookup emptyMessage={<span>No matches.</span>} isInline />
))
.add('Docs site Default', () => <Default />)
.add('Docs site Files', () => <Files />)
.add('Docs site WithSelection', () => <WithSelection />);