From f7a06401aedfe52fa24aa9c8f4a2bb3bb304e2cd Mon Sep 17 00:00:00 2001 From: AllenFang Date: Sun, 28 Oct 2018 16:51:36 +0800 Subject: [PATCH] patch docs and story for #583 --- docs/cell-edit.md | 18 ++++ .../cell-edit/cell-edit-async-hooks-table.js | 86 +++++++++++++++++++ .../stories/index.js | 2 + 3 files changed, 106 insertions(+) create mode 100644 packages/react-bootstrap-table2-example/examples/cell-edit/cell-edit-async-hooks-table.js diff --git a/docs/cell-edit.md b/docs/cell-edit.md index 6c46151..cc56f6c 100644 --- a/docs/cell-edit.md +++ b/docs/cell-edit.md @@ -62,6 +62,24 @@ const cellEdit = { } ``` +If you want to perform a async `beforeSaveCell`, you can do it like that: + +```js +const cellEdit: { + // omit... + beforeSaveCell(oldValue, newValue, row, column, done) { + setTimeout(() => { + if (confirm('Do you want to accep this change?')) { + done(); // contine to save the changes + } else { + done(false); // reject the changes + } + }, 0); + return { async: true }; + } +}; +``` + ### cellEdit.afterSaveCell - [Function] This callback function will be called after updating cell. diff --git a/packages/react-bootstrap-table2-example/examples/cell-edit/cell-edit-async-hooks-table.js b/packages/react-bootstrap-table2-example/examples/cell-edit/cell-edit-async-hooks-table.js new file mode 100644 index 0000000..9839437 --- /dev/null +++ b/packages/react-bootstrap-table2-example/examples/cell-edit/cell-edit-async-hooks-table.js @@ -0,0 +1,86 @@ +/* eslint no-unused-vars: 0 */ +/* eslint no-console: 0 */ +/* eslint no-alert: 0 */ +import React from 'react'; + +import BootstrapTable from 'react-bootstrap-table-next'; +import cellEditFactory from 'react-bootstrap-table2-editor'; +import Code from 'components/common/code-block'; +import { productsGenerator } from 'utils/common'; + +const products = productsGenerator(); + +const columns = [{ + dataField: 'id', + text: 'Product ID' +}, { + dataField: 'name', + text: 'Product Name' +}, { + dataField: 'price', + text: 'Product Price' +}]; + +const sourceCode = `\ +import BootstrapTable from 'react-bootstrap-table-next'; +import cellEditFactory from 'react-bootstrap-table2-editor'; + +const columns = [{ + dataField: 'id', + text: 'Product ID' +}, { + dataField: 'name', + text: 'Product Name' +}, { + dataField: 'price', + text: 'Product Price' +}]; + +function beforeSaveCell(oldValue, newValue, row, column, done) { + setTimeout(() => { + if (confirm('Do you want to accep this change?')) { + done(true); + } else { + done(false); + } + }, 0); + return { async: true }; +} + + +`; + +function beforeSaveCell(oldValue, newValue, row, column, done) { + setTimeout(() => { + if (confirm('Do you want to accep this change?')) { + done(true); + } else { + done(false); + } + }, 0); + return { async: true }; +} + +export default () => ( +
+

You will get a confirm prompt when you try to save a cell

+ + { sourceCode } +
+); diff --git a/packages/react-bootstrap-table2-example/stories/index.js b/packages/react-bootstrap-table2-example/stories/index.js index 18c2bc0..7ba6b1b 100644 --- a/packages/react-bootstrap-table2-example/stories/index.js +++ b/packages/react-bootstrap-table2-example/stories/index.js @@ -97,6 +97,7 @@ import RowLevelEditableTable from 'examples/cell-edit/row-level-editable-table'; import ColumnLevelEditableTable from 'examples/cell-edit/column-level-editable-table'; import CellLevelEditable from 'examples/cell-edit/cell-level-editable-table'; import CellEditHooks from 'examples/cell-edit/cell-edit-hooks-table'; +import AsyncCellEditHooks from 'examples/cell-edit/cell-edit-async-hooks-table'; import CellEditValidator from 'examples/cell-edit/cell-edit-validator-table'; import AsyncCellEditValidator from 'examples/cell-edit/cell-edit-async-validator-table'; import CellEditStyleTable from 'examples/cell-edit/cell-edit-style-table'; @@ -289,6 +290,7 @@ storiesOf('Cell Editing', module) .add('Column Level Editable', () => ) .add('Cell Level Editable', () => ) .add('Rich Hook Functions', () => ) + .add('Async Hook Functions', () => ) .add('Validation', () => ) .add('Async Validation', () => ) .add('Auto Select Text Input', () => )