@@ -130,7 +130,18 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
130
130
}
131
131
132
132
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
+ }
134
145
onClosePanel ( ) ;
135
146
}
136
147
@@ -148,13 +159,13 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
148
159
}
149
160
}
150
161
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 ;
155
166
}
156
167
157
- return filteredTerms ;
168
+ return terms ;
158
169
}
159
170
160
171
async function onResolveSuggestions ( filter : string , selectedItems ?: ITermInfo [ ] ) : Promise < ITermInfo [ ] > {
@@ -163,8 +174,7 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
163
174
}
164
175
const filteredTerms = await taxonomyService . searchTerm ( Guid . parse ( props . termSetId ) , filter , currentLanguageTag , props . anchorTermId ? Guid . parse ( props . anchorTermId ) : Guid . empty , props . allowSelectingChildren ) ;
165
176
166
- const filteredTermsWithParentInformation = props . isPathRendered ? await addParentInformationToTerms ( filteredTerms ) : filteredTerms ;
167
- const filteredTermsWithoutSelectedItems = filteredTermsWithParentInformation . filter ( ( term ) => {
177
+ const filteredTermsWithoutSelectedItems = filteredTerms . filter ( ( term ) => {
168
178
if ( ! selectedItems || selectedItems . length === 0 ) {
169
179
return true ;
170
180
}
@@ -234,10 +244,27 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
234
244
fullParentPrefixes = fullParentPrefixes . reverse ( ) ;
235
245
}
236
246
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 >
238
248
) : null ;
239
249
}
240
250
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
+
241
268
function getTextFromItem ( termInfo : ITermInfo ) : string {
242
269
let labelsWithMatchingLanguageTag = termInfo . labels . filter ( ( termLabel ) => ( termLabel . languageTag === currentLanguageTag ) ) ;
243
270
if ( labelsWithMatchingLanguageTag . length === 0 ) {
@@ -265,10 +292,7 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps): JSX.Ele
265
292
selectedItems = { selectedOptions }
266
293
disabled = { props . disabled }
267
294
styles = { props . termPickerProps ?. styles ?? termPickerStyles }
268
- onChange = { ( itms ?: ITermInfo [ ] ) => {
269
- setSelectedOptions ( itms || [ ] ) ;
270
- setSelectedPanelOptions ( itms || [ ] ) ;
271
- } }
295
+ onChange = { onTermPickerChange }
272
296
getTextFromItem = { getTextFromItem }
273
297
pickerSuggestionsProps = { props . termPickerProps ?. pickerSuggestionsProps ?? { noResultsFoundText : strings . ModernTaxonomyPickerNoResultsFound } }
274
298
inputProps = { props . termPickerProps ?. inputProps ?? {
0 commit comments