Skip to content

Commit ba521a8

Browse files
authored
chore: call customElements.define synchronously (#9857)
1 parent 3c0e713 commit ba521a8

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

packages/base/src/Boot.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ const boot = async (): Promise<void> => {
7070
resolve();
7171

7272
booted = true;
73-
await eventProvider.fireEventAsync("boot");
73+
eventProvider.fireEvent("boot");
7474
};
7575

7676
bootPromise = new Promise(bootExecutor as (resolve: PromiseResolve) => void);

packages/base/src/UI5Element.ts

+13-11
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,10 @@ abstract class UI5Element extends HTMLElement {
300300
return;
301301
}
302302

303+
if (!ctor.asyncFinished) {
304+
await ctor.definePromise;
305+
}
306+
303307
renderImmediately(this);
304308
this._domRefReadyPromise._deferredResolve!();
305309
this._fullyConnected = true;
@@ -1199,13 +1203,6 @@ abstract class UI5Element extends HTMLElement {
11991203
return uniqueDependenciesCache.get(this) || [];
12001204
}
12011205

1202-
/**
1203-
* Returns a promise that resolves whenever all dependencies for this UI5 Web Component have resolved
1204-
*/
1205-
static whenDependenciesDefined(): Promise<Array<typeof UI5Element>> {
1206-
return Promise.all(this.getUniqueDependencies().map(dep => dep.define()));
1207-
}
1208-
12091206
/**
12101207
* Hook that will be called upon custom element definition
12111208
*
@@ -1215,15 +1212,16 @@ abstract class UI5Element extends HTMLElement {
12151212
return Promise.resolve();
12161213
}
12171214

1215+
static asyncFinished: boolean;
1216+
static definePromise: Promise<[void, void]> | undefined;
1217+
12181218
/**
12191219
* Registers a UI5 Web Component in the browser window object
12201220
* @public
12211221
*/
12221222
static async define(): Promise<typeof UI5Element> {
1223-
await boot();
1224-
1225-
await Promise.all([
1226-
this.whenDependenciesDefined(),
1223+
this.definePromise = Promise.all([
1224+
boot(),
12271225
this.onDefine(),
12281226
]);
12291227

@@ -1249,6 +1247,10 @@ abstract class UI5Element extends HTMLElement {
12491247
registerTag(tag);
12501248
customElements.define(tag, this as unknown as CustomElementConstructor);
12511249
}
1250+
1251+
await this.definePromise;
1252+
this.asyncFinished = true;
1253+
12521254
return this;
12531255
}
12541256

packages/compat/src/TableGroupRow.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class TableGroupRow extends UI5Element implements ITableRow {
7979
}
8080

8181
get ariaLabelText() {
82-
return `${TableGroupRow.i18nBundle.getText(TABLE_GROUP_ROW_ARIA_LABEL)} ${this.innerText}. ${this.forcedAriaPosition}`;
82+
return `${TableGroupRow.i18nBundle.getText(TABLE_GROUP_ROW_ARIA_LABEL)} ${this.textContent}. ${this.forcedAriaPosition}`;
8383
}
8484

8585
visibleColCount(): number {

packages/main/src/Calendar.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,10 @@ class Calendar extends CalendarPart {
322322
}
323323

324324
static async onDefine() {
325-
Calendar.i18nBundle = await getI18nBundle("@ui5/webcomponents");
325+
[Calendar.i18nBundle] = await Promise.all([
326+
getI18nBundle("@ui5/webcomponents"),
327+
super.onDefine(),
328+
]);
326329
}
327330

328331
/**

0 commit comments

Comments
 (0)