From 6d14cd3e1bf021de660937da6cd1a88661609492 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Wed, 10 Jan 2018 23:28:03 +0800 Subject: [PATCH] work on docs --- docs/basic-column.md | 37 +++++++++++ docs/basic-row-select.md | 32 ++++++++++ docs/basic-sort.md | 64 +++++++++++++++++++ docs/row-select-props.md | 4 +- website/i18n/en.json | 8 ++- website/sidebars.json | 6 +- website/static/img/docs/basic-sort-caret.png | Bin 0 -> 14606 bytes 7 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 docs/basic-column.md create mode 100644 docs/basic-row-select.md create mode 100644 docs/basic-sort.md create mode 100644 website/static/img/docs/basic-sort-caret.png diff --git a/docs/basic-column.md b/docs/basic-column.md new file mode 100644 index 0000000..b6e9287 --- /dev/null +++ b/docs/basic-column.md @@ -0,0 +1,37 @@ +--- +id: basic-column +title: Work on Column +sidebar_label: Work on Column +--- + +Firstly, legacy `react-bootstrap-table` is hard to customize the DOM Event, Attributes on column or header column. In the `react-bootstrap-table2`, we make those bad design become more easy and flexible. + +----- + +## Formatting Table Column + +[`column.formatter`](./column-props.html#columnformatter-function) is a good chance for you to customize the cell. If you just want to add some styling, attributes or DOM event linstener, `react-bootstrap-table2` have respective props to handle: + +* [`column.style`](./column-props.html#columnstyle-object-function) +* [`column.classes`](./column-props.html#columnclasses-string-function) +* [`column.events`](./column-props.html#columnevents-object) +* [`column.attrs`](./column-props.html#columnattrs-object-function) + +In addition, we also give some useful props to let you have a quickly configuration: + +* [`column.hidden`](./column-props.html#columnhidden-bool) +* [`column.title`](./column-props.html#columntitle-bool-function) +* [`column.align`](./column-props.html#columnalign-string-function) +* *Welcome to submit a PR or issue for asking a convinence props for column :)* + +## Formatting Table Header +Formatting header column is almost same as column formatting, we got [`column.headerFormatter`](./column-props.html#columnheaderformatter-function) to let you customize the content of a header column. Default `react-bootstrap-table2` will take [`column.text`](./column-props.html#columntext-required-string) as the content of header column. + +Following, we list some useful props for customization: + +* [`column.headerStyle`](./column-props.html#columnheaderstyle-object-function) +* [`column.headerClasses`](./column-props.html#columnheaderclasses-string-function) +* [`column.headerEvents`](./column-props.html#columnheaderevents-object) +* [`column.headerAttrs`](./column-props.html#columnheaderattrs-object-function) +* [`column.headerTitle`](./column-props.html#columnheadertitle-bool-function) +* [`column.headerAlign`](./column-props.html#columnheaderalign-string-function) \ No newline at end of file diff --git a/docs/basic-row-select.md b/docs/basic-row-select.md new file mode 100644 index 0000000..e5bdea9 --- /dev/null +++ b/docs/basic-row-select.md @@ -0,0 +1,32 @@ +--- +id: basic-row-select +title: Row Selection +sidebar_label: Row Selection +--- + +For the table row selection functionality, the usage is almost same as `react-bootstrap-table`. If you are a user from legacy `react-bootstrap-table`, you can consider to skip this part. + +----- + +## Selection Mode + +We support the single and multiple selection on table, config the [`selectRow.mode`](./row-select-props.html#selectrowmode-string) on `BootstrapTable` will enable the selection on the table. + +By default behavior, user need to click on the selection column or the checkbox/radio to select/unselect a row, for a user experience perspective, we have [`selectoRow.clickToSelect`](./row-select-props.html#selectrowclicktoselect-bool) to allow user to select/unselect row by clicking on the row. + +## Customization + +### Style/Class +Like column, we support to custom the style, class on the selecting row easily via following `selectRow` props: + +* [`selectRow.bgColor`](row-select-props.html#selectrowbgcolor-string-function) +* [`selectRow.style`](./row-select-props.html#selectrowstyle-object-function) +* [`selectRow.classes`](./row-select-props.html#selectrowclasses-string-function) + +### Selection Column +`react-bootstrap-table2` offer a [`selectRow.hideSelectColumn`](./row-select-props.html#selectrowhideselectcolumn-bool) to let you hide the selection column. But for the customization on selection column or checkbox/radio button, we will support it ine next couple release. +**Coming Soon!** + +## Event Listening + +[`selectRow.onSelect`](./row-select-props.html#selectrowonselect-function) allow you to listen a row is select or unselect. For the multiple selection, we also have [`selectRow.onSelectAll`](./selectrowonselectall-function) to listen the select/unselect all event. diff --git a/docs/basic-sort.md b/docs/basic-sort.md new file mode 100644 index 0000000..aebf032 --- /dev/null +++ b/docs/basic-sort.md @@ -0,0 +1,64 @@ +--- +id: basic-sort +title: Table Sort +sidebar_label: Table Sort +--- + +`react-bootstrap-table2` allow you to configure columns to be sortable. Currently, we don't support the multi-column sort, but it will be implemented in the future. + +## Enable Sort on Column +Firstly, you need to know what column you allow user to sort and give the [`sort`](./column-props.html#columnsort-bool) as `true` in the column definitation. + +```js +const columns = [{ + dataField: 'id', + text: 'Product ID', + sort: true +}, { + dataField: 'name', + text: 'Product Name', + sort: true +}, { + dataField: 'price', + text: 'Product Price' +}]; + + +``` + +After table rendered, you can see the Product ID and Product Name will have a caret icon beside the column name: +![sort caret](/react-bootstrap-table2/img/docs/basic-sort-caret.png) + +## Control Sorting +### Default Sort +`react-bootstrap-table2` will only apply the default sort at first time rendering, you can achieve the default sorting on table easily via [`defaultSorted`](./table-props.html#defaultsorted-array). + +### Manage Sorting Externally + +**Coming Soon!** + +## Custom the Sorting Algorithm + +It's simple!! configure [`sortFunc`](./column-props.html#columnsortfunc-function) on column definitation. + +```js +{ + dataField: 'id', + text: 'Product ID', + sort: true + // Perform a reverse sorting here + sortFunc: (a, b, order, dataField) => { + if (order === 'asc') { + return b - a; + } + return a - b; // desc + } +} +``` + +## Custom the Sorting Style +There're two way you can change or prettify the header when sorting: [`headerSortingClasses`](./column-props.html#headersortingclasses-string-function) and [`headerSortingStyle`](./column-props.html#headersortingstyle-object-function) + +## Custom the Sort Caret + +**Coming Soon!** \ No newline at end of file diff --git a/docs/row-select-props.md b/docs/row-select-props.md index 78c1468..75cf2b6 100644 --- a/docs/row-select-props.md +++ b/docs/row-select-props.md @@ -10,8 +10,8 @@ title: Row Selection Props * [style](#selectrowstyle-object-function) * [classes](#selectrowclasses-string-function) * [bgColor](#selectrowbgcolor-string-function) -* [nonSelectable)](#selectrownonselectable-array) -* [clickToSelect)](#selectrowclicktoselect-bool) +* [nonSelectable](#selectrownonselectable-array) +* [clickToSelect](#selectrowclicktoselect-bool) * [clickToEdit](#selectrowclicktoedit-bool) * [onSelect](#selectrowonselect-function) * [onSelectAll](#selectrowonselectall-function) diff --git a/website/i18n/en.json b/website/i18n/en.json index d4da0d5..0b6267d 100644 --- a/website/i18n/en.json +++ b/website/i18n/en.json @@ -6,6 +6,12 @@ "tagline": "Next Generation of react-bootstrap-table", "about": "react-bootstrap-table2", "About": "About", + "basic-column": "Work on Column", + "Work on Column": "Work on Column", + "basic-row-select": "Row Selection", + "Row Selection": "Row Selection", + "basic-sort": "Table Sort", + "Table Sort": "Table Sort", "cell-edit-props": "Cell Editing Props", "column-props": "Columns Props", "filter-props": "Column Filter Props", @@ -19,7 +25,7 @@ "API": "API", "Help": "Help", "Blog": "Blog", - "Usage": "Usage", + "Basic Usage": "Basic Usage", "Table Definitation": "Table Definitation", "Column Definitation": "Column Definitation", "Cell Editing Definitation": "Cell Editing Definitation", diff --git a/website/sidebars.json b/website/sidebars.json index abec575..59cb140 100644 --- a/website/sidebars.json +++ b/website/sidebars.json @@ -4,7 +4,11 @@ "about", "getting-started" ], - "Usage": ["usage"] + "Basic Usage": [ + "basic-column", + "basic-sort", + "basic-row-select" + ] }, "api": { "Table Definitation": [ diff --git a/website/static/img/docs/basic-sort-caret.png b/website/static/img/docs/basic-sort-caret.png new file mode 100644 index 0000000000000000000000000000000000000000..246f97d2e58113770f447dec89b2d9a88422c97c GIT binary patch literal 14606 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 literal 0 HcmV?d00001