Skip to content

Commit 6cf1c81

Browse files
author
John
authored
Merge pull request #2 from react-component/master
merge base
2 parents 135d5cd + c2473e6 commit 6cf1c81

11 files changed

+94
-23
lines changed

HISTORY.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
# History
22
----
33

4+
## 5.6.0 / 2017-08-27
5+
6+
- Better empty data style for fixed-columns Table.
7+
8+
## 5.5.0 / 2017-08-17
9+
10+
- Add `onRowContextMenu`
11+
412
## 5.4.0 / 2017-05-23
513

614
- Add `onRowMouseEnter`, `onRowMouseLeave`.

assets/index.less

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@
6666
border-bottom: 1px solid @table-border-color;
6767
text-align: center;
6868
position: relative;
69+
&-fixed-columns {
70+
position: absolute;
71+
bottom: 0;
72+
width: 100%;
73+
background: transparent;
74+
pointer-events: none;
75+
}
6976
}
7077

7178
table {
@@ -82,6 +89,10 @@
8289

8390
td {
8491
border-bottom: 1px solid @table-border-color;
92+
&:empty:after {
93+
content: '.'; // empty cell placeholder
94+
visibility: hidden;
95+
}
8596
}
8697

8798
tr {

index.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

package.json

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "rc-table",
3-
"version": "5.4.2",
3+
"version": "5.6.1",
44
"description": "table ui component for react",
55
"keywords": [
66
"react",
@@ -17,14 +17,6 @@
1717
],
1818
"main": "./lib/index",
1919
"module": "./es/index",
20-
"entry": {
21-
"rc-table": [
22-
"./assets/animation.less",
23-
"./assets/bordered.less",
24-
"./assets/index.less",
25-
"./src/index.js"
26-
]
27-
},
2820
"homepage": "http://github.com/react-component/table",
2921
"maintainers": [
3022
@@ -39,9 +31,18 @@
3931
},
4032
"licenses": "MIT",
4133
"config": {
42-
"port": 8000
34+
"port": 8000,
35+
"entry": {
36+
"rc-table": [
37+
"./assets/animation.less",
38+
"./assets/bordered.less",
39+
"./assets/index.less",
40+
"./src/index.js"
41+
]
42+
}
4343
},
4444
"scripts": {
45+
"dist": "rc-tools run dist",
4546
"build": "rc-tools run build",
4647
"compile": "rc-tools run compile --babel-runtime",
4748
"gh-pages": "rc-tools run gh-pages",
@@ -61,7 +62,7 @@
6162
}
6263
},
6364
"dependencies": {
64-
"babel-runtime": "^6.23.0",
65+
"babel-runtime": "6.x",
6566
"component-classes": "^1.2.6",
6667
"lodash.get": "^4.4.2",
6768
"prop-types": "^15.5.8",

src/Table.jsx

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ export default class Table extends React.Component {
3232
indentSize: PropTypes.number,
3333
onRowClick: PropTypes.func,
3434
onRowDoubleClick: PropTypes.func,
35+
onRowContextMenu: PropTypes.func,
36+
onRowMouseEnter: PropTypes.func,
37+
onRowMouseLeave: PropTypes.func,
3538
expandIconColumnIndex: PropTypes.number,
3639
showHeader: PropTypes.bool,
3740
title: PropTypes.func,
@@ -58,6 +61,7 @@ export default class Table extends React.Component {
5861
onExpandedRowsChange() {},
5962
onRowClick() {},
6063
onRowDoubleClick() {},
64+
onRowContextMenu() {},
6165
onRowMouseEnter() {},
6266
onRowMouseLeave() {},
6367
prefixCls: 'rc-table',
@@ -295,7 +299,7 @@ export default class Table extends React.Component {
295299
);
296300
}
297301

298-
getRowsByData(data, visible, indent, columns, fixed) {
302+
getRowsByData(originalData, visible, indent, columns, fixed) {
299303
const props = this.props;
300304
const {
301305
childrenColumnName,
@@ -308,6 +312,7 @@ export default class Table extends React.Component {
308312
expandedRowStyle,
309313
onRowClick,
310314
onRowDoubleClick,
315+
onRowContextMenu,
311316
onRowMouseEnter,
312317
onRowMouseLeave,
313318
} = props;
@@ -317,7 +322,10 @@ export default class Table extends React.Component {
317322

318323
const expandIconAsCell = fixed !== 'right' ? props.expandIconAsCell : false;
319324
const expandIconColumnIndex = fixed !== 'right' ? props.expandIconColumnIndex : -1;
320-
325+
let data = originalData;
326+
if (this.columnManager.isAnyColumnsFixed() && data.length === 0) {
327+
data = [{ key: 'empty-placeholder-data' }];
328+
}
321329
for (let i = 0; i < data.length; i++) {
322330
const record = data[i];
323331
const key = this.getRowKey(record, i);
@@ -370,6 +378,7 @@ export default class Table extends React.Component {
370378
expandIconColumnIndex={expandIconColumnIndex}
371379
onRowClick={onRowClick}
372380
onRowDoubleClick={onRowDoubleClick}
381+
onRowContextMenu={onRowContextMenu}
373382
onRowMouseEnter={onRowMouseEnter}
374383
onRowMouseLeave={onRowMouseLeave}
375384
height={height}
@@ -576,11 +585,17 @@ export default class Table extends React.Component {
576585

577586
getEmptyText() {
578587
const { emptyText, prefixCls, data } = this.props;
579-
return !data.length ? (
580-
<div className={`${prefixCls}-placeholder`} key="emptyText">
588+
if (data.length) {
589+
return null;
590+
}
591+
const fixed = this.columnManager.isAnyColumnsFixed();
592+
const emptyClassName =
593+
`${prefixCls}-placeholder${fixed ? ` ${prefixCls}-placeholder-fixed-columns` : ''}`;
594+
return (
595+
<div className={emptyClassName} key="emptyText">
581596
{(typeof emptyText === 'function') ? emptyText() : emptyText}
582597
</div>
583-
) : null;
598+
);
584599
}
585600

586601
getHeaderRowStyle(columns, rows) {

src/TableRow.jsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export default class TableRow extends React.Component {
88
onDestroy: PropTypes.func,
99
onRowClick: PropTypes.func,
1010
onRowDoubleClick: PropTypes.func,
11+
onRowContextMenu: PropTypes.func,
1112
onRowMouseEnter: PropTypes.func,
1213
onRowMouseLeave: PropTypes.func,
1314
record: PropTypes.object,
@@ -41,6 +42,7 @@ export default class TableRow extends React.Component {
4142
static defaultProps = {
4243
onRowClick() {},
4344
onRowDoubleClick() {},
45+
onRowContextMenu() {},
4446
onRowMouseEnter() {},
4547
onRowMouseLeave() {},
4648
onDestroy() {},
@@ -93,6 +95,11 @@ export default class TableRow extends React.Component {
9395
onRowDoubleClick(record, index, event);
9496
}
9597

98+
onContextMenu = (event) => {
99+
const { record, index, onRowContextMenu } = this.props;
100+
onRowContextMenu(record, index, event);
101+
}
102+
96103
onMouseEnter = (event) => {
97104
const { record, index, onRowMouseEnter, onHover, hoverKey } = this.props;
98105
onHover(true, hoverKey);
@@ -199,6 +206,7 @@ export default class TableRow extends React.Component {
199206
onDoubleClick={this.onRowDoubleClick}
200207
onMouseEnter={this.onMouseEnter}
201208
onMouseLeave={this.onMouseLeave}
209+
onContextMenu={this.onContextMenu}
202210
className={`${prefixCls} ${className} ${prefixCls}-level-${indent}`}
203211
style={style}
204212
>

tests/Table.expandRow.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import React from 'react';
33
import { render, mount } from 'enzyme';
44
import { renderToJson, mountToJson } from 'enzyme-to-json';
5-
import Table from '..';
5+
import Table from '../src';
66

77
describe('Table.expand', () => {
88
const columns = [

tests/Table.fixedColumns.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import React from 'react';
33
import { render, mount } from 'enzyme';
44
import { renderToJson } from 'enzyme-to-json';
5-
import Table from '..';
5+
import Table from '../src';
66

77
describe('Table.fixedColumns', () => {
88
// see:

tests/Table.groupingColumns.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable no-undef */
22
import React from 'react';
33
import { mount } from 'enzyme';
4-
import Table from '..';
4+
import Table from '../src';
55

66
describe('Table with grouping columns', () => {
77
it('group columns', () => {

tests/Table.spec.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import React from 'react';
33
import { render, mount } from 'enzyme';
44
import { renderToJson } from 'enzyme-to-json';
5-
import Table from '..';
5+
import Table from '../src';
66

77
describe('Table', () => {
88
const data = [
@@ -205,6 +205,16 @@ describe('Table', () => {
205205
expect(call[1]).toBe(0);
206206
expect(call[2].type).toBe('doubleclick');
207207
});
208+
209+
it('fires row contextmenu event', () => {
210+
const onRowContextMenu = jest.fn();
211+
const wrapper = mount(createTable({ onRowContextMenu }));
212+
wrapper.find('tbody tr').first().simulate('contextMenu');
213+
const call = onRowContextMenu.mock.calls[0];
214+
expect(call[0]).toBe(data[0]);
215+
expect(call[1]).toBe(0);
216+
expect(call[2].type).toBe('contextmenu');
217+
});
208218
});
209219

210220
it('renders column correctly', () => {

0 commit comments

Comments
 (0)