diff --git a/src/vaadin-dropdown-menu.html b/src/vaadin-dropdown-menu.html index c07d56cb..ad9d81d8 100644 --- a/src/vaadin-dropdown-menu.html +++ b/src/vaadin-dropdown-menu.html @@ -370,6 +370,15 @@ const template = this.querySelector('template'); this._overlayElement.template = template; if (this._overlayElement.content) { + const origForwardHostProp = this._overlayElement._instance && this._overlayElement._instance.forwardHostProp; + + this._overlayElement._instance.forwardHostProp = (...args) => { + origForwardHostProp.apply(this._overlayElement._instance, args); + setTimeout(() => { + this._updateValueSlot(); + }); + }; + this._menuElement = Array.from(this._overlayElement.content.children).filter(element => element.localName !== 'style')[0]; if (this._menuElement) { diff --git a/test/dropdown-menu-test.html b/test/dropdown-menu-test.html index f65cfe6b..033f0189 100644 --- a/test/dropdown-menu-test.html +++ b/test/dropdown-menu-test.html @@ -235,6 +235,16 @@ expect(menu.items[0].textContent.trim()).to.equal('foo'); }); + it('dropdown-menu should update selected item on host property changes', done => { + container.message = 'foo'; + menu.selected = 0; + container.message = 'bar'; + setTimeout(() => { + expect(dropdown._inputElement.querySelector('mock-item').textContent.trim()).to.equal('bar'); + done(); + }); + }); + it('dropdown-menu should support two-way data binding', () => { const input = menu.items[1].querySelector('input'); input.value = 'bar'; diff --git a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/android.png b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/android.png index d2f7c573..adf01957 100644 Binary files a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/android.png and b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/android.png differ diff --git a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/chrome.png b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/chrome.png index 7f679786..2f5b0dd8 100644 Binary files a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/chrome.png and b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/chrome.png differ diff --git a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/edge.png b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/edge.png index 19551e35..400c4015 100644 Binary files a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/edge.png and b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/edge.png differ diff --git a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/firefox.png b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/firefox.png index 74e47c27..90154c3c 100644 Binary files a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/firefox.png and b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/firefox.png differ diff --git a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/ie.png b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/ie.png index 019a44fe..46fed598 100644 Binary files a/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/ie.png and b/test/visual/screens/vaadin-dropdown-menu/default-tests/dropdown-menu/ie.png differ