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) {
 | 
			
		||||
        tableStyle.tableLayout = 'fixed'
 | 
			
		||||
      } else {
 | 
			
		||||
        tableStyle.width = `${scroll.x}px`
 | 
			
		||||
        tableStyle.width = typeof scroll.x === 'number' ? `${scroll.x}px` : scroll.x
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,7 @@ export default {
 | 
			
		|||
    updateTableRef () {
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        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)
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -59,11 +59,13 @@ export default {
 | 
			
		|||
    if (scroll.y) {
 | 
			
		||||
    // maxHeight will make fixed-Table scrolling not working
 | 
			
		||||
    // so we only set maxHeight to body-Table here
 | 
			
		||||
      let maxHeight = bodyStyle.maxHeight || scroll.y
 | 
			
		||||
      maxHeight = typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight
 | 
			
		||||
      if (fixed) {
 | 
			
		||||
        innerBodyStyle.maxHeight = bodyStyle.maxHeight || scroll.y
 | 
			
		||||
        innerBodyStyle.maxHeight = maxHeight
 | 
			
		||||
        innerBodyStyle.overflowY = bodyStyle.overflowY || 'scroll'
 | 
			
		||||
      } else {
 | 
			
		||||
        bodyStyle.maxHeight = bodyStyle.maxHeight || scroll.y
 | 
			
		||||
        bodyStyle.maxHeight = maxHeight
 | 
			
		||||
      }
 | 
			
		||||
      bodyStyle.overflowY = bodyStyle.overflowY || 'scroll'
 | 
			
		||||
      useFixedHeader = true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -279,7 +279,6 @@ export default {
 | 
			
		|||
          shallowequal(state.fixedColumnsBodyRowsHeight, fixedColumnsBodyRowsHeight)) {
 | 
			
		||||
        return
 | 
			
		||||
      }
 | 
			
		||||
      console.log(fixedColumnsHeadRowsHeight, fixedColumnsBodyRowsHeight)
 | 
			
		||||
      this.store.setState({
 | 
			
		||||
        fixedColumnsHeadRowsHeight,
 | 
			
		||||
        fixedColumnsBodyRowsHeight,
 | 
			
		||||
| 
						 | 
				
			
			@ -323,14 +322,14 @@ export default {
 | 
			
		|||
    handleBodyScrollTop  (e) {
 | 
			
		||||
      const target = e.target
 | 
			
		||||
      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) {
 | 
			
		||||
        const scrollTop = target.scrollTop
 | 
			
		||||
        if (fixedColumnsBodyLeft && target !== fixedColumnsBodyLeft) {
 | 
			
		||||
          fixedColumnsBodyLeft.scrollTop = scrollTop
 | 
			
		||||
        if (ref_fixedColumnsBodyLeft && target !== ref_fixedColumnsBodyLeft) {
 | 
			
		||||
          ref_fixedColumnsBodyLeft.scrollTop = scrollTop
 | 
			
		||||
        }
 | 
			
		||||
        if (fixedColumnsBodyRight && target !== fixedColumnsBodyRight) {
 | 
			
		||||
          fixedColumnsBodyRight.scrollTop = scrollTop
 | 
			
		||||
        if (ref_fixedColumnsBodyRight && target !== ref_fixedColumnsBodyRight) {
 | 
			
		||||
          ref_fixedColumnsBodyRight.scrollTop = scrollTop
 | 
			
		||||
        }
 | 
			
		||||
        if (ref_bodyTable && target !== ref_bodyTable) {
 | 
			
		||||
          ref_bodyTable.scrollTop = scrollTop
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue