@vaadin/vaadin-select 21.0.1 → 21.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +14 -14
  2. package/src/vaadin-select.js +22 -11
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/vaadin-select",
3
- "version": "21.0.1",
3
+ "version": "21.0.5",
4
4
  "description": "vaadin-select",
5
5
  "main": "vaadin-select.js",
6
6
  "module": "vaadin-select.js",
@@ -28,26 +28,26 @@
28
28
  "@polymer/iron-media-query": "^3.0.0",
29
29
  "@polymer/iron-resizable-behavior": "^3.0.0",
30
30
  "@polymer/polymer": "^3.2.0",
31
- "@vaadin/vaadin-control-state-mixin": "^21.0.1",
32
- "@vaadin/vaadin-element-mixin": "^21.0.1",
33
- "@vaadin/vaadin-item": "^21.0.1",
34
- "@vaadin/vaadin-list-box": "^21.0.1",
35
- "@vaadin/vaadin-list-mixin": "^21.0.1",
36
- "@vaadin/vaadin-lumo-styles": "^21.0.1",
37
- "@vaadin/vaadin-material-styles": "^21.0.1",
38
- "@vaadin/vaadin-overlay": "^21.0.1",
39
- "@vaadin/vaadin-text-field": "^21.0.1",
40
- "@vaadin/vaadin-themable-mixin": "^21.0.1"
31
+ "@vaadin/vaadin-control-state-mixin": "^21.0.5",
32
+ "@vaadin/vaadin-element-mixin": "^21.0.5",
33
+ "@vaadin/vaadin-item": "^21.0.5",
34
+ "@vaadin/vaadin-list-box": "^21.0.5",
35
+ "@vaadin/vaadin-list-mixin": "^21.0.5",
36
+ "@vaadin/vaadin-lumo-styles": "^21.0.5",
37
+ "@vaadin/vaadin-material-styles": "^21.0.5",
38
+ "@vaadin/vaadin-overlay": "^21.0.5",
39
+ "@vaadin/vaadin-text-field": "^21.0.5",
40
+ "@vaadin/vaadin-themable-mixin": "^21.0.5"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@esm-bundle/chai": "^4.1.5",
44
44
  "@vaadin/testing-helpers": "^0.2.1",
45
- "@vaadin/vaadin-template-renderer": "^21.0.1",
46
- "lit": "^2.0.0-rc.1",
45
+ "@vaadin/vaadin-template-renderer": "^21.0.5",
46
+ "lit": "^2.0.0",
47
47
  "sinon": "^9.2.0"
48
48
  },
49
49
  "publishConfig": {
50
50
  "access": "public"
51
51
  },
52
- "gitHead": "91e44dcfa63dc5e30e1e8d18be499b3e1e17b1c4"
52
+ "gitHead": "c79135f420e560fa566afc1377db9585757bc4c3"
53
53
  }
@@ -173,7 +173,7 @@ class SelectElement extends ElementMixin(
173
173
  }
174
174
 
175
175
  static get version() {
176
- return '21.0.1';
176
+ return '21.0.5';
177
177
  }
178
178
 
179
179
  static get properties() {
@@ -378,6 +378,9 @@ class SelectElement extends ElementMixin(
378
378
  requestContentUpdate() {
379
379
  this._overlayElement.requestContentUpdate();
380
380
 
381
+ // Ensure menu element is set
382
+ this._assignMenuElement();
383
+
381
384
  if (this._menuElement && this._menuElement.items) {
382
385
  this._updateSelectedItem(this.value, this._menuElement.items);
383
386
  }
@@ -411,18 +414,17 @@ class SelectElement extends ElementMixin(
411
414
 
412
415
  /** @private */
413
416
  _assignMenuElement() {
414
- this._menuElement = Array.from(this._overlayElement.content.children).find(
415
- (element) => element.localName !== 'style'
416
- );
417
+ const menuElement = this.__getMenuElement();
417
418
 
418
- if (this._menuElement) {
419
- this._menuElement.addEventListener('items-changed', () => {
420
- this._items = this._menuElement.items;
419
+ if (menuElement && menuElement !== this.__lastMenuElement) {
420
+ this._menuElement = menuElement;
421
+ menuElement.addEventListener('items-changed', () => {
422
+ this._items = menuElement.items;
421
423
  this._items.forEach((item) => item.setAttribute('role', 'option'));
422
424
  });
423
- this._menuElement.addEventListener('selected-changed', () => this._updateValueSlot());
424
- this._menuElement.addEventListener('keydown', (e) => this._onKeyDownInside(e));
425
- this._menuElement.addEventListener(
425
+ menuElement.addEventListener('selected-changed', () => this._updateValueSlot());
426
+ menuElement.addEventListener('keydown', (e) => this._onKeyDownInside(e));
427
+ menuElement.addEventListener(
426
428
  'click',
427
429
  () => {
428
430
  this.__userInteraction = true;
@@ -431,10 +433,19 @@ class SelectElement extends ElementMixin(
431
433
  true
432
434
  );
433
435
 
434
- this._menuElement.setAttribute('role', 'listbox');
436
+ menuElement.setAttribute('role', 'listbox');
437
+
438
+ // Store the menu element reference
439
+ this.__lastMenuElement = menuElement;
435
440
  }
436
441
  }
437
442
 
443
+ /** @private */
444
+ __getMenuElement() {
445
+ const content = this._overlayElement && this._overlayElement.content;
446
+ return content ? Array.from(content.children).find((el) => el.localName !== 'style') : null;
447
+ }
448
+
438
449
  /**
439
450
  * @return {!HTMLElement}
440
451
  * @protected