src/util/sp/searchPerson.js
/**
* Search for persons in SP using clientPeoplePickerSearchUser.
*
* @param {string} searchText part of name
* @param {Object} options
* @param {number} options.maximumEntitySuggestions default 10
* @param {number} options.principalType default 1
* @param {number} options.principalSource default 15
* @param {string} options.searchPrefix default ''
* @param {string} options.searchSuffix default ''
*
* @return {Promise<Object[]>} list of items with person data.
*/
export default function searchPerson(searchText, options) {
const opts = Object.assign({
maximumEntitySuggestions: 10,
principalType: 1,
principalSource: 15,
searchPrefix: '',
searchSuffix: '',
}, options);
return new Promise(function(resolve, reject) {
window.SP.SOD.executeFunc("sp.js", "SP.ClientContext", () => {
const spContext = window.SP.ClientContext.get_current();
const queryTerm = '' + opts.searchPrefix + searchText + opts.searchSuffix;
const query = new window.SP.UI.ApplicationPages.ClientPeoplePickerQueryParameters();
query.set_allowMultipleEntities(false);
query.set_maximumEntitySuggestions(opts.maximumEntitySuggestions);
query.set_principalType(opts.principalType);
query.set_principalSource(opts.principalSource);
query.set_queryString(queryTerm);
const searchResult = window.SP.UI.ApplicationPages.ClientPeoplePickerWebServiceInterface.clientPeoplePickerSearchUser(spContext, query);
spContext.executeQueryAsync(
function() {
const res = spContext.parseObjectFromJsonString(searchResult.get_value());
resolve(res);
},
function() {reject(arguments);}
);
});
});
}