Skip to content

Commit f732435

Browse files
committed
Updated code for Bug #829
Updated code for Bug #829
1 parent bde7827 commit f732435

File tree

4 files changed

+35
-32
lines changed

4 files changed

+35
-32
lines changed

docs/documentation/docs/controls/ListItemPicker.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { ListItemPicker } from '@pnp/spfx-controls-react/lib/ListItemPicker';
2525
columnInternalName='Title'
2626
keyColumnInternalName='Id'
2727
filter="Title eq 'SPFx'"
28+
orderBy={"Id desc"}
2829
itemLimit={2}
2930
onSelectedItem={this.onSelectedItem}
3031
context={this.props.context} />
@@ -60,6 +61,7 @@ The `ListItemPicker` control can be configured with the following properties:
6061
| noResultsFoundText | string | no | The text that should appear when no results are returned. |
6162
| disabled | boolean | no | Specifies if the control is disabled or not. |
6263
| filter | string | no | condition to filter list Item, same as $filter ODATA parameter|
64+
| orderBy | string | no | condition to order by list Item, same as $orderby ODATA parameter|
6365
| placeholder | string | no | Short text hint to display in empty picker |
6466
| substringSearch | boolean | no | Specifies if substring search should be used |
6567

src/controls/listItemPicker/IListItemPickerProps.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export interface IListItemPickerProps {
88
listId: string;
99
itemLimit: number;
1010
filter?: string;
11+
orderBy?: string;
1112
className?: string;
1213
webUrl?: string;
1314
defaultSelectedItems?: any[];

src/controls/listItemPicker/ListItemPicker.tsx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -58,23 +58,23 @@ export class ListItemPicker extends React.Component<IListItemPickerProps, IListI
5858
return (
5959
<div>
6060
<TagPicker onResolveSuggestions={this.onFilterChanged}
61-
// getTextFromItem={(item: any) => { return item.name; }}
62-
getTextFromItem={this.getTextFromItem}
63-
pickerSuggestionsProps={{
64-
suggestionsHeaderText: suggestionsHeaderText,
65-
noResultsFoundText: noresultsFoundText
66-
}}
67-
selectedItems={selectedItems}
68-
onChange={this.onItemChanged}
69-
className={className}
70-
itemLimit={itemLimit}
71-
disabled={disabled}
72-
inputProps={{
73-
placeholder: placeholder
74-
}} />
61+
// getTextFromItem={(item: any) => { return item.name; }}
62+
getTextFromItem={this.getTextFromItem}
63+
pickerSuggestionsProps={{
64+
suggestionsHeaderText: suggestionsHeaderText,
65+
noResultsFoundText: noresultsFoundText
66+
}}
67+
selectedItems={selectedItems}
68+
onChange={this.onItemChanged}
69+
className={className}
70+
itemLimit={itemLimit}
71+
disabled={disabled}
72+
inputProps={{
73+
placeholder: placeholder
74+
}} />
7575

7676
{!!errorMessage &&
77-
(<Label style={{color:'#FF0000'}}> {errorMessage} </Label>)}
77+
(<Label style={{ color: '#FF0000' }}> {errorMessage} </Label>)}
7878
</div>
7979
);
8080
}
@@ -134,12 +134,12 @@ export class ListItemPicker extends React.Component<IListItemPickerProps, IListI
134134
* Function to load List Items
135135
*/
136136
private loadListItems = async (filterText: string): Promise<{ key: string; name: string }[]> => {
137-
let { listId, columnInternalName, keyColumnInternalName, webUrl, filter, substringSearch } = this.props;
137+
let { listId, columnInternalName, keyColumnInternalName, webUrl, filter, orderBy, substringSearch } = this.props;
138138
let arrayItems: { key: string; name: string }[] = [];
139139
let keyColumn: string = keyColumnInternalName || 'Id';
140140

141141
try {
142-
let listItems = await this._spservice.getListItems(filterText, listId, columnInternalName, keyColumn, webUrl, filter, substringSearch); // JJ - 20200613 - find by substring as an option
142+
let listItems = await this._spservice.getListItems(filterText, listId, columnInternalName, keyColumn, webUrl, filter, substringSearch, orderBy ? orderBy : ''); // JJ - 20200613 - find by substring as an option
143143
// Check if the list had items
144144
if (listItems.length > 0) {
145145
for (const item of listItems) {

src/services/SPService.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export default class SPService implements ISPService {
1010

1111
constructor(private _context: WebPartContext | ExtensionContext, webAbsoluteUrl?: string) {
1212
this._webAbsoluteUrl = webAbsoluteUrl ? webAbsoluteUrl : this._context.pageContext.web.absoluteUrl;
13-
}
13+
}
1414

1515
/**
1616
* Get lists or libraries
@@ -50,14 +50,14 @@ export default class SPService implements ISPService {
5050
/**
5151
* Get List Items
5252
*/
53-
public async getListItems(filterText: string, listId: string, internalColumnName: string, keyInternalColumnName?: string, webUrl?: string, filter?: string, substringSearch: boolean = false ): Promise<any[]> {
53+
public async getListItems(filterText: string, listId: string, internalColumnName: string, keyInternalColumnName?: string, webUrl?: string, filter?: string, substringSearch: boolean = false, orderBy?: string): Promise<any[]> {
5454
let returnItems: any[];
5555
const filterStr = substringSearch ? // JJ - 20200613 - find by substring as an option
56-
`substringof('${encodeURIComponent(filterText.replace("'","''"))}',${internalColumnName})${filter ? ' and ' + filter : ''}`
57-
: `startswith(${internalColumnName},'${encodeURIComponent(filterText.replace("'","''"))}')${filter ? ' and ' + filter : ''}`; //string = filterList ? `and ${filterList}` : '';
56+
`substringof('${encodeURIComponent(filterText.replace("'", "''"))}',${internalColumnName})${filter ? ' and ' + filter : ''}`
57+
: `startswith(${internalColumnName},'${encodeURIComponent(filterText.replace("'", "''"))}')${filter ? ' and ' + filter : ''}`; //string = filterList ? `and ${filterList}` : '';
5858
try {
5959
const webAbsoluteUrl = !webUrl ? this._webAbsoluteUrl : webUrl;
60-
const apiUrl = `${webAbsoluteUrl}/_api/web/lists('${listId}')/items?$select=${keyInternalColumnName || 'Id'},${internalColumnName}&$filter=${filterStr}`;
60+
const apiUrl = `${webAbsoluteUrl}/_api/web/lists('${listId}')/items?$select=${keyInternalColumnName || 'Id'},${internalColumnName}&$filter=${filterStr}&$orderby=${orderBy}`;
6161
const data = await this._context.spHttpClient.get(apiUrl, SPHttpClient.configurations.v1);
6262
if (data.ok) {
6363
const results = await data.json();
@@ -74,16 +74,16 @@ export default class SPService implements ISPService {
7474

7575

7676

77-
/**
78-
* Gets list items for list item picker
79-
* @param filterText
80-
* @param listId
81-
* @param internalColumnName
82-
* @param [keyInternalColumnName]
83-
* @param [webUrl]
84-
* @param [filterList]
85-
* @returns list items for list item picker
86-
*/
77+
/**
78+
* Gets list items for list item picker
79+
* @param filterText
80+
* @param listId
81+
* @param internalColumnName
82+
* @param [keyInternalColumnName]
83+
* @param [webUrl]
84+
* @param [filterList]
85+
* @returns list items for list item picker
86+
*/
8787
public async getListItemsForListItemPicker(
8888
filterText: string,
8989
listId: string,

0 commit comments

Comments
 (0)