Skip to content

Commit 9f6e19d

Browse files
author
Kamran Asif
committed
saving changes
1 parent 60f3545 commit 9f6e19d

File tree

3 files changed

+34
-13
lines changed

3 files changed

+34
-13
lines changed

examples/ReorderExample.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,23 @@
1515
var FakeObjectDataListStore = require('./helpers/FakeObjectDataListStore');
1616
var FixedDataTable = require('fixed-data-table');
1717
var React = require('react');
18+
var _ = require('lodash');
1819

1920
const {Table, Column, Cell} = FixedDataTable;
2021

21-
const TextCell = ({rowIndex, data, columnKey, ...props}) => (
22-
<Cell {...props}>
23-
{data.getObjectAt(rowIndex)[columnKey]}
24-
</Cell>
25-
);
22+
class TextCell extends React.Component {
23+
shouldComponentUpdate(newProps) {
24+
return !_.isEqual(newProps, this.props);
25+
}
26+
27+
render() {
28+
return (
29+
<Cell {...this.props}>
30+
{this.props.data.getObjectAt(this.props.rowIndex)[this.props.columnKey]}
31+
</Cell>
32+
);
33+
}
34+
};
2635

2736
var columnTitles = {
2837
'firstName': 'First Name',
@@ -88,6 +97,7 @@ class ReorderExample extends React.Component {
8897
return <Column
8998
columnKey={columnKey}
9099
key={i}
100+
isReorderable={true}
91101
header={<Cell>{columnTitles[columnKey]}</Cell>}
92102
cell={<TextCell data={dataList} />}
93103
fixed={i === 0}

src/FixedDataTableCell.react.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,13 @@ var FixedDataTableCell = React.createClass({
182182
};
183183

184184
if (DIR_SIGN === 1) {
185-
style.left = props.left + this.state.displacement;
185+
style.left = props.left;
186186
} else {
187-
style.right = props.left + this.state.displacement;
187+
style.right = props.left;
188188
}
189189

190190
if (this.state.isReorderingThisColumn) {
191+
style.transform = `translateX(${this.state.displacement}px) translateZ(0)`;
191192
style.zIndex = 1;
192193
}
193194

src/FixedDataTableColumnReorderHandle.react.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,21 +99,31 @@ var FixedDataTableColumnReorderHandle = React.createClass({
9999
inColumnGroup: mouseLocationInRelationToColumnGroup
100100
}
101101
});
102+
103+
this._distance = 0;
104+
this._animating = true;
105+
requestAnimationFrame(this._updateState);
102106
},
103107

104108
_onMove(/*number*/ deltaX) {
105-
var distance = this.state.dragDistance + deltaX;
106-
this.setState({
107-
dragDistance: distance
108-
});
109-
this.props.onColumnReorderMove(distance);
109+
this._distance = this.state.dragDistance + deltaX;
110110
},
111111

112112
_onColumnReorderEnd() {
113+
this._animating = false;
113114
this._mouseMoveTracker.releaseMouseMoves();
114-
115115
this.props.onColumnReorderEnd();
116116
},
117+
118+
_updateState() {
119+
if (this._animating) {
120+
requestAnimationFrame(this._updateState)
121+
}
122+
this.setState({
123+
dragDistance: this._distance
124+
});
125+
this.props.onColumnReorderMove(this._distance);
126+
}
117127
});
118128

119129
module.exports = FixedDataTableColumnReorderHandle;

0 commit comments

Comments
 (0)