20180507 release

This commit is contained in:
AllenFang 2018-05-06 16:17:06 +08:00
parent 02aa4a4e82
commit 5edfdeea0d
5 changed files with 291 additions and 9 deletions

View File

@ -51,14 +51,181 @@ How user save their new editings? We offer two ways:
* Column Level (Configure [column.editable](./column-props.html#columneditable-bool-function) as bool value)
* Cell Level (Configure [column.editable](./column-props.html#columneditable-bool-function) as a callback function)
### Editing Cell
* Customize the editing cell style via [column.editCellStyle](./column-props.html#columneditcellstyle-object-function)
* Customize the editing cell classname via [column.editCellClasses](./column-props.html#columneditcellclasses-string-function)
### Editor
* Customize the editor style via [column.editorStyle](./column-props.html#columneditorstyle-object-function)
* Customize the editor classname via [column.editoClasses](./column-props.html#columneditorclasses-string-function)
## Validation
[`column.validator`](./column-props.html#columnvalidator-function) will help you to work on it!
## Customize Style/Class
* Customize the editing cell style via [column.editCellStyle](./column-props.html#columneditcellstyle-object-function)
* Customize the editing cell classname via [column.editCellClasses](./column-props.html#columneditcellclasses-string-function)
* Customize the editor style via [column.editorStyle](./column-props.html#columneditorstyle-object-function)
* Customize the editor classname via [column.editoClasses](./column-props.html#columneditorclasses-string-function)
## Rich Editors
`react-bootstrap-table2` have following predefined editor:
* Text(Default)
* Dropdown
* Date
* Textarea
* Checkbox
In a nutshell, you just only give a [column.editor](https://react-bootstrap-table.github.io/react-bootstrap-table2/docs/column-props.html#columneditor-object) and define the `type`:
```js
import { Type } from 'react-bootstrap-table2-editor';
const columns = [
..., {
dataField: 'done',
text: 'Done',
editor: {
type: Type.SELECT | Type.TEXTAREA | Type.CHECKBOX | Type.DATE,
... // The rest properties will be rendered into the editor's DOM element
}
}
]
```
In the following, we go though all the predefined editors:
### Dropdown Editor
Dropdown editor give a select menu to choose a data from a list, the `editor.options` is required property for dropdown editor.
```js
import { Type } from 'react-bootstrap-table2-editor';
const columns = [
..., {
dataField: 'type',
text: 'Job Type',
editor: {
type: Type.SELECT,
options: [{
value: 'A',
label: 'A'
}, {
value: 'B',
label: 'B'
}, {
value: 'C',
label: 'C'
}, {
value: 'D',
label: 'D'
}, {
value: 'E',
label: 'E'
}]
}
}];
```
### Date Editor
Date editor is use `<input type="date">`, the configuration is very simple:
```js
const columns = [
..., {
dataField: 'inStockDate',
text: 'Stock Date',
formatter: (cell) => {
let dateObj = cell;
if (typeof cell !== 'object') {
dateObj = new Date(cell);
}
return `${('0' + dateObj.getDate()).slice(-2)}/${('0' + (dateObj.getMonth() + 1)).slice(-2)}/${dateObj.getFullYear()}`;
},
editor: {
type: Type.DATE
}
}];
```
### Textarea Editor
Textarea editor is use `<input type="textarea">`, user can press `ENTER` to change line and in the `react-bootstrap-table2`, user allow to save result via press `SHIFT` + `ENTER`.
```js
const columns = [
..., {
dataField: 'comment',
text: 'Product Comments',
editor: {
type: Type.TEXTAREA
}
}];
```
### Checkbox Editor
Checkbox editor allow you to have a pair value choice, the `editor.value` is required value to represent the actual value for check and uncheck.
```js
const columns = [
..., {
dataField: 'comment',
text: 'Product Comments',
editor: {
type: Type.CHECKBOX,
value: 'Y:N'
}
}];
```
## Customize Editor
If you feel above predefined editors are not satisfied to your requirement, you can certainly custom the editor via [column.editorRenderer](https://react-bootstrap-table.github.io/react-bootstrap-table2/docs/column-props.html#columneditorrenderer-function). It accept a function and pass following arguments when function called:
* `editorProps`: Some useful attributes you can use on DOM editor, like class, style etc.
* `value`: Current cell value
* `row`: Current row data
* `column`: Current column definition
* `rowIndex`: Current row index
* `columnIndex`: Current column index
> Note when implement a custom React editor component, this component should have a **getValue** function which return current value on editor
> Note when you want to save value, you can call **editorProps.onUpdate** function
Following is a short example:
```js
class QualityRanger extends React.Component {
static propTypes = {
value: PropTypes.number,
onUpdate: PropTypes.func.isRequired
}
static defaultProps = {
value: 0
}
getValue() {
return parseInt(this.range.value, 10);
}
render() {
const { value, onUpdate, ...rest } = this.props;
return [
<input
{ ...rest }
key="range"
ref={ node => this.range = node }
type="range"
min="0"
max="100"
/>,
<button
key="submit"
className="btn btn-default"
onClick={ () => onUpdate(this.getValue()) }
>
done
</button>
];
}
}
const columns = [
..., {
dataField: 'quality',
text: 'Product Quality',
editorRenderer: (editorProps, value, row, column, rowIndex, columnIndex) => (
<QualityRanger { ...editorProps } value={ value } />
)
}];
```

View File

@ -22,6 +22,7 @@ sidebar_label: Work on Row
Currently, `react-bootstrap-table2` only wrapped up the following events to allow its callback to receive `row` and `rowIndex`, for example:
* `onClick`
* `onDoubleClick`
* `onMouseEnter`
* `onMouseLeave`

View File

@ -37,6 +37,8 @@ Definition of columns props on BootstrapTable
* [editCellClasses](#columneditcellclasses-string-function)
* [editorStyle](#columneditorstyle-object-function)
* [editorClasses](#columneditorclasses-string-function)
* [editor](#columneditor-object)
* [editorRenderer](#columneditorrenderer-function)
* [filter](#columnfilter-object)
* [filterValue](#columnfiltervalue-function)
@ -545,6 +547,88 @@ This is almost same as [`column.editCellStyle`](#columneditcellstyle-object-func
## column.editorClasses - [String | Function]
This is almost same as [`column.editCellClasses`](#columneditcellclasses-string-function), but `column.editorClasses` is for custom the class on editor instead of cell(`td`).
## column.editor - [Object]
`column.editor` allow you to custom the type of cell editor by following predefined type:
* Text(Default)
* Dropdown
* Date
* Textarea
* Checkbox
Following is a quite example:
```js
import cellEditFactory, { Type } from 'react-bootstrap-table2-editor';
const columns = [
//...
, {
dataField: 'done',
text: 'Done',
editor: {
type: Type.CHECKBOX,
value: 'Y:N'
}
}
];
```
Please check [here](./basic-celledit.html#rich-editors) for more detail about rich editors.
## column.editorRenderer - [Function]
If you feel above predefined editors are not satisfied to your requirement, you can totally custom the editor via `column.editorRenderer`:
```js
import cellEditFactory, { Type } from 'react-bootstrap-table2-editor';
// Custom Editor
class QualityRanger extends React.Component {
static propTypes = {
value: PropTypes.number,
onUpdate: PropTypes.func.isRequired
}
static defaultProps = {
value: 0
}
getValue() {
return parseInt(this.range.value, 10);
}
render() {
const { value, onUpdate, ...rest } = this.props;
return [
<input
{ ...rest }
key="range"
ref={ node => this.range = node }
type="range"
min="0"
max="100"
/>,
<button
key="submit"
className="btn btn-default"
onClick={ () => onUpdate(this.getValue()) }
>
done
</button>
];
}
}
const columns = [
//...
, {
dataField: 'done',
text: 'Done',
editorRenderer: (editorProps, value, row, column, rowIndex, columnIndex) =>
<QualityRanger { ...editorProps } value={ value } />;
}
];
```
Please check [here](./basic-celledit.html#customize-editor) for more detail.
## column.filter - [Object]
Configure `column.filter` will able to setup a column level filter on the header column. Currently, `react-bootstrap-table2` support following filters:

View File

@ -40,6 +40,7 @@ const pagination = paginationFactory({
* [hidePageListOnlyOnePage](#paginationhidepagelistonlyonepage-bool)
* [onPageChange](#paginationonpagechange-function)
* [onSizePerPageChange](#paginationonsizeperpagechange-function)
* [showTotal](#paginationshowtotal-bool)
-----
## pagination.page - [Number]
@ -105,11 +106,14 @@ A quick way to specify the title on the next page button.
A quick way to specify the title on the last page button.
## pagination.hideSizePerPage - [Bool]
You can hide it :)
You can hide the size per page dropdown.
## pagination.hidePageListOnlyOnePage - [Bool]
You can hide the pagination when there's only one page in table. Default is `false`.
## pagination.showTotal - [Bool]
Default is `false`, if enable will display a text to indicate the row range of current page.
## pagination.onPageChange - [Function]
Accept a callback function and will be called when page changed. This callback function get below arguments:

View File

@ -0,0 +1,26 @@
---
title: New Release (2018-05-07)
author: Allen Fang
authorURL: https://twitter.com/allenfang_tw
---
## Changed Packages
This release bump following packages:
* `react-bootstrap-table-next@0.1.9`
* `react-bootstrap-table2-editor@0.2.0`
* `react-bootstrap-table2-paginator@0.1.2`
## Changelog
### Bug fixes
N/A
### Features
* Rich cell editors([#322](https://github.com/react-bootstrap-table/react-bootstrap-table2/issues/322))
* Allow to custom cell editors([#322](https://github.com/react-bootstrap-table/react-bootstrap-table2/issues/322))
* Implement pagination total indication([#323](https://github.com/react-bootstrap-table/react-bootstrap-table2/issues/323))
### Enhancements
* `rowEvents` support `onDoubleClick`([#324](https://github.com/react-bootstrap-table/react-bootstrap-table2/issues/324))