1.0.2 • Published 9 years ago

rc-grid v1.0.2

Weekly downloads
19
License
MIT
Repository
github
Last release
9 years ago

Build Status npm bitHound Dependencies bitHound Dev Dependencies bitHound Overall Score bitHound Code

react-grid

React UI Component - Grid(Based on Ant Design)

demo

Use

$ npm install rc-grid --save

More detail - See here

import React from 'react'
import Grid from 'rc-grid'
// based on Ant design, so you should import this style
import 'antd/style/index.less'
// the default grid style
import 'rc-grid/style/index.less'
// after above, you can import your style if need
// import 'your-style.less'
export default class HomeView extends React.Component {
  constructor (props) {
    super(props)
    const time = new Date().getTime()
    // dataSource for single page
    // in real time, we always fetch data through a http request. when the page change, we get the next page's data
    const dataSource = [{
      name: 'test',
      id: '1',
      created_at: new Date(time)
    }, {
      name: 'test',
      id: '2',
      created_at: new Date(time + 1000)
    }, {
      name: 'test',
      id: '3',
      created_at: new Date(time + 2000)
    }, {
      name: 'test',
      id: '4',
      created_at: new Date(time + 3000)
    }, {
      name: 'test',
      id: '5',
      created_at: new Date(time + 4000)
    }, {
      name: 'test',
      id: '6',
      created_at: new Date(time + 5000)
    }, {
      name: 'test',
      id: '7',
      created_at: new Date(time + 5000)
    }]
    this.state = {
      dataSource
    }
  }
  render () {
    const { dataSource } = this.state
    const columns = [{
      name: 'name',
      label: 'Name',
      render: (name) => {
        return name.toLowerCase()
      },
      span: 5
    }, {
      name: 'created_at', // the key in the dataSource
      label: 'Created At', // table head label
      sortable: 'asc', // the way to sort, sortType: asc and desc
      sortAction: (type, name, data, event) => {
        dataSource.sort((item1, item2) => {
          const value = type === 'desc' ? new Date(item2.created_at).getTime() - new Date(item1.created_at).getTime()
          :new Date(item1.created_at).getTime() - new Date(item2.created_at).getTime()
          return value
        })
        this.setState({dataSource})
      },
      render: (created_at) => {
        return created_at.toISOString()
      },
      span: 5 // you can specific a span width to one column, from 1 to 24, default is flexible
    }]
    const itemHeader = [{
      name: 'id',
      render: (id) => {
        return `Id: ${id}`
      }
    }]
    const itemActions = [{
      name: 'Detail',
      action: (...args) => {
        console.log(args)
      }
    }, {
      name: 'Edit',
      action: (...args) => {
        console.log(args)
      }
    }, {
      name: 'Delete',
      action: (...args) => {
        console.log(args)
      }
    }]
    const gridActions = [
      {
        name: 'Refresh',
        action: (...args) => {
          console.log(args)
        }
      }
    ]
    const bacthActions = [
      {
        name: 'Delete',
        action: (...args) => {
          console.log(args)
        }
      }
    ]

    // warning: the pagination depend on the total and size, not depend on the dataSource's length
    const pagination = {
      total: 100, // total count
      size: 2, // page size
      currentPage: 1, // current page
      pageChange: (page) => {
        // page change callback
        console.log(page)
      }
    }

    // checkable[boolean]: render checkbox for each item
    const checkable = true

    // International
    const locale = {
      action: 'Action',
      no_data: 'No Data',
      first_page: 'First Page',
      items_per_page: '/page',
      jump_to: 'Jump To',
      last_page: 'Last Page',
      next_5: 'Next 5 pages',
      next_page: 'Next Page',
      prev_5: 'Previous 5 pages',
      prev_page: 'Previous Page',
      asc: 'Ascending',
      desc: 'Descending'
    }
    return (
      <div style={{padding: '10px 8px'}}>
        <Grid
          className='xxx-grid'
          dataSource={dataSource}
          columns={columns}
          itemActions={itemActions}
          gridActions={gridActions}
          pagination={pagination}
          batchActions={bacthActions}
          locale={locale}
          checkable={checkable}
          itemHeader={itemHeader}
          uniqueId='id'/>
      </div>
    )
  }
}
1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago

0.1.7

9 years ago

0.1.6

9 years ago

0.1.5

9 years ago

0.1.4

9 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago