Skip to content

Commit 6356a23

Browse files
authored
Merge pull request #48 from SharePoint/dev
Fix for sorting listview items
2 parents cdea663 + 9ab7022 commit 6356a23

File tree

4 files changed

+30
-3
lines changed

4 files changed

+30
-3
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Releases
22

3+
## 1.2.2
4+
5+
**Fixes**
6+
7+
- Fixes an issue sorting in the `ListView` control while items were selected. Indexes were not updated.
8+
39
## 1.2.1
410

511
**Fixes**

docs/documentation/docs/about/release-notes.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Releases
22

3+
## 1.2.2
4+
5+
**Fixes**
6+
7+
- Fixes an issue sorting in the `ListView` control while items were selected. Indexes were not updated.
8+
39
## 1.2.1
410

511
**Fixes**

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@pnp/spfx-controls-react",
33
"description": "Reusable React controls for SharePoint Framework solutions",
4-
"version": "1.2.1",
4+
"version": "1.2.2",
55
"engines": {
66
"node": ">=0.10.0"
77
},

src/controls/listView/ListView.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,15 +345,30 @@ export class ListView extends React.Component<IListViewProps, IListViewState> {
345345
* @param descending
346346
*/
347347
private _sortItems(items: any[], columnName: string, descending = false): any[] {
348+
// Sort the items
348349
const ascItems = sortBy(items, [columnName]);
349-
return descending ? ascItems.reverse() : ascItems;
350+
const sortedItems = descending ? ascItems.reverse() : ascItems;
351+
352+
// Check if selection needs to be updated
353+
const selection = this._selection.getSelection();
354+
if (selection && selection.length > 0) {
355+
// Clear selection
356+
this._selection.setItems([], true);
357+
setTimeout(() => {
358+
// Find new index
359+
let idxs: number[] = selection.map(item => findIndex(sortedItems, item));
360+
idxs.forEach(idx => this._selection.setIndexSelected(idx, true, false));
361+
}, 0);
362+
}
363+
364+
// Return the sorted items list
365+
return sortedItems;
350366
}
351367

352368
/**
353369
* Default React component render method
354370
*/
355371
public render(): React.ReactElement<IListViewProps> {
356-
357372
return (
358373
<div>
359374
<DetailsList

0 commit comments

Comments
 (0)