From 7e1a7ef95a7f150a11f9035e6a86e3bf957de509 Mon Sep 17 00:00:00 2001 From: Mikhail Bashkirov Date: Tue, 28 May 2019 23:39:26 +0200 Subject: [PATCH] fix(field): fix form registration in Edge --- packages/field/src/FormControlMixin.js | 4 ++-- packages/fieldset/test/lion-fieldset.test.js | 14 +++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/field/src/FormControlMixin.js b/packages/field/src/FormControlMixin.js index 1c23f2f98..c684ff78c 100644 --- a/packages/field/src/FormControlMixin.js +++ b/packages/field/src/FormControlMixin.js @@ -145,7 +145,7 @@ export const FormControlMixin = dedupeMixin( * will requires a `await nextFrame()` in tests */ _registerFormElement() { - requestAnimationFrame(() => { + this.updateComplete.then(() => { this.dispatchEvent( new CustomEvent('form-element-register', { detail: { element: this }, @@ -164,7 +164,7 @@ export const FormControlMixin = dedupeMixin( * @see {@link this._registerFormElement} */ _requestParentFormGroupUpdateOfResetModelValue() { - requestAnimationFrame(() => { + this.updateComplete.then(() => { if (this.__parentFormGroup) { this.__parentFormGroup._updateResetModelValue(); } diff --git a/packages/fieldset/test/lion-fieldset.test.js b/packages/fieldset/test/lion-fieldset.test.js index 6dec0e82f..d9f003ad4 100644 --- a/packages/fieldset/test/lion-fieldset.test.js +++ b/packages/fieldset/test/lion-fieldset.test.js @@ -518,7 +518,8 @@ describe('', () => { `); - await nextFrame(); + await el.querySelector('lion-input').updateComplete; + const input = el.querySelector('#firstName'); input.modelValue = 'Bar'; @@ -536,7 +537,8 @@ describe('', () => { `); - await nextFrame(); + await el.querySelector('lion-input').updateComplete; + const input = el.querySelector('#firstName'); input.modelValue = 'Bar'; @@ -556,9 +558,11 @@ describe('', () => { `); - // 2 times as we are nested here - await nextFrame(); - await nextFrame(); + await Promise.all([ + el.querySelector('lion-fieldset').updateComplete, + el.querySelector('lion-input').updateComplete, + ]); + const input = el.querySelector('#firstName'); const nestedFieldset = el.querySelector('#name');