Skip to content

Commit 7c3d41b

Browse files
patrikhellgrenAJIXuMuK
authored andcommitted
Fix term path rendering in ModernTaxonomyPicker
1 parent 6ddc169 commit 7c3d41b

File tree

2 files changed

+38
-20
lines changed

2 files changed

+38
-20
lines changed

src/controls/modernTaxonomyPicker/ModernTaxonomyPicker.tsx

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,18 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
130130
}
131131

132132
function onApply(): void {
133-
setSelectedOptions([...selectedPanelOptions]);
133+
if (props.isPathRendered) {
134+
addParentInformationToTerms([...selectedPanelOptions])
135+
.then((selectedTermsWithPath) => {
136+
setSelectedOptions(selectedTermsWithPath);
137+
})
138+
.catch(() => {
139+
// no-op;
140+
});
141+
}
142+
else {
143+
setSelectedOptions([...selectedPanelOptions]);
144+
}
134145
onClosePanel();
135146
}
136147

@@ -148,13 +159,13 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
148159
}
149160
}
150161

151-
async function addParentInformationToTerms(filteredTerms: ITermInfo[]): Promise<ITermInfo[]> {
152-
for(const filteredTerm of filteredTerms) {
153-
const termParent = await getParentTree(filteredTerm);
154-
filteredTerm.parent = termParent;
162+
async function addParentInformationToTerms(terms: ITermInfo[]): Promise<ITermInfo[]> {
163+
for(const term of terms) {
164+
const termParent = await getParentTree(term);
165+
term.parent = termParent;
155166
}
156167

157-
return filteredTerms;
168+
return terms;
158169
}
159170

160171
async function onResolveSuggestions(filter: string, selectedItems?: ITermInfo[]): Promise<ITermInfo[]> {
@@ -163,8 +174,7 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
163174
}
164175
const filteredTerms = await taxonomyService.searchTerm(Guid.parse(props.termSetId), filter, currentLanguageTag, props.anchorTermId ? Guid.parse(props.anchorTermId) : Guid.empty, props.allowSelectingChildren);
165176

166-
const filteredTermsWithParentInformation = props.isPathRendered ? await addParentInformationToTerms(filteredTerms) : filteredTerms;
167-
const filteredTermsWithoutSelectedItems = filteredTermsWithParentInformation.filter((term) => {
177+
const filteredTermsWithoutSelectedItems = filteredTerms.filter((term) => {
168178
if (!selectedItems || selectedItems.length === 0) {
169179
return true;
170180
}
@@ -234,10 +244,27 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
234244
fullParentPrefixes = fullParentPrefixes.reverse();
235245
}
236246
return labels.length > 0 ? (
237-
<TermItem languageTag={currentLanguageTag} termStoreInfo={currentTermStoreInfo} {...itemProps}>{fullParentPrefixes.join(":")}</TermItem>
247+
<TermItem languageTag={currentLanguageTag} termStoreInfo={currentTermStoreInfo} name={fullParentPrefixes.join(":")} {...itemProps}>{fullParentPrefixes.join(":")}</TermItem>
238248
) : null;
239249
}
240250

251+
function onTermPickerChange(itms?: ITermInfo[]): void {
252+
if (itms && props.isPathRendered) {
253+
addParentInformationToTerms(itms)
254+
.then((itmsWithPath) => {
255+
setSelectedOptions(itmsWithPath || []);
256+
setSelectedPanelOptions(itmsWithPath || []);
257+
})
258+
.catch(() => {
259+
//no-op;
260+
});
261+
}
262+
else {
263+
setSelectedOptions(itms || []);
264+
setSelectedPanelOptions(itms || []);
265+
}
266+
}
267+
241268
function getTextFromItem(termInfo: ITermInfo): string {
242269
let labelsWithMatchingLanguageTag = termInfo.labels.filter((termLabel) => (termLabel.languageTag === currentLanguageTag));
243270
if (labelsWithMatchingLanguageTag.length === 0) {
@@ -265,10 +292,7 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
265292
selectedItems={selectedOptions}
266293
disabled={props.disabled}
267294
styles={props.termPickerProps?.styles ?? termPickerStyles}
268-
onChange={(itms?: ITermInfo[]) => {
269-
setSelectedOptions(itms || []);
270-
setSelectedPanelOptions(itms || []);
271-
}}
295+
onChange={onTermPickerChange}
272296
getTextFromItem={getTextFromItem}
273297
pickerSuggestionsProps={props.termPickerProps?.pickerSuggestionsProps ?? { noResultsFoundText: strings.ModernTaxonomyPickerNoResultsFound }}
274298
inputProps={props.termPickerProps?.inputProps ?? {

src/controls/modernTaxonomyPicker/termItem/TermItem.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ export const TermItemBase = (props: ITermItemProps): JSX.Element => {
2121
index,
2222
onRemoveItem,
2323
removeButtonAriaLabel,
24-
languageTag,
2524
} = props;
2625

2726
const classNames = getClassNames(styles, {
@@ -31,11 +30,6 @@ export const TermItemBase = (props: ITermItemProps): JSX.Element => {
3130
disabled,
3231
});
3332

34-
let labels = props.item.labels.filter((name) => name.languageTag === languageTag && name.isDefault);
35-
if (labels.length === 0) {
36-
labels = props.item.labels.filter((name) => name.languageTag === props.termStoreInfo.defaultLanguageTag && name.isDefault);
37-
}
38-
3933
return (
4034
<div
4135
className={classNames.root}
@@ -44,7 +38,7 @@ export const TermItemBase = (props: ITermItemProps): JSX.Element => {
4438
data-selection-index={index}
4539
data-is-focusable={(enableTermFocusInDisabledPicker || !disabled) && true}
4640
>
47-
<span className={classNames.text} aria-label={labels[0].name} title={labels[0].name}>
41+
<span className={classNames.text} aria-label={children as string} title={children as string}>
4842
{children}
4943
</span>
5044
<IconButton

0 commit comments

Comments
 (0)