You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.2 KiB
110 lines
2.2 KiB
/* eslint-disable no-console,func-names,react/no-multi-comp */
|
|
import Table from '../index'
|
|
import '../assets/index.less'
|
|
import Menu from '../../menu'
|
|
const Item = Menu.Item
|
|
const Divider = Menu.Divider
|
|
import DropDown from '../../dropdown'
|
|
|
|
const data = []
|
|
for (let i = 0; i < 10; i++) {
|
|
data.push({
|
|
key: i,
|
|
a: `a${i}`,
|
|
b: `b${i}`,
|
|
c: `c${i}`,
|
|
})
|
|
}
|
|
|
|
export default {
|
|
data () {
|
|
this.filters = []
|
|
return {
|
|
visible: false,
|
|
}
|
|
},
|
|
methods: {
|
|
handleVisibleChange (visible) {
|
|
this.visible = visible
|
|
},
|
|
|
|
handleSelect (selected) {
|
|
this.filters.push(selected)
|
|
},
|
|
|
|
handleDeselect (key) {
|
|
const index = this.filters.indexOf(key)
|
|
if (index !== -1) {
|
|
this.filters.splice(index, 1)
|
|
}
|
|
},
|
|
|
|
confirmFilter () {
|
|
console.log(this.filters.join(','))
|
|
this.visible = false
|
|
},
|
|
},
|
|
|
|
render () {
|
|
const menu = (
|
|
<Menu
|
|
style={{ width: '200px' }}
|
|
multiple
|
|
selectable
|
|
onSelect={this.handleSelect}
|
|
onDeselect={this.handleDeselect}
|
|
>
|
|
<Item key='1'>one</Item>
|
|
<Item key='2'>two</Item>
|
|
<Item key='3'>three</Item>
|
|
<Divider />
|
|
<Item disabled>
|
|
<button
|
|
style={{
|
|
cursor: 'pointer',
|
|
color: '#000',
|
|
pointerEvents: 'visible',
|
|
}}
|
|
onClick={this.confirmFilter}
|
|
>确定</button>
|
|
</Item>
|
|
</Menu>
|
|
)
|
|
|
|
const columns = [
|
|
{
|
|
title: (
|
|
<div>
|
|
title1
|
|
<DropDown
|
|
trigger={['click']}
|
|
onVisibleChange={this.handleVisibleChange}
|
|
visible={this.visible}
|
|
>
|
|
<template slot='overlay'>
|
|
{menu}
|
|
</template>
|
|
<a href='#'>filter</a>
|
|
</DropDown>
|
|
</div>
|
|
), key: 'a', dataIndex: 'a', width: 100,
|
|
},
|
|
{ title: 'title2', key: 'b', dataIndex: 'b', width: 100 },
|
|
{ title: 'title3', key: 'c', dataIndex: 'c', width: 200 },
|
|
]
|
|
|
|
return (
|
|
<div>
|
|
<h2>use dropdown</h2>
|
|
<Table
|
|
columns={columns}
|
|
data={data}
|
|
rowKey={record => record.key}
|
|
/>
|
|
</div>
|
|
|
|
)
|
|
},
|
|
}
|
|
|