From 0a59dc2918fac988d072a63ce840ae02cc9f1cd1 Mon Sep 17 00:00:00 2001 From: Artur Pyrogovskyi Date: Thu, 21 Feb 2019 01:59:31 -0800 Subject: [PATCH] Added onSort and a fix for columnOrder to ManagedTable Summary: 1. Added onSort() pass-through to ManagedTable which allows to handle sort order changes. 2. columnOrder now gets updated when the corresponding prop is changed indepedently from ref. Reviewed By: danielbuechele Differential Revision: D14147857 fbshipit-source-id: 03300629a3316a69be6b745810516966b8060aa6 --- src/ui/components/table/ManagedTable.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ui/components/table/ManagedTable.js b/src/ui/components/table/ManagedTable.js index 999e59447..a41bdd7da 100644 --- a/src/ui/components/table/ManagedTable.js +++ b/src/ui/components/table/ManagedTable.js @@ -112,6 +112,10 @@ export type ManagedTableProps = {| * Allows to create context menu items for rows */ buildContextMenuItems?: () => MenuTemplate, + /** + * Callback when sorting changes + */ + onSort?: (order: TableRowSortOrder) => void, |}; type ManagedTableState = {| @@ -194,12 +198,10 @@ class ManagedTable extends React.Component< } // if columnOrder has changed - if ( - nextProps.columnOrder !== this.props.columnOrder && - this.tableRef && - this.tableRef.current - ) { - this.tableRef.current.resetAfterIndex(0); + if (nextProps.columnOrder !== this.props.columnOrder) { + if (this.tableRef && this.tableRef.current) { + this.tableRef.current.resetAfterIndex(0); + } this.setState({ columnOrder: nextProps.columnOrder, }); @@ -304,6 +306,7 @@ class ManagedTable extends React.Component< onSort = (sortOrder: TableRowSortOrder) => { this.setState({sortOrder}); + this.props.onSort && this.props.onSort(sortOrder); }; onColumnOrder = (columnOrder: TableColumnOrder) => {