MCPcopy Create free account
hub / github.com/UI5/webcomponents / _selectMatchingItem

Method _selectMatchingItem

packages/main/src/ComboBox.ts:1290–1373  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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) {

Callers 2

onBeforeRenderingMethod · 0.95
_resetFilterMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected