Skip to content

Commit 503fd0f

Browse files
authored
(People Picker) Deterministic Suggestions Resolution (#51)
* fixes issue with suggestions not resolving correctly fixes other minor typos and consistency issues * fix casing on peoplepicker file
1 parent 387fe36 commit 503fd0f

File tree

13 files changed

+163
-91
lines changed

13 files changed

+163
-91
lines changed

PeoplePicker/PeoplePicker/ControlManifest.Input.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<property name="Error" display-name-key="Error" of-type="TwoOptions" usage="input" default-value="false" required="false" />
88
<property name="MinimumSearchTermLength" description-key="MinimumSearchTermLength_Desc" display-name-key="MinimumSearchTermLength" required="true" usage="input" of-type="Whole.None" default-value="3" />
99
<property name="SearchTermToShortMessage" description-key="SearchTermToShortMessage_Desc" display-name-key="SearchTermToShortMessage" required="true" usage="input" of-type="SingleLine.Text" default-value="Continue Typing..." />
10-
<property name="NoResultFoundMesage" description-key="NoResultFoundMesage_Desc" display-name-key="NoResultFoundMesage" required="true" usage="input" of-type="SingleLine.Text" default-value="No results found" />
10+
<property name="NoResultFoundMessage" description-key="NoResultFoundMessage_Desc" display-name-key="NoResultFoundMessage" required="true" usage="input" of-type="SingleLine.Text" default-value="No results found" />
1111
<property name="SuggestionsHeaderText" description-key="SuggestionsHeaderText_Desc" display-name-key="SuggestionsHeaderText" required="true" usage="input" of-type="SingleLine.Text" default-value="Suggested People" />
1212
<property name="HintText" description-key="HintText_Desc" display-name-key="HintText" required="true" usage="input" of-type="SingleLine.Text" default-value="Search" />
1313
<property name="MaxPeople" description-key="MaxPeople_Desc" display-name-key="MaxPeople" required="true" usage="input" of-type="Whole.None" default-value="10" />

PeoplePicker/PeoplePicker/__mocks__/mock-parameters.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export function getMockParameters(): IInputs {
1717
MinimumSearchTermLength: new MockWholeNumberProperty(),
1818
SearchTermToShortMessage: new MockStringProperty(),
1919
SuggestionsHeaderText: new MockStringProperty(),
20-
NoResultFoundMesage: new MockStringProperty(),
20+
NoResultFoundMessage: new MockStringProperty(),
2121
HintText: new MockStringProperty(),
2222
MaxPeople: new MockWholeNumberProperty(),
2323
};

PeoplePicker/PeoplePicker/__tests__/__snapshots__/peoplepicker-lifecycle.test.tsx.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
exports[`PeoplePicker renders 1`] = `
44
<div
55
className=
6-
PowerCATPeoplepicker
6+
PowerCATPeoplePicker
77
{
88
-moz-osx-font-smoothing: grayscale;
99
-webkit-font-smoothing: antialiased;
@@ -150,7 +150,7 @@ exports[`PeoplePicker renders 1`] = `
150150
exports[`PeoplePicker renders with simple personas 1`] = `
151151
<div
152152
className=
153-
PowerCATPeoplepicker
153+
PowerCATPeoplePicker
154154
{
155155
-moz-osx-font-smoothing: grayscale;
156156
-webkit-font-smoothing: antialiased;

PeoplePicker/PeoplePicker/__tests__/peoplepicker-component.test.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import { IBasePicker, IPersonaProps } from '@fluentui/react';
22
import * as React from 'react';
33
import * as ReactDOM from 'react-dom';
44
import * as ReactTestUtils from 'react-dom/test-utils';
5-
import { CanvasPeoplePicker } from '../components/PeoplePicker';
5+
import { CanvasPeoplePicker } from '../components/Peoplepicker';
66
import { CanvasPeoplePickerProps } from '../components/Component.types';
7-
import { getDataSetfromPersona } from '../components/DatasetMapping';
7+
import { getDataSetFromPersona } from '../components/DatasetMapping';
88

99
// Since requestAnimationFrame does not exist in the test DOM, mock it
1010
window.requestAnimationFrame = jest.fn().mockImplementation((callback) => {
@@ -29,7 +29,7 @@ describe('PeoplePickerComponent', () => {
2929

3030
it('test getDataSetfromPersona function', () => {
3131
const personaValue = [{ key: '1', text: 'John Doe' }] as IPersonaProps[];
32-
const personaOutput = getDataSetfromPersona(personaValue);
32+
const personaOutput = getDataSetFromPersona(personaValue);
3333
expect(personaOutput[0].PersonaKey).toBe(personaOutput[0].PersonaKey);
3434
});
3535

@@ -48,7 +48,7 @@ describe('PeoplePickerComponent', () => {
4848
width: 300,
4949
height: 32,
5050
people: [{ key: '1', text: 'John Doe' }] as IPersonaProps[],
51-
peoplepickerType: 'normal people picker',
51+
peoplePickerType: 'normal people picker',
5252
defaultSelected: [] as IPersonaProps[],
5353
delayResults: false,
5454
isPickerDisabled: false,
@@ -66,7 +66,7 @@ describe('PeoplePickerComponent', () => {
6666
keepTypingMessage: 'Continue typing...',
6767
suggestionsHeaderText: 'Suggested People',
6868
filterSuggestions: filterSuggestions,
69-
noresultfoundText: 'no result found',
69+
noResultFoundText: 'no result found',
7070
onBlur: onBlur,
7171
onFocus: onFocus,
7272
hintText: 'Search',

PeoplePicker/PeoplePicker/components/Component.types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export interface CanvasPeoplePickerProps {
1212
visible?: boolean;
1313
isPickerDisabled: boolean;
1414
showSecondaryText: boolean;
15-
peoplepickerType: string;
15+
peoplePickerType: string;
1616
error?: boolean;
1717
componentRef?: IRefObject<IBasePicker<IPersonaProps>>;
1818
onResize?: (width: number, height: number) => void;
@@ -24,7 +24,7 @@ export interface CanvasPeoplePickerProps {
2424
onBlur: () => void;
2525
minimumFilterLength: number;
2626
keepTypingMessage: string;
27-
noresultfoundText: string;
27+
noResultFoundText: string;
2828
suggestionsHeaderText: string;
2929
hintText: string;
3030
maxPeople: number;

PeoplePicker/PeoplePicker/components/DatasetMapping.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export function getPersonaPresence(personaPresence: string): PersonaPresence {
7171
}
7272
}
7373

74-
export function getDataSetfromPersona(selectedPeople: IPersonaProps[]): ICustomPersonaProps[] {
74+
export function getDataSetFromPersona(selectedPeople: IPersonaProps[]): ICustomPersonaProps[] {
7575
return selectedPeople.map((user) => {
7676
return {
7777
PersonaKey: user.key,

PeoplePicker/PeoplePicker/components/Peoplepicker.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ export const CanvasPeoplePicker = React.memo((props: CanvasPeoplePickerProps) =>
2626
filterSuggestions,
2727
minimumFilterLength,
2828
keepTypingMessage,
29-
noresultfoundText,
29+
noResultFoundText,
3030
isPickerDisabled,
3131
error,
32-
peoplepickerType,
32+
peoplePickerType,
3333
accessibilityLabel,
3434
suggestionsHeaderText,
3535
componentRef,
@@ -45,16 +45,16 @@ export const CanvasPeoplePicker = React.memo((props: CanvasPeoplePickerProps) =>
4545

4646
const [peopleList, setPeopleList] = React.useState<IPersonaProps[]>(suggestedPeople);
4747
const prevSelectedPeople = usePrevious(defaultSelected);
48-
const prevpeopleList = usePrevious(suggestedPeople);
48+
const prevPeopleList = usePrevious(suggestedPeople);
4949
const [searchTerm, setSearchTerm] = React.useState<string>('');
50-
const [pickerKey, setPickerKey] = React.useState<string>(peoplepickerType.split(' ')[0]);
50+
const [pickerKey, setPickerKey] = React.useState<string>(peoplePickerType.split(' ')[0]);
5151
const suggestionProps: IBasePickerSuggestionsProps = {
5252
suggestionsHeaderText: suggestionsHeaderText,
5353
mostRecentlyUsedHeaderText: suggestionsHeaderText,
5454
noResultsFoundText:
5555
searchTerm && minimumFilterLength && searchTerm.length < minimumFilterLength
5656
? keepTypingMessage
57-
: noresultfoundText,
57+
: noResultFoundText,
5858
loadingText: 'Loading',
5959
showRemoveButtons: true,
6060
suggestionsAvailableAlertText: 'People Picker Suggestions available',
@@ -80,10 +80,10 @@ export const CanvasPeoplePicker = React.memo((props: CanvasPeoplePickerProps) =>
8080
// To re-render the existing component during pre-selected members change
8181
setPickerKey(pickerKey.concat('_1'));
8282
}
83-
if (prevpeopleList !== suggestedPeople) {
83+
if (prevPeopleList !== suggestedPeople) {
8484
setPeopleList(suggestedPeople);
8585
}
86-
}, [onPersonSelect, pickerKey, suggestedPeople, defaultSelected, prevSelectedPeople, prevpeopleList]);
86+
}, [onPersonSelect, pickerKey, suggestedPeople, defaultSelected, prevSelectedPeople, prevPeopleList]);
8787

8888
const rootStyle = React.useMemo(() => {
8989
// This is needed for custom pages to ensure the People Picker grows to the full width
@@ -147,7 +147,7 @@ export const CanvasPeoplePicker = React.memo((props: CanvasPeoplePickerProps) =>
147147
onPersonSelect([]);
148148
}
149149
};
150-
const peoplepickerProps: IPeoplePickerProps = {
150+
const peoplePickerProps: IPeoplePickerProps = {
151151
// eslint-disable-next-line react/jsx-no-bind
152152
onResolveSuggestions: filterSuggestedUsers,
153153
getTextFromItem: getTextFromItem,
@@ -173,17 +173,17 @@ export const CanvasPeoplePicker = React.memo((props: CanvasPeoplePickerProps) =>
173173
onChange: onChange,
174174
} as IPeoplePickerProps;
175175
return (
176-
<ThemeProvider theme={theme} ref={target} className={'PowerCATPeoplepicker'} style={rootStyle}>
176+
<ThemeProvider theme={theme} ref={target} className={'PowerCATPeoplePicker'} style={rootStyle}>
177177
{(() => {
178-
switch (peoplepickerType.toLowerCase()) {
178+
switch (peoplePickerType.toLowerCase()) {
179179
case 'normal people picker':
180-
return <NormalPeoplePicker {...peoplepickerProps} />;
180+
return <NormalPeoplePicker {...peoplePickerProps} />;
181181
case 'list people picker':
182-
return <ListPeoplePicker {...peoplepickerProps} />;
182+
return <ListPeoplePicker {...peoplePickerProps} />;
183183
case 'compact people picker':
184-
return <CompactPeoplePicker {...peoplepickerProps} />;
184+
return <CompactPeoplePicker {...peoplePickerProps} />;
185185
default:
186-
return <NormalPeoplePicker {...peoplepickerProps} />;
186+
return <NormalPeoplePicker {...peoplePickerProps} />;
187187
}
188188
})()}
189189
</ThemeProvider>
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* Error Condition Overrides*/
2-
.PowerCATPeoplepicker .error-condition .ms-BasePicker-text,
3-
.PowerCATPeoplepicker .error-condition .ms-BasePicker-text:hover,
4-
.PowerCATPeoplepicker .error-condition .ms-BasePicker-text::after {
2+
.PowerCATPeoplePicker .error-condition .ms-BasePicker-text,
3+
.PowerCATPeoplePicker .error-condition .ms-BasePicker-text:hover,
4+
.PowerCATPeoplePicker .error-condition .ms-BasePicker-text::after {
55
border-color: #BA3D22 !important;
66
}
77

0 commit comments

Comments
 (0)