Basic
React Grid focuses on the basic functionality of tables. Other features can be configured in various ways using React Hooks.
In the sample code, emotion is used for style.
Pagination
It does not support pagination by itself. However, you can freely implement it as follows.
icons/ArrowLeftIcon.tsx
Show
...
icons/ArrowRightIcon.tsx
Show
...
Pagination.tsx
Show
...
PaginationComponent.tsx
import React, { useEffect, useState } from 'react'
import styled from '@emotion/styled'
import Grid, { GridType, IPropsColumn, RowType } from '@tenqube/react-grid'
import Pagination from './Pagination'
const PaginationComponent = () => {
const pageData = [[[
'data1', 'data1', 'data1', 'data1'
], [
'data2', 'data2', 'data2', 'data2'
]], [[
'data3', 'data3', 'data3', 'data3'
], [
'data4', 'data4', 'data4', 'data4'
]], [[
'data5', 'data5', 'data5', 'data5'
], [
'data6', 'data6', 'data6', 'data6'
]]]
const totalPage = pageData.length
const [page, setPage] = useStatenumber(1)
const [rows, setRows] = useState<Array<Array<RowType>>>(pageData[0])
const columns: Array<IPropsColumn> = [{
id: 'string1',
name: 'Column1',
type: GridType.String
}, {
id: 'string2',
name: 'Column2',
type: GridType.String
}, {
id: 'string3',
name: 'Column3',
type: GridType.String,
}, {
id: 'string4',
name: 'Column4',
type: GridType.String
}]
useEffect(() => {
setRows(pageData[page - 1])
}, [page])
return (
<>
<$table>
<Grid id={'pagination-example'} rows={rows} columns={columns} />
</$table>
<Pagination currentPage={page} totalPage={totalPage} updatePage={setPage} />
</>
)
}
export default PaginationComponent
const $table = styled.div`
margin-bottom: 20px;
`
Previews
Column1 | Column2 | Column3 | Column4 |
---|---|---|---|
data1 | data1 | data1 | data1 |
data2 | data2 | data2 | data2 |
Empty
You can simply use css to configure a blank screen when there is no data.
icons/ExclamationMarkIcon.tsx
Show
...
PaginationComponent.tsx
import React from 'react'
import styled from '@emotion/styled'
import Grid, { GridType, IPropsColumn, RowType } from '@tenqube/react-grid'
import ExclamationMarkIcon from './icons/ExclamationMarkIcon'
const EmptyComponent = () => {
const columns: Array<IPropsColumn> = [{
id: 'string1',
name: 'Column1',
type: GridType.String
}, {
id: 'string2',
name: 'Column2',
type: GridType.String
}, {
id: 'string3',
name: 'Column3',
type: GridType.String,
}, {
id: 'string4',
name: 'Column4',
type: GridType.String
}]
const rows: Array<Array<RowType>> = []
return (
<$arae>
<Grid id={'empty-example'} rows={rows} columns={columns} />
<$empty>
<div>
<ExclamationMarkIcon />
<p>Data is empty</p>
</div>
<$empty>
</$arae>
)
}
export default EmptyComponent
const $arae = styled.div`
position: relative;
table tbody {
height: 200px;
}
`
const $empty = styled.div`
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding-top: 50px;
display: flex;
text-align: center;
align-items: center;
justify-content: center;
p {
margin-top: 10px;
color: #787d8f;
}
`
Previews
Column1 | Column2 | Column3 | Column4 |
---|
Data is empty