@vaadin/vaadin-overlay 23.0.10 → 23.0.13
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/vaadin-overlay",
|
|
3
|
-
"version": "23.0.
|
|
3
|
+
"version": "23.0.13",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -35,20 +35,20 @@
|
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@polymer/polymer": "^3.0.0",
|
|
38
|
-
"@vaadin/component-base": "^23.0.
|
|
39
|
-
"@vaadin/vaadin-lumo-styles": "^23.0.
|
|
40
|
-
"@vaadin/vaadin-material-styles": "^23.0.
|
|
41
|
-
"@vaadin/vaadin-themable-mixin": "^23.0.
|
|
38
|
+
"@vaadin/component-base": "^23.0.13",
|
|
39
|
+
"@vaadin/vaadin-lumo-styles": "^23.0.13",
|
|
40
|
+
"@vaadin/vaadin-material-styles": "^23.0.13",
|
|
41
|
+
"@vaadin/vaadin-themable-mixin": "^23.0.13"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@esm-bundle/chai": "^4.3.4",
|
|
45
45
|
"@polymer/iron-overlay-behavior": "^3.0.0",
|
|
46
|
-
"@vaadin/button": "^23.0.
|
|
47
|
-
"@vaadin/radio-group": "^23.0.
|
|
46
|
+
"@vaadin/button": "^23.0.13",
|
|
47
|
+
"@vaadin/radio-group": "^23.0.13",
|
|
48
48
|
"@vaadin/testing-helpers": "^0.3.2",
|
|
49
|
-
"@vaadin/text-field": "^23.0.
|
|
49
|
+
"@vaadin/text-field": "^23.0.13",
|
|
50
50
|
"lit": "^2.0.0",
|
|
51
51
|
"sinon": "^9.2.1"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "e915550ec6400b5eae6c779fe0afeb1931399312"
|
|
54
54
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2017 - 2022 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
|
+
import { getAncestorRootNodes } from '@vaadin/component-base/src/dom-utils.js';
|
|
6
7
|
|
|
7
8
|
const PROP_NAMES_VERTICAL = {
|
|
8
9
|
start: 'top',
|
|
@@ -79,26 +80,61 @@ export const PositionMixin = (superClass) =>
|
|
|
79
80
|
|
|
80
81
|
static get observers() {
|
|
81
82
|
return [
|
|
82
|
-
'__positionSettingsChanged(
|
|
83
|
-
'__overlayOpenedChanged(opened)',
|
|
83
|
+
'__positionSettingsChanged(horizontalAlign, verticalAlign, noHorizontalOverlap, noVerticalOverlap)',
|
|
84
|
+
'__overlayOpenedChanged(opened, positionTarget)',
|
|
84
85
|
];
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
constructor() {
|
|
88
89
|
super();
|
|
89
90
|
|
|
90
|
-
this.
|
|
91
|
+
this._updatePosition = this._updatePosition.bind(this);
|
|
91
92
|
}
|
|
92
93
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
/** @protected */
|
|
95
|
+
connectedCallback() {
|
|
96
|
+
super.connectedCallback();
|
|
97
|
+
|
|
98
|
+
if (this.opened) {
|
|
99
|
+
this.__addUpdatePositionEventListeners();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** @protected */
|
|
104
|
+
disconnectedCallback() {
|
|
105
|
+
super.disconnectedCallback();
|
|
106
|
+
this.__removeUpdatePositionEventListeners();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** @private */
|
|
110
|
+
__addUpdatePositionEventListeners() {
|
|
111
|
+
window.addEventListener('resize', this._updatePosition);
|
|
112
|
+
|
|
113
|
+
this.__positionTargetAncestorRootNodes = getAncestorRootNodes(this.positionTarget);
|
|
114
|
+
this.__positionTargetAncestorRootNodes.forEach((node) => {
|
|
115
|
+
node.addEventListener('scroll', this._updatePosition, true);
|
|
101
116
|
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** @private */
|
|
120
|
+
__removeUpdatePositionEventListeners() {
|
|
121
|
+
window.removeEventListener('resize', this._updatePosition);
|
|
122
|
+
|
|
123
|
+
if (this.__positionTargetAncestorRootNodes) {
|
|
124
|
+
this.__positionTargetAncestorRootNodes.forEach((node) => {
|
|
125
|
+
node.removeEventListener('scroll', this._updatePosition, true);
|
|
126
|
+
});
|
|
127
|
+
this.__positionTargetAncestorRootNodes = null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** @private */
|
|
132
|
+
__overlayOpenedChanged(opened, positionTarget) {
|
|
133
|
+
this.__removeUpdatePositionEventListeners();
|
|
134
|
+
|
|
135
|
+
if (opened && positionTarget) {
|
|
136
|
+
this.__addUpdatePositionEventListeners();
|
|
137
|
+
}
|
|
102
138
|
|
|
103
139
|
if (opened) {
|
|
104
140
|
const computedStyle = getComputedStyle(this);
|
package/src/vaadin-overlay.js
CHANGED
|
@@ -515,6 +515,11 @@ class OverlayElement extends ThemableMixin(DirMixin(ControllerMixin(PolymerEleme
|
|
|
515
515
|
return;
|
|
516
516
|
}
|
|
517
517
|
|
|
518
|
+
// Only close modeless overlay on Esc press when it contains focus
|
|
519
|
+
if (this.modeless && !event.composedPath().includes(this.$.overlay)) {
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
|
|
518
523
|
if (event.key === 'Escape') {
|
|
519
524
|
const evt = new CustomEvent('vaadin-overlay-escape-press', {
|
|
520
525
|
bubbles: true,
|
|
@@ -559,14 +564,20 @@ class OverlayElement extends ThemableMixin(DirMixin(ControllerMixin(PolymerEleme
|
|
|
559
564
|
this.dispatchEvent(evt);
|
|
560
565
|
});
|
|
561
566
|
|
|
567
|
+
document.addEventListener('keydown', this._boundKeydownListener);
|
|
568
|
+
|
|
562
569
|
if (!this.modeless) {
|
|
563
570
|
this._addGlobalListeners();
|
|
564
571
|
}
|
|
565
572
|
} else if (wasOpened) {
|
|
566
|
-
this.
|
|
573
|
+
if (this.focusTrap) {
|
|
574
|
+
this.__focusTrapController.releaseFocus();
|
|
575
|
+
}
|
|
567
576
|
|
|
568
577
|
this._animatedClosing();
|
|
569
578
|
|
|
579
|
+
document.removeEventListener('keydown', this._boundKeydownListener);
|
|
580
|
+
|
|
570
581
|
if (!this.modeless) {
|
|
571
582
|
this._removeGlobalListeners();
|
|
572
583
|
}
|
|
@@ -753,7 +764,6 @@ class OverlayElement extends ThemableMixin(DirMixin(ControllerMixin(PolymerEleme
|
|
|
753
764
|
// Firefox leaks click to document on contextmenu even if prevented
|
|
754
765
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=990614
|
|
755
766
|
document.documentElement.addEventListener('click', this._boundOutsideClickListener, true);
|
|
756
|
-
document.addEventListener('keydown', this._boundKeydownListener);
|
|
757
767
|
}
|
|
758
768
|
|
|
759
769
|
/** @protected */
|
|
@@ -778,7 +788,6 @@ class OverlayElement extends ThemableMixin(DirMixin(ControllerMixin(PolymerEleme
|
|
|
778
788
|
document.removeEventListener('mousedown', this._boundMouseDownListener);
|
|
779
789
|
document.removeEventListener('mouseup', this._boundMouseUpListener);
|
|
780
790
|
document.documentElement.removeEventListener('click', this._boundOutsideClickListener, true);
|
|
781
|
-
document.removeEventListener('keydown', this._boundKeydownListener);
|
|
782
791
|
}
|
|
783
792
|
|
|
784
793
|
/** @protected */
|