Skip to content

Commit

Permalink
Merge pull request #48 from SharePoint/dev
Browse files Browse the repository at this point in the history
Fix for sorting listview items
  • Loading branch information
estruyf authored Feb 19, 2018
2 parents cdea663 + 9ab7022 commit 6356a23
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 3 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Releases

## 1.2.2

**Fixes**

- Fixes an issue sorting in the `ListView` control while items were selected. Indexes were not updated.

## 1.2.1

**Fixes**
Expand Down
6 changes: 6 additions & 0 deletions docs/documentation/docs/about/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Releases

## 1.2.2

**Fixes**

- Fixes an issue sorting in the `ListView` control while items were selected. Indexes were not updated.

## 1.2.1

**Fixes**
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@pnp/spfx-controls-react",
"description": "Reusable React controls for SharePoint Framework solutions",
"version": "1.2.1",
"version": "1.2.2",
"engines": {
"node": ">=0.10.0"
},
Expand Down
19 changes: 17 additions & 2 deletions src/controls/listView/ListView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -345,15 +345,30 @@ export class ListView extends React.Component<IListViewProps, IListViewState> {
* @param descending
*/
private _sortItems(items: any[], columnName: string, descending = false): any[] {
// Sort the items
const ascItems = sortBy(items, [columnName]);
return descending ? ascItems.reverse() : ascItems;
const sortedItems = descending ? ascItems.reverse() : ascItems;

// Check if selection needs to be updated
const selection = this._selection.getSelection();
if (selection && selection.length > 0) {
// Clear selection
this._selection.setItems([], true);
setTimeout(() => {
// Find new index
let idxs: number[] = selection.map(item => findIndex(sortedItems, item));
idxs.forEach(idx => this._selection.setIndexSelected(idx, true, false));
}, 0);
}

// Return the sorted items list
return sortedItems;
}

/**
* Default React component render method
*/
public render(): React.ReactElement<IListViewProps> {

return (
<div>
<DetailsList
Expand Down

0 comments on commit 6356a23

Please sign in to comment.