Skip to content
This repository was archived by the owner on Oct 19, 2021. It is now read-only.

Commit bbf7077

Browse files
emyarodasudoh
authored andcommitted
fix(DataTable): add background color to selected table row (#1322)
* fix(DataTable): add CSS class for selected row background-color * test(DataTable): update snapshots * refactor(TableRow): attach `className` to `cleanProps` * docs(DataTable): use consistent props and markup for `TableRow`s * style(DataTable): use `cx` convention for `classnames` package import * chore(DataTable): avoid empty `className` in snapshot
1 parent 5bcac34 commit bbf7077

File tree

8 files changed

+27
-9
lines changed

8 files changed

+27
-9
lines changed

src/components/DataTable/DataTable.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ export default class DataTable extends React.Component {
174174
onExpand: composeEventHandlers([this.handleOnExpandRow(row.id), onClick]),
175175
isExpanded: row.isExpanded,
176176
ariaLabel: t(translationKey),
177+
isSelected: row.isSelected,
177178
};
178179
};
179180

src/components/DataTable/TableExpandRow.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ const TableExpandRow = ({
1212
isExpanded,
1313
onExpand,
1414
expandIconDescription,
15+
isSelected,
1516
...rest
1617
}) => {
1718
const className = cx(
1819
{
1920
'bx--parent-row-v2': true,
2021
'bx--expandable-row-v2': isExpanded,
22+
'bx--data-table-v2--selected': isSelected,
2123
},
2224
rowClassName
2325
);

src/components/DataTable/TableRow.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
import React from 'react';
22
import omit from 'lodash.omit';
3+
import cx from 'classnames';
34

45
const TableRow = props => {
56
// Remove unnecessary props if provided to this component, these are
67
// only useful in `TableExpandRow`
7-
const cleanProps = omit(props, ['ariaLabel', 'onExpand', 'isExpanded']);
8+
const className = cx(props.className, {
9+
'bx--data-table-v2--selected': props.isSelected,
10+
});
11+
const cleanProps = {
12+
...omit(props, ['ariaLabel', 'onExpand', 'isExpanded']),
13+
className: className || undefined,
14+
};
815
return <tr {...cleanProps} />;
916
};
1017

src/components/DataTable/stories/default.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export default () => (
2929
rows,
3030
headers,
3131
getHeaderProps,
32+
getRowProps,
3233
getSelectionProps,
3334
getBatchActionProps,
3435
onInputChange,
@@ -82,7 +83,7 @@ export default () => (
8283
</TableHead>
8384
<TableBody>
8485
{rows.map(row => (
85-
<TableRow key={row.id}>
86+
<TableRow {...getRowProps({ row })}>
8687
<TableSelectRow {...getSelectionProps({ row })} />
8788
{row.cells.map(cell => (
8889
<TableCell key={cell.id}>{cell.value}</TableCell>

src/components/DataTable/stories/with-batch-actions.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export default () => (
2929
rows,
3030
headers,
3131
getHeaderProps,
32+
getRowProps,
3233
getSelectionProps,
3334
getBatchActionProps,
3435
onInputChange,
@@ -82,7 +83,7 @@ export default () => (
8283
</TableHead>
8384
<TableBody>
8485
{rows.map(row => (
85-
<TableRow key={row.id}>
86+
<TableRow {...getRowProps({ row })}>
8687
<TableSelectRow {...getSelectionProps({ row })} />
8788
{row.cells.map(cell => (
8889
<TableCell key={cell.id}>{cell.value}</TableCell>

src/components/DataTable/stories/with-selection.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@ export default () => (
1616
<DataTable
1717
rows={initialRows}
1818
headers={headers}
19-
render={({ rows, headers, getHeaderProps, getSelectionProps }) => (
19+
render={({
20+
rows,
21+
headers,
22+
getHeaderProps,
23+
getRowProps,
24+
getSelectionProps,
25+
}) => (
2026
<TableContainer title="DataTable">
2127
<Table>
2228
<TableHead>
@@ -31,7 +37,7 @@ export default () => (
3137
</TableHead>
3238
<TableBody>
3339
{rows.map(row => (
34-
<TableRow key={row.id}>
40+
<TableRow {...getRowProps({ row })}>
3541
<TableSelectRow {...getSelectionProps({ row })} />
3642
{row.cells.map(cell => (
3743
<TableCell key={cell.id}>{cell.value}</TableCell>

src/components/DataTable/stories/with-sorting.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default () => (
1414
<DataTable
1515
rows={initialRows}
1616
headers={headers}
17-
render={({ rows, headers, getHeaderProps }) => (
17+
render={({ rows, headers, getHeaderProps, getRowProps }) => (
1818
<TableContainer title="DataTable with sorting">
1919
<Table>
2020
<TableHead>
@@ -28,7 +28,7 @@ export default () => (
2828
</TableHead>
2929
<TableBody>
3030
{rows.map(row => (
31-
<TableRow key={row.id}>
31+
<TableRow {...getRowProps({ row })}>
3232
{row.cells.map(cell => (
3333
<TableCell key={cell.id}>{cell.value}</TableCell>
3434
))}

src/components/DataTable/stories/with-toolbar.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export default () => (
2121
<DataTable
2222
rows={initialRows}
2323
headers={headers}
24-
render={({ rows, headers, getHeaderProps, onInputChange }) => (
24+
render={({ rows, headers, getHeaderProps, getRowProps, onInputChange }) => (
2525
<TableContainer title="DataTable with toolbar">
2626
<TableToolbar>
2727
<TableToolbarSearch onChange={onInputChange} />
@@ -58,7 +58,7 @@ export default () => (
5858
</TableHead>
5959
<TableBody>
6060
{rows.map(row => (
61-
<TableRow key={row.id}>
61+
<TableRow {...getRowProps({ row })}>
6262
{row.cells.map(cell => (
6363
<TableCell key={cell.id}>{cell.value}</TableCell>
6464
))}

0 commit comments

Comments
 (0)