Skip to content

Commit d5526dc

Browse files
authored
feat(ui5-shellbar): introduce async search btn getter (#11338)
The `searchButtonDomRef` has been refactored into an asynchronous method `getSearchButtonDomRef` that waits for the component to finish rendering. This ensures the DOM is available for use cases that require focusing the search button. A similar code has been applied to the `search-field-toggle` event, which is now fired after rendering is complete.
1 parent f43b8dc commit d5526dc

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

packages/fiori/src/ShellBar.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -791,8 +791,9 @@ class ShellBar extends UI5Element {
791791
* Use this method to change the state of the search filed according to internal logic.
792792
* An event is fired to notify the change.
793793
*/
794-
setSearchState(expanded: boolean) {
794+
async setSearchState(expanded: boolean) {
795795
this.showSearchField = expanded;
796+
await renderFinished();
796797
this.fireDecoratorEvent("search-field-toggle", { expanded });
797798
}
798799

@@ -1057,11 +1058,12 @@ class ShellBar extends UI5Element {
10571058

10581059
/**
10591060
* Returns the `search` icon DOM ref.
1061+
* @returns The search icon DOM ref
10601062
* @public
1061-
* @default null
10621063
* @since 2.10.0
10631064
*/
1064-
get searchButtonDomRef(): HTMLElement | null {
1065+
async getSearchButtonDomRef(): Promise<HTMLElement | null> {
1066+
await renderFinished();
10651067
return this.shadowRoot!.querySelector<HTMLElement>(`*[data-ui5-stable="toggle-search"]`);
10661068
}
10671069

packages/fiori/test/pages/ShellBar_evolution.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,7 @@
244244
shellbar.addEventListener("content-item-visibility-change", (e) => {
245245
console.log(e.detail.items);
246246
})
247-
248-
247+
249248
const menuSubsDynamic = document.getElementById("menuSubsDynamic");
250249
const btnOpenBasicDynamic = document.getElementById("btnOpenBasicDynamic");
251250

@@ -304,15 +303,16 @@
304303
});
305304

306305
shellbar_hide_search.addEventListener('ui5-search-button-click', async (e) => {
307-
await window["sap-ui-webcomponents-bundle"].renderFinished();
308-
customSearchInput.focus();
306+
shellbar_hide_search.addEventListener('ui5-search-field-toggle', async (e) => {
307+
customSearchInput.focus();
308+
}, { once: true });
309309
});
310310

311311
customSearchClose.addEventListener('click', async () => {
312312
shellbar_hide_search.showSearchField = false;
313313
shellbar_hide_search.hideSearchButton = false;
314-
await window["sap-ui-webcomponents-bundle"].renderFinished();
315-
shellbar_hide_search.searchButtonDomRef.focus();
314+
const searchButton = await shellbar_hide_search.getSearchButtonDomRef()
315+
searchButton.focus();
316316
});
317317
</script>
318318

0 commit comments

Comments
 (0)