mirror of
https://github.com/gosticks/react-bootstrap-table2.git
synced 2025-10-16 11:55:39 +00:00
fix #946
This commit is contained in:
parent
4d76d88e9a
commit
db612eaa99
@ -16,6 +16,7 @@
|
||||
* [clickToEdit](#clickToEdit)
|
||||
* [onSelect](#onSelect)
|
||||
* [onSelectAll](#onSelectAll)
|
||||
* [selectColumnPosition](#selectColumnPosition)
|
||||
* [hideSelectColumn](#hideSelectColumn)
|
||||
* [hideSelectAll](#hideSelectAll)
|
||||
* [selectionRenderer](#selectionRenderer)
|
||||
@ -275,6 +276,16 @@ const selectRow = {
|
||||
};
|
||||
```
|
||||
|
||||
### <a name='selectColumnPosition'>selectRow.selectColumnPosition - [String]</a>
|
||||
Default is `left`. You can give this as `right` for rendering selection column in the right side.
|
||||
|
||||
```js
|
||||
const selectRow = {
|
||||
mode: 'checkbox',
|
||||
selectColumnPosition: 'right'
|
||||
};
|
||||
```
|
||||
|
||||
### <a name='hideSelectColumn'>selectRow.hideSelectColumn - [Bool]</a>
|
||||
Default is `false`, if you don't want to have a selection column, give this prop as `true`
|
||||
|
||||
|
||||
59
packages/react-bootstrap-table2-example/examples/row-selection/selection-column-position.js
vendored
Normal file
59
packages/react-bootstrap-table2-example/examples/row-selection/selection-column-position.js
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
import React from 'react';
|
||||
|
||||
import BootstrapTable from 'react-bootstrap-table-next';
|
||||
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 selectRow = {
|
||||
mode: 'checkbox',
|
||||
clickToSelect: true,
|
||||
selectColumnPosition: 'right'
|
||||
};
|
||||
|
||||
const sourceCode = `\
|
||||
import BootstrapTable from 'react-bootstrap-table-next';
|
||||
|
||||
const columns = [{
|
||||
dataField: 'id',
|
||||
text: 'Product ID'
|
||||
}, {
|
||||
dataField: 'name',
|
||||
text: 'Product Name'
|
||||
}, {
|
||||
dataField: 'price',
|
||||
text: 'Product Price'
|
||||
}];
|
||||
|
||||
const selectRow = {
|
||||
mode: 'checkbox',
|
||||
clickToSelect: true,
|
||||
selectColumnPosition: 'right'
|
||||
};
|
||||
|
||||
<BootstrapTable
|
||||
keyField='id'
|
||||
data={ products }
|
||||
columns={ columns }
|
||||
selectRow={ selectRow }
|
||||
/>
|
||||
`;
|
||||
|
||||
export default () => (
|
||||
<div>
|
||||
<BootstrapTable keyField="id" data={ products } columns={ columns } selectRow={ selectRow } />
|
||||
<Code>{ sourceCode }</Code>
|
||||
</div>
|
||||
);
|
||||
@ -150,6 +150,7 @@ import NonSelectableRowsTable from 'examples/row-selection/non-selectable-rows';
|
||||
import SelectionBgColorTable from 'examples/row-selection/selection-bgcolor';
|
||||
import SelectionHooks from 'examples/row-selection/selection-hooks';
|
||||
import HideSelectionColumnTable from 'examples/row-selection/hide-selection-column';
|
||||
import SelectionColumnPositionTable from 'examples/row-selection/selection-column-position';
|
||||
|
||||
// work on row expand
|
||||
import BasicRowExpand from 'examples/row-expand';
|
||||
@ -394,7 +395,8 @@ storiesOf('Row Selection', module)
|
||||
.add('Selection Background Color', () => <SelectionBgColorTable />)
|
||||
.add('Not Selectabled Rows', () => <NonSelectableRowsTable />)
|
||||
.add('Selection Hooks', () => <SelectionHooks />)
|
||||
.add('Hide Selection Column', () => <HideSelectionColumnTable />);
|
||||
.add('Hide Selection Column', () => <HideSelectionColumnTable />)
|
||||
.add('Selection Column Position', () => <SelectionColumnPositionTable />);
|
||||
|
||||
storiesOf('Row Expand', module)
|
||||
.addDecorator(bootstrapStyle())
|
||||
|
||||
@ -168,7 +168,11 @@ BootstrapTable.propTypes = {
|
||||
hideSelectColumn: PropTypes.bool,
|
||||
selectionRenderer: PropTypes.func,
|
||||
selectionHeaderRenderer: PropTypes.func,
|
||||
headerColumnStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func])
|
||||
headerColumnStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),
|
||||
selectColumnPosition: PropTypes.oneOf([
|
||||
Const.INDICATOR_POSITION_LEFT,
|
||||
Const.INDICATOR_POSITION_RIGHT
|
||||
])
|
||||
}),
|
||||
expandRow: PropTypes.shape({
|
||||
renderer: PropTypes.func,
|
||||
|
||||
14
packages/react-bootstrap-table2/src/footer.js
vendored
14
packages/react-bootstrap-table2/src/footer.js
vendored
@ -11,9 +11,9 @@ const Footer = (props) => {
|
||||
const SelectionFooterCellComp = () => <th />;
|
||||
const ExpansionFooterCellComp = () => <th />;
|
||||
|
||||
const isRenderExpandColumnInLeft = (
|
||||
expandColumnPosition = Const.INDICATOR_POSITION_LEFT
|
||||
) => expandColumnPosition === Const.INDICATOR_POSITION_LEFT;
|
||||
const isRenderFunctionColumnInLeft = (
|
||||
position = Const.INDICATOR_POSITION_LEFT
|
||||
) => position === Const.INDICATOR_POSITION_LEFT;
|
||||
|
||||
const childrens = columns.map((column, i) => {
|
||||
if (column.footer === undefined || column.footer === null) {
|
||||
@ -33,11 +33,15 @@ const Footer = (props) => {
|
||||
});
|
||||
|
||||
if (selectRow && selectRow.hideSelectColumn !== true) {
|
||||
childrens.unshift(<SelectionFooterCellComp key="selection" />);
|
||||
if (isRenderFunctionColumnInLeft(selectRow.selectColumnPosition)) {
|
||||
childrens.unshift(<SelectionFooterCellComp key="selection" />);
|
||||
} else {
|
||||
childrens.push(<SelectionFooterCellComp key="selection" />);
|
||||
}
|
||||
}
|
||||
|
||||
if (expandRow.showExpandColumn) {
|
||||
if (isRenderExpandColumnInLeft(expandRow.expandColumnPosition)) {
|
||||
if (isRenderFunctionColumnInLeft(expandRow.expandColumnPosition)) {
|
||||
childrens.unshift(<ExpansionFooterCellComp key="expansion" />);
|
||||
} else {
|
||||
childrens.push(<ExpansionFooterCellComp key="expansion" />);
|
||||
|
||||
14
packages/react-bootstrap-table2/src/header.js
vendored
14
packages/react-bootstrap-table2/src/header.js
vendored
@ -33,9 +33,9 @@ const Header = (props) => {
|
||||
SelectionHeaderCellComp = withHeaderSelection(SelectionHeaderCell);
|
||||
}
|
||||
|
||||
const isRenderExpandColumnInLeft = (
|
||||
expandColumnPosition = Const.INDICATOR_POSITION_LEFT
|
||||
) => expandColumnPosition === Const.INDICATOR_POSITION_LEFT;
|
||||
const isRenderFunctionColumnInLeft = (
|
||||
position = Const.INDICATOR_POSITION_LEFT
|
||||
) => position === Const.INDICATOR_POSITION_LEFT;
|
||||
|
||||
const childrens = [
|
||||
columns.map((column, i) => {
|
||||
@ -58,11 +58,15 @@ const Header = (props) => {
|
||||
];
|
||||
|
||||
if (!selectRow.hideSelectColumn) {
|
||||
childrens.unshift(<SelectionHeaderCellComp key="selection" />);
|
||||
if (isRenderFunctionColumnInLeft(selectRow.selectColumnPosition)) {
|
||||
childrens.unshift(<SelectionHeaderCellComp key="selection" />);
|
||||
} else {
|
||||
childrens.push(<SelectionHeaderCellComp key="selection" />);
|
||||
}
|
||||
}
|
||||
|
||||
if (expandRow.showExpandColumn) {
|
||||
if (isRenderExpandColumnInLeft(expandRow.expandColumnPosition)) {
|
||||
if (isRenderFunctionColumnInLeft(expandRow.expandColumnPosition)) {
|
||||
childrens.unshift(<ExpansionHeaderCellComp key="expansion" />);
|
||||
} else {
|
||||
childrens.push(<ExpansionHeaderCellComp key="expansion" />);
|
||||
|
||||
@ -45,10 +45,10 @@ export default class RowAggregator extends shouldUpdater(eventDelegater(React.Co
|
||||
return this.shouldUpdateRowContent;
|
||||
}
|
||||
|
||||
isRenderExpandColumnInLeft(
|
||||
expandColumnPosition = Const.INDICATOR_POSITION_LEFT
|
||||
isRenderFunctionColumnInLeft(
|
||||
position = Const.INDICATOR_POSITION_LEFT
|
||||
) {
|
||||
return expandColumnPosition === Const.INDICATOR_POSITION_LEFT;
|
||||
return position === Const.INDICATOR_POSITION_LEFT;
|
||||
}
|
||||
|
||||
render() {
|
||||
@ -71,7 +71,7 @@ export default class RowAggregator extends shouldUpdater(eventDelegater(React.Co
|
||||
...rest
|
||||
} = this.props;
|
||||
const key = _.get(row, keyField);
|
||||
const { hideSelectColumn, clickToSelect } = selectRow;
|
||||
const { hideSelectColumn, selectColumnPosition, clickToSelect } = selectRow;
|
||||
const { showExpandColumn, expandColumnPosition } = expandRow;
|
||||
|
||||
const newAttrs = this.delegate({ ...attrs });
|
||||
@ -95,7 +95,7 @@ export default class RowAggregator extends shouldUpdater(eventDelegater(React.Co
|
||||
)];
|
||||
|
||||
if (!hideSelectColumn) {
|
||||
childrens.unshift((
|
||||
const selectCell = (
|
||||
<SelectionCell
|
||||
{ ...selectRow }
|
||||
key="selection-cell"
|
||||
@ -105,7 +105,12 @@ export default class RowAggregator extends shouldUpdater(eventDelegater(React.Co
|
||||
disabled={ !selectable }
|
||||
tabIndex={ tabIndexCell ? tabIndexStart++ : -1 }
|
||||
/>
|
||||
));
|
||||
);
|
||||
if (this.isRenderFunctionColumnInLeft(selectColumnPosition)) {
|
||||
childrens.unshift(selectCell);
|
||||
} else {
|
||||
childrens.push(selectCell);
|
||||
}
|
||||
}
|
||||
|
||||
if (showExpandColumn) {
|
||||
@ -120,7 +125,7 @@ export default class RowAggregator extends shouldUpdater(eventDelegater(React.Co
|
||||
tabIndex={ tabIndexCell ? tabIndexStart++ : -1 }
|
||||
/>
|
||||
);
|
||||
if (this.isRenderExpandColumnInLeft(expandColumnPosition)) {
|
||||
if (this.isRenderFunctionColumnInLeft(expandColumnPosition)) {
|
||||
childrens.unshift(expandCell);
|
||||
} else {
|
||||
childrens.push(expandCell);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user