@vaadin/a11y-base 24.2.0-dev.f254716fe → 24.2.0-rc1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/a11y-base",
3
- "version": "24.2.0-dev.f254716fe",
3
+ "version": "24.2.0-rc1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -32,13 +32,13 @@
32
32
  "dependencies": {
33
33
  "@open-wc/dedupe-mixin": "^1.3.0",
34
34
  "@polymer/polymer": "^3.0.0",
35
- "@vaadin/component-base": "24.2.0-dev.f254716fe",
35
+ "@vaadin/component-base": "24.2.0-rc1",
36
36
  "lit": "^2.0.0"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@esm-bundle/chai": "^4.3.4",
40
- "@vaadin/testing-helpers": "^0.4.3",
40
+ "@vaadin/testing-helpers": "^0.5.0",
41
41
  "sinon": "^13.0.2"
42
42
  },
43
- "gitHead": "da54950b9f8c14c6451ede0d426e16a489c7fb9b"
43
+ "gitHead": "012bef350bbf29865748f4c78338dd17c6f61a74"
44
44
  }
@@ -23,12 +23,6 @@ let markerMap = {};
23
23
  /** @type {number} */
24
24
  let lockCount = 0;
25
25
 
26
- /**
27
- * @param {Element | Shadow} node
28
- * @return {Element | null}
29
- */
30
- const unwrapHost = (node) => (node ? node.host || unwrapHost(node.parentNode) : null);
31
-
32
26
  /**
33
27
  * @param {?Node} node
34
28
  * @return {boolean}
@@ -60,13 +54,12 @@ const correctTargets = (parent, targets) => {
60
54
  return null;
61
55
  }
62
56
 
63
- if (parent.contains(target)) {
64
- return target;
65
- }
66
-
67
- const correctedTarget = unwrapHost(target);
68
- if (correctedTarget && parent.contains(correctedTarget)) {
69
- return correctedTarget;
57
+ let node = target;
58
+ while (node && node !== parent) {
59
+ if (parent.contains(node)) {
60
+ return target;
61
+ }
62
+ node = node.getRootNode().host;
70
63
  }
71
64
 
72
65
  logError(target, 'is not contained inside', parent);
@@ -110,7 +103,13 @@ const applyAttributeToOthers = (originalTarget, parentNode, markerName, controlA
110
103
  }
111
104
 
112
105
  elementsToKeep.add(el);
113
- keep(el.parentNode);
106
+
107
+ const slot = el.assignedSlot;
108
+ if (slot) {
109
+ keep(slot);
110
+ }
111
+
112
+ keep(el.parentNode || el.host);
114
113
  };
115
114
 
116
115
  targets.forEach(keep);
@@ -123,7 +122,9 @@ const applyAttributeToOthers = (originalTarget, parentNode, markerName, controlA
123
122
  return;
124
123
  }
125
124
 
126
- [...parent.children].forEach((node) => {
125
+ const root = parent.shadowRoot;
126
+ const children = root ? [...parent.children, ...root.children] : [...parent.children];
127
+ children.forEach((node) => {
127
128
  // Skip elements that don't need to be hidden
128
129
  if (['template', 'script', 'style'].includes(node.localName)) {
129
130
  return;
@@ -82,12 +82,9 @@ export const DelegateFocusMixin = dedupingMixin(
82
82
  * @override
83
83
  */
84
84
  focus() {
85
- if (!this.focusElement || this.disabled) {
86
- return;
85
+ if (this.focusElement && !this.disabled) {
86
+ this.focusElement.focus();
87
87
  }
88
-
89
- this.focusElement.focus();
90
- this._setFocused(true);
91
88
  }
92
89
 
93
90
  /**
@@ -95,11 +92,9 @@ export const DelegateFocusMixin = dedupingMixin(
95
92
  * @override
96
93
  */
97
94
  blur() {
98
- if (!this.focusElement) {
99
- return;
95
+ if (this.focusElement) {
96
+ this.focusElement.blur();
100
97
  }
101
- this.focusElement.blur();
102
- this._setFocused(false);
103
98
  }
104
99
 
105
100
  /**
package/src/list-mixin.js CHANGED
@@ -3,10 +3,11 @@
3
3
  * Copyright (c) 2017 - 2023 Vaadin Ltd.
4
4
  * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5
5
  */
6
- import { FlattenedNodesObserver } from '@polymer/polymer/lib/utils/flattened-nodes-observer.js';
7
6
  import { timeOut } from '@vaadin/component-base/src/async.js';
8
7
  import { Debouncer } from '@vaadin/component-base/src/debounce.js';
9
8
  import { getNormalizedScrollLeft, setNormalizedScrollLeft } from '@vaadin/component-base/src/dir-utils.js';
9
+ import { getFlattenedElements } from '@vaadin/component-base/src/dom-utils.js';
10
+ import { SlotObserver } from '@vaadin/component-base/src/slot-observer.js';
10
11
  import { KeyboardDirectionMixin } from './keyboard-direction-mixin.js';
11
12
 
12
13
  /**
@@ -134,8 +135,9 @@ export const ListMixin = (superClass) =>
134
135
 
135
136
  this.addEventListener('click', (e) => this._onClick(e));
136
137
 
137
- this._observer = new FlattenedNodesObserver(this, () => {
138
- this._setItems(this._filterItems(FlattenedNodesObserver.getFlattenedNodes(this)));
138
+ const slot = this.shadowRoot.querySelector('slot:not([name])');
139
+ this._observer = new SlotObserver(slot, () => {
140
+ this._setItems(this._filterItems(getFlattenedElements(this)));
139
141
  });
140
142
  }
141
143