()
| 1288 | } |
| 1289 | |
| 1290 | _selectMatchingItem() { |
| 1291 | const currentlyFocusedItem = this.items.find(item => item.focused); |
| 1292 | const shouldSelectionBeCleared = currentlyFocusedItem && currentlyFocusedItem.isGroupItem; |
| 1293 | const valueToMatch = currentlyFocusedItem?.value ?? this.selectedValue; |
| 1294 | let itemToBeSelected: IComboBoxItem | undefined; |
| 1295 | let previouslySelectedItem: IComboBoxItem | undefined; |
| 1296 | |
| 1297 | // Find previously selected item |
| 1298 | this._filteredItems.forEach(item => { |
| 1299 | if (!isInstanceOfComboBoxItemGroup(item)) { |
| 1300 | if (item.selected) { |
| 1301 | previouslySelectedItem = item; |
| 1302 | } |
| 1303 | } else { |
| 1304 | const selectedGroupItem = item.items?.find(i => i.selected); |
| 1305 | if (selectedGroupItem) { |
| 1306 | previouslySelectedItem = selectedGroupItem; |
| 1307 | } |
| 1308 | } |
| 1309 | }); |
| 1310 | |
| 1311 | this._filteredItems.forEach(item => { |
| 1312 | if (!shouldSelectionBeCleared && !itemToBeSelected) { |
| 1313 | if (isInstanceOfComboBoxItemGroup(item)) { |
| 1314 | if (this._useSelectedValue) { |
| 1315 | itemToBeSelected = item.items.find(i => i.value === valueToMatch && (this.value === "" || i.text?.toLowerCase() === this.value.toLowerCase())); |
| 1316 | } else { |
| 1317 | itemToBeSelected = item.items?.find(i => i.text?.toLowerCase() === this.value.toLowerCase()); |
| 1318 | } |
| 1319 | } else { |
| 1320 | if (this._useSelectedValue) { |
| 1321 | itemToBeSelected = this.items.find(i => i.value === valueToMatch && (this.value === "" || i.text?.toLowerCase() === this.value.toLowerCase())); |
| 1322 | return; |
| 1323 | } |
| 1324 | itemToBeSelected = item.text?.toLowerCase() === this.value.toLowerCase() ? item : undefined; |
| 1325 | } |
| 1326 | } |
| 1327 | }); |
| 1328 | |
| 1329 | // When selectedValue matched an item but value is empty (initial render), populate value from the item's text |
| 1330 | if (itemToBeSelected && this._initialRendering && this.value === "") { |
| 1331 | this.value = itemToBeSelected.text || ""; |
| 1332 | } |
| 1333 | |
| 1334 | this._filteredItems = this._filteredItems.map(item => { |
| 1335 | if (!isInstanceOfComboBoxItemGroup(item)) { |
| 1336 | item.selected = item === itemToBeSelected; |
| 1337 | return item; |
| 1338 | } |
| 1339 | |
| 1340 | item.items?.forEach(groupItem => { |
| 1341 | groupItem.selected = itemToBeSelected === groupItem; |
| 1342 | }); |
| 1343 | |
| 1344 | return item; |
| 1345 | }); |
| 1346 | |
| 1347 | if (!itemToBeSelected && this._useSelectedValue) { |
no outgoing calls
no test coverage detected