virtual-selector
Version:
Virtual selector component for react.js
216 lines (209 loc) • 7.17 kB
JSX
import React from 'react';
import ReactDOM from 'react-dom';
import VirtualSelector from './VirtualSelector.jsx';
import '../stylesheet/virtual-selector.less';
import '../stylesheet/virtual-selector-docs.less';
class VirtualSelectorExample extends React.Component {
displayName = 'VirtualSelectorExample';
constructor(props) {
super(props);
this.state = {
options: [
{
label: 'hello-01',
value: 'hello-01'
},
{
label: 'disabled',
value: 'disabled',
disabled: true
},
{
label: 'hello-02',
value: 'hello-02'
},
{
label: 'hello-03',
value: 'hello-03'
},
{
label: 'hello-04',
value: 'hello-04'
},
{
label: 'hello-05',
value: 'hello-05'
},
{
label: 'hello-06',
value: 'hello-06'
},
{
label: 'hello-07',
value: 'hello-07'
},
{
label: 'hello-08',
value: 'hello-08'
},
{
label: 'hello-09',
value: 'hello-09'
},
{
label: 'hello-10',
value: 'hello-10'
},
{
label: 'hello-11',
value: 'hello-11'
}
],
defaults: ['hello-02', 'hello-05'],
countries: {
options: [
{
label: '阿尔巴尼亚',
value: '阿尔巴尼亚'
},
{
label: '阿尔及利亚',
value: '阿尔及利亚'
},
{
label: '阿富汗',
value: '阿富汗'
},
{
label: '阿根廷',
value: '阿根廷'
}
],
defaults: '阿尔及利亚'
},
groups: {
options: [
{
group: 'group-1',
options: [
{
label: 'group-label-1-1',
value: 'group-label-1-1'
},
{
label: 'group-label-1-2',
value: 'group-label-1-2'
},
{
label: 'group-label-1-3',
value: 'group-label-1-3',
disabled: true
},
{
label: 'group-label-1-4',
value: 'group-label-1-4'
}
]
},
{
group: 'group-2',
options: [
{
label: 'group-label-2-1',
value: 'group-label-2-1'
},
{
label: 'group-label-2-2',
value: 'group-label-2-2'
}
]
},
{
group: 'group-3',
options: [
{
label: 'group-label-3-1',
value: 'group-label-3-1'
},
{
label: 'group-label-3-2',
value: 'group-label-3-2'
},
{
label: 'group-label-3-3',
value: 'group-label-3-3'
}
]
}
],
defaults: ['group-label-3-2', 'group-label-2-2']
}
};
}
render() {
return (
<div className="virtual-selector-example">
<div className="example-container">
<span className="label">远程获取:</span>
<VirtualSelector defaults={['label-1', 'label-2']} remote={{
url: './mocks/options.json',
field: 'results',
loading: 'loading...'
}} onSelectClose={ true } multiple={true} />
</div>
<div className="example-container">
<span className="label">分组单选:</span>
<VirtualSelector options={ this.state.groups.options } defaults={this.state.groups.defaults} onSelectClose={ true } />
</div>
<div className="example-container">
<span className="label">分组多选:</span>
<VirtualSelector options={ this.state.groups.options } defaults={this.state.groups.defaults} multiple={true} onSelectClose={ true } />
</div>
<div className="example-container">
<span className="label">单选:</span>
<VirtualSelector options={ this.state.options } onChange={(arg) => {console.log(arg)}} defaults={ this.state.defaults } onSelectClose={ true } />
</div>
<div className="example-container">
<span className="label">默认皮肤:</span>
<VirtualSelector options={ this.state.options } defaults={ this.state.defaults } multiple={ true } />
</div>
<div className="example-container">
<span className="label">info:</span>
<VirtualSelector options={ this.state.options } defaults={ this.state.defaults } multiple={ true } theme={'info'}/>
</div>
<div className="example-container">
<span className="label">purple:</span>
<VirtualSelector options={ this.state.options } defaults={ this.state.defaults } multiple={ true } theme={'purple'}/>
</div>
<div className="example-container">
<span className="label">danger:</span>
<VirtualSelector options={ this.state.options } defaults={ this.state.defaults } multiple={ true } theme={'danger'}/>
</div>
<div className="example-container">
<span className="label">success:</span>
<VirtualSelector options={ this.state.options } defaults={ this.state.defaults } multiple={ true } theme={'success'}/>
</div>
<div className="example-container">
<span className="label">inverse:</span>
<VirtualSelector options={ this.state.options } defaults={ this.state.defaults } multiple={ true } theme={'inverse'}/>
</div>
<div className="example-container">
<span className="label">选择后关闭下拉列表:</span>
<VirtualSelector options={ this.state.options } defaults={ this.state.defaults } multiple={ true } onSelectClose={ true } theme={'danger'} />
</div>
<div className="example-container">
<span className="label">选择后不关闭下拉列表:</span>
<VirtualSelector options={ this.state.options } defaults={ this.state.defaults } multiple={ true } />
</div>
<div className="example-container">
<span className="label">自定义模板:</span>
<VirtualSelector options={ this.state.countries.options } defaults={ this.state.countries.defaults } multiple={ false } onSelectClose={ true } template={{
option: '<i class="example-country" style="background-position: 0px -<%= unique * 11 %>px"></i><%= label %>',
selected: '<i class="example-country" style="background-position: 0px -<%= unique * 11 %>px"></i><%= label %>'
}} clearable={ false } />
</div>
</div>
);
}
}
ReactDOM.render(<VirtualSelectorExample />, document.getElementById('virtual-selector'));