add vc-table demo
parent
820254cd73
commit
d409ad7c25
|
@ -0,0 +1,48 @@
|
||||||
|
/* eslint-disable no-console,func-names,react/no-multi-comp */
|
||||||
|
import Table from '../index'
|
||||||
|
import '../assets/index.less'
|
||||||
|
|
||||||
|
const data = [
|
||||||
|
{ a: '123', b: 'xxxxxxxx', d: 3, key: '1' },
|
||||||
|
{ a: 'cdd', b: 'edd12221', d: 3, key: '2' },
|
||||||
|
{ a: '133', c: 'edd12221', d: 2, key: '3' },
|
||||||
|
{ a: '133', c: 'edd12221', d: 2, key: '4' },
|
||||||
|
{ a: '133', c: 'edd12221', d: 2, key: '5' },
|
||||||
|
{ a: '133', c: 'edd12221', d: 2, key: '6' },
|
||||||
|
{ a: '133', c: 'edd12221', d: 2, key: '7' },
|
||||||
|
{ a: '133', c: 'edd12221', d: 2, key: '8' },
|
||||||
|
{ a: '133', c: 'edd12221', d: 2, key: '9' },
|
||||||
|
]
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
this.columns = [
|
||||||
|
{ title: 'title1', dataIndex: 'a', key: 'a', width: '100px', fixed: 'left' },
|
||||||
|
{ title: 'title2', dataIndex: 'b', key: 'b', width: '100px', fixed: 'left' },
|
||||||
|
{ title: 'title3', dataIndex: 'c', key: 'c' },
|
||||||
|
{ title: 'title4', dataIndex: 'b', key: 'd' },
|
||||||
|
{ title: 'title5', dataIndex: 'b', key: 'e' },
|
||||||
|
{ title: 'title6', dataIndex: 'b', key: 'f' },
|
||||||
|
{ title: <div>title7<br /><br /><br />Hello world!</div>, dataIndex: 'b', key: 'g' },
|
||||||
|
{ title: 'title8', dataIndex: 'b', key: 'h' },
|
||||||
|
{ title: 'title9', dataIndex: 'b', key: 'i' },
|
||||||
|
{ title: 'title10', dataIndex: 'b', key: 'j' },
|
||||||
|
{ title: 'title11', dataIndex: 'b', key: 'k' },
|
||||||
|
{ title: 'title12', dataIndex: 'b', key: 'l', width: '100px', fixed: 'right' },
|
||||||
|
]
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
render () {
|
||||||
|
return (
|
||||||
|
<div style={{ width: '800px' }}>
|
||||||
|
<h2>Fixed columns</h2>
|
||||||
|
<Table
|
||||||
|
columns={this.columns}
|
||||||
|
expandedRowRender={record => record.key}
|
||||||
|
expandIconAsCell
|
||||||
|
scroll={{ x: 1200 }}
|
||||||
|
data={data}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
/* eslint-disable no-console,func-names,react/no-multi-comp */
|
||||||
|
import Table from '../index'
|
||||||
|
import '../assets/index.less'
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{ title: 'title1', dataIndex: 'a', key: 'a', width: 100, fixed: 'left' },
|
||||||
|
{ title: 'title2', dataIndex: 'b', key: 'b', width: 100, fixed: 'left' },
|
||||||
|
{ title: 'title3', dataIndex: 'c', key: 'c', width: 150 },
|
||||||
|
{ title: 'title4', dataIndex: 'c', key: 'd', width: 150 },
|
||||||
|
{ title: 'title5', dataIndex: 'c', key: 'e', width: 150 },
|
||||||
|
{ title: 'title6', dataIndex: 'c', key: 'f', width: 150 },
|
||||||
|
{ title: 'title7', dataIndex: 'c', key: 'g', width: 150 },
|
||||||
|
{ title: 'title8', dataIndex: 'c', key: 'h', width: 150 },
|
||||||
|
{ title: 'title9', dataIndex: 'b', key: 'i', width: 150 },
|
||||||
|
{ title: 'title10', dataIndex: 'b', key: 'j', width: 150 },
|
||||||
|
{ title: 'title11', dataIndex: 'b', key: 'k', width: 150 },
|
||||||
|
{ title: 'title12', dataIndex: 'b', key: 'l', width: 100, fixed: 'right' },
|
||||||
|
]
|
||||||
|
|
||||||
|
const data = [
|
||||||
|
{ a: 'aaa', b: 'bbb', c: '内容内容内容内容内容', d: 3, key: '1' },
|
||||||
|
{ a: 'aaa', b: 'bbb', c: '内容内容内容内容内容', d: 3, key: '2' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '3' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '4' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '5' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '6' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '7' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '8' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '9' },
|
||||||
|
]
|
||||||
|
export default {
|
||||||
|
render () {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h2>Fixed columns and header</h2>
|
||||||
|
<Table columns={columns} scroll={{ x: 1650, y: 300 }} data={data} style={{ width: '800px' }} />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
/* eslint-disable no-console,func-names,react/no-multi-comp */
|
||||||
|
import Table from '../index'
|
||||||
|
import '../assets/index.less'
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{ title: 'title1', dataIndex: 'a', key: 'a', width: 100, fixed: 'left' },
|
||||||
|
{ title: 'title2', dataIndex: 'b', key: 'b', width: 100, fixed: 'left' },
|
||||||
|
{ title: 'titletitle3', dataIndex: 'c', key: 'c' },
|
||||||
|
{ title: 'title4', dataIndex: 'c', key: 'd', width: 150 },
|
||||||
|
{ title: 'title5', dataIndex: 'c', key: 'e', width: 150 },
|
||||||
|
{ title: 'title6', dataIndex: 'c', key: 'f', width: 150 },
|
||||||
|
{ title: 'title7', dataIndex: 'c', key: 'g', width: 150 },
|
||||||
|
{ title: 'title8', dataIndex: 'c', key: 'h', width: 150 },
|
||||||
|
{ title: 'title9', dataIndex: 'b', key: 'i', width: 150 },
|
||||||
|
{ title: 'title10', dataIndex: 'b', key: 'j', width: 150 },
|
||||||
|
{ title: 'title11', dataIndex: 'b', key: 'k', width: 150 },
|
||||||
|
{ title: 'title12', dataIndex: 'b', key: 'l', width: 100, fixed: 'right' },
|
||||||
|
]
|
||||||
|
|
||||||
|
const data = [
|
||||||
|
{ a: 'aaa', b: 'bbb', c: '内容内容内容内容内容', d: 3, key: '1' },
|
||||||
|
{ a: 'aaa', b: 'bbb', c: '内容内容内容内容内容', d: 3, key: '2' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '3' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '4' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '5' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '6' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '7' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '8' },
|
||||||
|
{ a: 'aaa', c: '内容内容内容内容内容', d: 2, key: '9' },
|
||||||
|
]
|
||||||
|
export default {
|
||||||
|
render () {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h2>Fixed columns and header, resize window for test</h2>
|
||||||
|
<Table columns={columns} scroll={{ x: '150%', y: 300 }} data={data} />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,100 @@
|
||||||
|
/* eslint-disable no-console,func-names,react/no-multi-comp */
|
||||||
|
import Table from '../index'
|
||||||
|
import '../assets/index.less'
|
||||||
|
import '../assets/bordered.less'
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
dataIndex: 'name',
|
||||||
|
key: 'name',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '其它',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
title: '年龄',
|
||||||
|
dataIndex: 'age',
|
||||||
|
key: 'age',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '住址',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
title: '街道',
|
||||||
|
dataIndex: 'street',
|
||||||
|
key: 'street',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '小区',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
title: '单元',
|
||||||
|
dataIndex: 'building',
|
||||||
|
key: 'building',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '门牌',
|
||||||
|
dataIndex: 'number',
|
||||||
|
key: 'number',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '公司',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
title: '地址',
|
||||||
|
dataIndex: 'companyAddress',
|
||||||
|
key: 'companyAddress',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '名称',
|
||||||
|
dataIndex: 'companyName',
|
||||||
|
key: 'companyName',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '性别',
|
||||||
|
dataIndex: 'gender',
|
||||||
|
key: 'gender',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
const data = [{
|
||||||
|
key: '1',
|
||||||
|
name: '胡彦斌',
|
||||||
|
age: 32,
|
||||||
|
street: '拱墅区和睦街道',
|
||||||
|
building: 1,
|
||||||
|
number: 2033,
|
||||||
|
companyAddress: '西湖区湖底公园',
|
||||||
|
companyName: '湖底有限公司',
|
||||||
|
gender: '男',
|
||||||
|
}, {
|
||||||
|
key: '2',
|
||||||
|
name: '胡彦祖',
|
||||||
|
age: 42,
|
||||||
|
street: '拱墅区和睦街道',
|
||||||
|
building: 3,
|
||||||
|
number: 2035,
|
||||||
|
companyAddress: '西湖区湖底公园',
|
||||||
|
companyName: '湖底有限公司',
|
||||||
|
gender: '男',
|
||||||
|
}]
|
||||||
|
|
||||||
|
export default {
|
||||||
|
render () {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h2>grouping columns</h2>
|
||||||
|
<Table columns={columns} data={data} class='bordered' />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
/* eslint-disable no-console,func-names,react/no-multi-comp */
|
||||||
|
import Table from '../index'
|
||||||
|
import '../assets/index.less'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
data: [{ a: '123' }, { a: 'cdd', b: 'edd' }, { a: '1333', c: 'eee', d: 2 }],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
remove (index) {
|
||||||
|
const rows = this.data
|
||||||
|
rows.splice(index, 1)
|
||||||
|
this.data = rows
|
||||||
|
},
|
||||||
|
|
||||||
|
handleClick (index) {
|
||||||
|
this.remove(index)
|
||||||
|
},
|
||||||
|
|
||||||
|
checkbox (h, a) {
|
||||||
|
return <label>
|
||||||
|
<input type='checkbox' />
|
||||||
|
{a}
|
||||||
|
</label>
|
||||||
|
},
|
||||||
|
|
||||||
|
renderAction (h, o, row, index) {
|
||||||
|
return <a href='javascript:;' onClick={() => this.handleClick(index)}>Delete</a>
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const columns = [
|
||||||
|
{ title: 'title1', dataIndex: 'a', key: 'a', width: 100, render: this.checkbox },
|
||||||
|
{ title: 'title2', dataIndex: 'b', key: 'b', width: 100 },
|
||||||
|
{ title: 'title3', dataIndex: 'c', key: 'c', width: 200 },
|
||||||
|
{ title: 'Operations', dataIndex: '', key: 'x', render: this.renderAction },
|
||||||
|
]
|
||||||
|
return (
|
||||||
|
<Table columns={columns} data={this.data} class='table' rowKey={record => record.a} />
|
||||||
|
)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
@ -159,7 +159,7 @@ const BaseTable = {
|
||||||
if (scroll.x === true) {
|
if (scroll.x === true) {
|
||||||
tableStyle.tableLayout = 'fixed'
|
tableStyle.tableLayout = 'fixed'
|
||||||
} else {
|
} else {
|
||||||
tableStyle.width = `${scroll.x}px`
|
tableStyle.width = typeof scroll.x === 'number' ? `${scroll.x}px` : scroll.x
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ export default {
|
||||||
updateTableRef () {
|
updateTableRef () {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.fixedColumnsBodyLeft && this.table.saveChildrenRef('fixedColumnsBodyLeft', this.$refs.fixedColumnsBodyLeft)
|
this.$refs.fixedColumnsBodyLeft && this.table.saveChildrenRef('fixedColumnsBodyLeft', this.$refs.fixedColumnsBodyLeft)
|
||||||
this.$refs.fixedColumnsBodyRight && this.table.saveChildrenRef('fixedColumnsBodyRight', this.$refs.fixedColumnsBodyLeft)
|
this.$refs.fixedColumnsBodyRight && this.table.saveChildrenRef('fixedColumnsBodyRight', this.$refs.fixedColumnsBodyRight)
|
||||||
this.$refs.bodyTable && this.table.saveChildrenRef('bodyTable', this.$refs.bodyTable)
|
this.$refs.bodyTable && this.table.saveChildrenRef('bodyTable', this.$refs.bodyTable)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -59,11 +59,13 @@ export default {
|
||||||
if (scroll.y) {
|
if (scroll.y) {
|
||||||
// maxHeight will make fixed-Table scrolling not working
|
// maxHeight will make fixed-Table scrolling not working
|
||||||
// so we only set maxHeight to body-Table here
|
// so we only set maxHeight to body-Table here
|
||||||
|
let maxHeight = bodyStyle.maxHeight || scroll.y
|
||||||
|
maxHeight = typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight
|
||||||
if (fixed) {
|
if (fixed) {
|
||||||
innerBodyStyle.maxHeight = bodyStyle.maxHeight || scroll.y
|
innerBodyStyle.maxHeight = maxHeight
|
||||||
innerBodyStyle.overflowY = bodyStyle.overflowY || 'scroll'
|
innerBodyStyle.overflowY = bodyStyle.overflowY || 'scroll'
|
||||||
} else {
|
} else {
|
||||||
bodyStyle.maxHeight = bodyStyle.maxHeight || scroll.y
|
bodyStyle.maxHeight = maxHeight
|
||||||
}
|
}
|
||||||
bodyStyle.overflowY = bodyStyle.overflowY || 'scroll'
|
bodyStyle.overflowY = bodyStyle.overflowY || 'scroll'
|
||||||
useFixedHeader = true
|
useFixedHeader = true
|
||||||
|
|
|
@ -279,7 +279,6 @@ export default {
|
||||||
shallowequal(state.fixedColumnsBodyRowsHeight, fixedColumnsBodyRowsHeight)) {
|
shallowequal(state.fixedColumnsBodyRowsHeight, fixedColumnsBodyRowsHeight)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
console.log(fixedColumnsHeadRowsHeight, fixedColumnsBodyRowsHeight)
|
|
||||||
this.store.setState({
|
this.store.setState({
|
||||||
fixedColumnsHeadRowsHeight,
|
fixedColumnsHeadRowsHeight,
|
||||||
fixedColumnsBodyRowsHeight,
|
fixedColumnsBodyRowsHeight,
|
||||||
|
@ -323,14 +322,14 @@ export default {
|
||||||
handleBodyScrollTop (e) {
|
handleBodyScrollTop (e) {
|
||||||
const target = e.target
|
const target = e.target
|
||||||
const { scroll = {}} = this
|
const { scroll = {}} = this
|
||||||
const { ref_headTable, ref_bodyTable, fixedColumnsBodyLeft, fixedColumnsBodyRight } = this
|
const { ref_headTable, ref_bodyTable, ref_fixedColumnsBodyLeft, ref_fixedColumnsBodyRight } = this
|
||||||
if (target.scrollTop !== this.lastScrollTop && scroll.y && target !== ref_headTable) {
|
if (target.scrollTop !== this.lastScrollTop && scroll.y && target !== ref_headTable) {
|
||||||
const scrollTop = target.scrollTop
|
const scrollTop = target.scrollTop
|
||||||
if (fixedColumnsBodyLeft && target !== fixedColumnsBodyLeft) {
|
if (ref_fixedColumnsBodyLeft && target !== ref_fixedColumnsBodyLeft) {
|
||||||
fixedColumnsBodyLeft.scrollTop = scrollTop
|
ref_fixedColumnsBodyLeft.scrollTop = scrollTop
|
||||||
}
|
}
|
||||||
if (fixedColumnsBodyRight && target !== fixedColumnsBodyRight) {
|
if (ref_fixedColumnsBodyRight && target !== ref_fixedColumnsBodyRight) {
|
||||||
fixedColumnsBodyRight.scrollTop = scrollTop
|
ref_fixedColumnsBodyRight.scrollTop = scrollTop
|
||||||
}
|
}
|
||||||
if (ref_bodyTable && target !== ref_bodyTable) {
|
if (ref_bodyTable && target !== ref_bodyTable) {
|
||||||
ref_bodyTable.scrollTop = scrollTop
|
ref_bodyTable.scrollTop = scrollTop
|
||||||
|
|
Loading…
Reference in New Issue