diff --git a/Libraries/Experimental/SwipeableRow/SwipeableListView.js b/Libraries/Experimental/SwipeableRow/SwipeableListView.js index acc7289cc..9687666f2 100644 --- a/Libraries/Experimental/SwipeableRow/SwipeableListView.js +++ b/Libraries/Experimental/SwipeableRow/SwipeableListView.js @@ -196,6 +196,7 @@ class SwipeableListView extends React.Component { maxSwipeDistance={this._getMaxSwipeDistance(rowData, sectionID, rowID)} key={rowID} onOpen={() => this._onOpen(rowData.id)} + onClose={() => this._onClose(rowData.id)} onSwipeEnd={() => this._setListViewScrollable(true)} onSwipeStart={() => this._setListViewScrollable(false)} shouldBounceOnMount={shouldBounceOnMount}> @@ -209,6 +210,12 @@ class SwipeableListView extends React.Component { dataSource: this.state.dataSource.setOpenRowID(rowID), }); } + + _onClose(rowID: string): void { + this.setState({ + dataSource: this.state.dataSource.setOpenRowID(null), + }); + } } module.exports = SwipeableListView; diff --git a/Libraries/Experimental/SwipeableRow/SwipeableRow.js b/Libraries/Experimental/SwipeableRow/SwipeableRow.js index 060cec9a8..85030becd 100644 --- a/Libraries/Experimental/SwipeableRow/SwipeableRow.js +++ b/Libraries/Experimental/SwipeableRow/SwipeableRow.js @@ -85,6 +85,7 @@ const SwipeableRow = React.createClass({ isOpen: PropTypes.bool, maxSwipeDistance: PropTypes.number.isRequired, onOpen: PropTypes.func.isRequired, + onClose: PropTypes.func.isRequired, onSwipeEnd: PropTypes.func.isRequired, onSwipeStart: PropTypes.func.isRequired, // Should bounce the row on mount @@ -120,6 +121,7 @@ const SwipeableRow = React.createClass({ isOpen: false, maxSwipeDistance: 0, onOpen: emptyFunction, + onClose: emptyFunction, onSwipeEnd: emptyFunction, onSwipeStart: emptyFunction, swipeThreshold: 30, @@ -369,6 +371,7 @@ const SwipeableRow = React.createClass({ this._animateToOpenPositionWith(gestureState.vx, horizontalDistance); } else { // Swiped right + this.props.onClose(); this._animateToClosedPosition(); } } else {