Skip to content

Commit b5de089

Browse files
committed
Align code updates for the FieldPickerListData
1 parent d4051bc commit b5de089

File tree

7 files changed

+94
-91
lines changed

7 files changed

+94
-91
lines changed
Lines changed: 70 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,129 +1,118 @@
1+
import * as strings from 'ControlStrings';
12
import * as React from "react";
2-
import { IFieldPickerListDataProps } from "./IFieldPickerListDataProps";
3-
import { IFieldPickerListDataState } from "./IFieldPickerListDataState";
3+
import SPservice from "../../../services/SPService";
44
import { escape } from "@microsoft/sp-lodash-subset";
55
import { TagPicker } from "office-ui-fabric-react/lib/components/pickers/TagPicker/TagPicker";
6-
import SPservice from "../../../services/SPService";
76
import { Label } from "office-ui-fabric-react/lib/Label";
7+
import { IFieldPickerListDataProps, IFieldPickerListDataState } from ".";
88

99

10-
export class FieldPickerListData extends React.Component<
11-
IFieldPickerListDataProps,
12-
IFieldPickerListDataState
13-
> {
10+
export class FieldPickerListData extends React.Component<IFieldPickerListDataProps, IFieldPickerListDataState> {
1411
private _value: Array<any>;
1512
private _spservice: SPservice;
13+
1614
constructor(props: IFieldPickerListDataProps) {
1715
super(props);
16+
1817
// States
1918
this.state = {
20-
noresultsFoundText:
21-
typeof this.props.noresultsFoundText === undefined
22-
? "No Items Found"
23-
: this.props.noresultsFoundText,
19+
noresultsFoundText: typeof this.props.noresultsFoundText === undefined ? strings.genericNoResultsFoundText : this.props.noresultsFoundText,
2420
showError: false,
2521
errorMessage: "",
26-
suggestionsHeaderText:
27-
typeof this.props.sugestedHeaderText === undefined
28-
? "Select Value"
29-
: this.props.sugestedHeaderText
22+
suggestionsHeaderText: typeof this.props.sugestedHeaderText === undefined ? strings.FieldPickerListDataSelectValue : this.props.sugestedHeaderText
3023
};
3124

3225
// Get SPService Factory
3326
this._spservice = new SPservice(this.props.context);
3427

35-
// handlers
36-
this.onFilterChanged = this.onFilterChanged.bind(this);
37-
this.getTextFromItem = this.getTextFromItem.bind(this);
38-
this.onItemChanged = this.onItemChanged.bind(this);
39-
4028
// Teste Parameters
4129
this._value = this.props.value !== undefined ? this.props.value : [];
4230
}
43-
// Render Field
31+
32+
/**
33+
* Render the field
34+
*/
4435
public render(): React.ReactElement<IFieldPickerListDataProps> {
4536
const { className, disabled, itemLimit } = this.props;
37+
4638
return (
4739
<div>
48-
<TagPicker
49-
onResolveSuggestions={this.onFilterChanged}
50-
// getTextFromItem={(item: any) => { return item.name; }}
51-
getTextFromItem={this.getTextFromItem}
52-
pickerSuggestionsProps={{
53-
suggestionsHeaderText: this.state.suggestionsHeaderText,
54-
noResultsFoundText: this.state.noresultsFoundText
55-
}}
56-
defaultSelectedItems={this._value}
57-
onChange={this.onItemChanged}
58-
className={className}
59-
itemLimit={itemLimit}
60-
disabled={disabled}
61-
/>
40+
<TagPicker onResolveSuggestions={this.onFilterChanged}
41+
// getTextFromItem={(item: any) => { return item.name; }}
42+
getTextFromItem={this.getTextFromItem}
43+
pickerSuggestionsProps={{
44+
suggestionsHeaderText: this.state.suggestionsHeaderText,
45+
noResultsFoundText: this.state.noresultsFoundText
46+
}}
47+
defaultSelectedItems={this._value}
48+
onChange={this.onItemChanged}
49+
className={className}
50+
itemLimit={itemLimit}
51+
disabled={disabled} />
52+
6253
<Label style={{color:'#FF0000'}}> {this.state.errorMessage} </Label>
6354
</div>
6455
);
6556
}
66-
// Get text from Item
57+
58+
/**
59+
* Get text from Item
60+
*/
6761
private getTextFromItem(item: any): string {
6862
return item.name;
6963
}
70-
/*
71-
On Selected Item
72-
*/
73-
private onItemChanged(selectedItems: { key: string; name: string }[]): void {
64+
65+
/**
66+
* On Selected Item
67+
*/
68+
private onItemChanged = (selectedItems: { key: string; name: string }[]): void => {
7469
let item: { key: string; name: string } = selectedItems[0];
7570
console.log(`selected items nr: ${selectedItems.length}`);
7671
this.props.onSelectedItem(selectedItems);
7772
}
78-
// Filter Change
79-
private onFilterChanged(
80-
filterText: string,
81-
tagList: { key: string; name: string }[]
82-
) {
83-
return new Promise<{ key: string; name: string }[]>((resolve, reject) => {
84-
this.loadListItems(filterText)
85-
.then((resolvedSugestions: { key: string; name: string }[]) => {
86-
this.setState({
87-
errorMessage: "",
88-
showError: false
89-
});
90-
resolve(resolvedSugestions);
91-
})
92-
.catch((reason: any) => {
93-
console.log(`Error get Items ${reason}`);
94-
this.setState({
95-
showError: true,
96-
errorMessage: reason.message,
97-
noresultsFoundText: reason.message
98-
});
99-
resolve([]);
100-
});
101-
});
73+
74+
/**
75+
* Filter Change
76+
*/
77+
private onFilterChanged = async (filterText: string, tagList: { key: string; name: string }[]) => {
78+
const resolvedSugestions: { key: string; name: string }[] = await this.loadListItems(filterText);
79+
80+
if (resolvedSugestions) {
81+
this.setState({
82+
errorMessage: "",
83+
showError: false
84+
});
85+
86+
return resolvedSugestions;
87+
} else {
88+
return [];
89+
}
10290
}
103-
/*
104-
Function to load List Items
105-
*/
106-
private async loadListItems(
107-
filterText: string
108-
): Promise<{ key: string; name: string }[]> {
91+
92+
/**
93+
* Function to load List Items
94+
*/
95+
private loadListItems = async (filterText: string): Promise<{ key: string; name: string }[]> => {
10996
let { listId, columnInternalName, webUrl } = this.props;
11097
let arrayItems: { key: string; name: string }[] = [];
98+
11199
try {
112-
let listItems = await this._spservice.getListItems(
113-
filterText,
114-
listId,
115-
columnInternalName,
116-
webUrl
117-
);
118-
// has Items ?
100+
let listItems = await this._spservice.getListItems(filterText, listId, columnInternalName, webUrl);
101+
// Check if the list had items
119102
if (listItems.length > 0) {
120-
listItems.map((item, i) => {
103+
for (const item of listItems) {
121104
arrayItems.push({ key: item.Id, name: item[columnInternalName] });
122-
});
105+
}
123106
}
124-
return Promise.resolve(arrayItems);
107+
return arrayItems;
125108
} catch (error) {
126-
return Promise.reject(error);
109+
console.log(`Error get Items`, error);
110+
this.setState({
111+
showError: true,
112+
errorMessage: error.message,
113+
noresultsFoundText: error.message
114+
});
115+
return null;
127116
}
128117
}
129118
}

src/controls/peoplepicker/PeoplePickerComponent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ export class PeoplePicker extends React.Component<IPeoplePickerProps, IPeoplePic
399399
public render(): React.ReactElement<IPeoplePickerProps> {
400400
const suggestionProps: IBasePickerSuggestionsProps = {
401401
suggestionsHeaderText: strings.peoplePickerSuggestionsHeaderText,
402-
noResultsFoundText: strings.peoplePickerNoResultsFoundText,
402+
noResultsFoundText: strings.genericNoResultsFoundText,
403403
loadingText: strings.peoplePickerLoadingText,
404404
resultsMaximumNumber: this.props.suggestionsLimit ? this.props.suggestionsLimit : 5
405405
};

src/loc/de-de.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ define([], () => {
5050
peoplePickerComponentErrorMessage: "Benutzerauswahl ist ein Pflichtfeld",
5151
peoplePickerComponentTitleText: "Benutzer auswählen",
5252
peoplePickerSuggestionsHeaderText: 'Vorgeschlagene Benutzer',
53-
peoplePickerNoResultsFoundText: 'Kein Ergebnis gefunden',
54-
peoplePickerLoadingText: 'Laden'
53+
peoplePickerLoadingText: 'Laden',
54+
55+
FieldPickerListDataSelectValue: 'Wähle Wert',
56+
57+
genericNoResultsFoundText: 'Kein Ergebnis gefunden'
5558
};
5659
});

src/loc/en-us.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ define([], () => {
5050
peoplePickerComponentErrorMessage: "Required Field",
5151
peoplePickerComponentTitleText: "Pick the user(s)",
5252
peoplePickerSuggestionsHeaderText: 'Suggested People',
53-
peoplePickerNoResultsFoundText: 'No results found',
54-
peoplePickerLoadingText: 'Loading'
53+
peoplePickerLoadingText: 'Loading',
54+
55+
FieldPickerListDataSelectValue: 'Select value',
56+
57+
genericNoResultsFoundText: 'No results found'
5558
};
5659
});

src/loc/fr-fr.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ define([], () => {
5050
peoplePickerComponentErrorMessage: "Le sélecteur de personnes est obligatoire",
5151
peoplePickerComponentTitleText: "Choisissez l'utilisateur(s)",
5252
peoplePickerSuggestionsHeaderText: 'Personnes suggérées',
53-
peoplePickerNoResultsFoundText: 'Aucun résultat trouvé',
54-
peoplePickerLoadingText: 'Chargement'
53+
peoplePickerLoadingText: 'Chargement',
54+
55+
FieldPickerListDataSelectValue: 'Sélectionnez une valeur',
56+
57+
genericNoResultsFoundText: 'Aucun résultat trouvé'
5558
};
5659
});

src/loc/mystrings.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ declare interface IControlStrings {
33
peoplePickerComponentErrorMessage: string;
44
peoplePickerComponentTitleText: string;
55
peoplePickerSuggestionsHeaderText: string;
6-
peoplePickerNoResultsFoundText: string;
6+
genericNoResultsFoundText: string;
77
peoplePickerLoadingText: string;
88

99

@@ -23,6 +23,8 @@ declare interface IControlStrings {
2323
TaxonomyPickerMenuTermSet: string;
2424
TaxonomyPickerInLabel: string;
2525
TaxonomyPickerTermSetLabel: string;
26+
27+
FieldPickerListDataSelectValue: string;
2628
}
2729

2830
declare module 'ControlStrings' {

src/loc/nl-nl.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ define([], () => {
5050
peoplePickerComponentErrorMessage: "Verplicht veld",
5151
peoplePickerComponentTitleText: "Kies personen",
5252
peoplePickerSuggestionsHeaderText: 'Voorgestelde personen',
53-
peoplePickerNoResultsFoundText: 'Geen resultaten gevonden',
54-
peoplePickerLoadingText: 'Laden'
53+
peoplePickerLoadingText: 'Laden',
54+
55+
FieldPickerListDataSelectValue: 'Selecteer veld',
56+
57+
genericNoResultsFoundText: 'Geen resultaten gevonden'
5558
};
5659
});

0 commit comments

Comments
 (0)