@vaadin/popover 24.5.9 → 24.5.11
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 +11 -11
- package/src/vaadin-popover.d.ts +2 -1
- package/src/vaadin-popover.js +38 -40
- package/web-types.json +3 -3
- package/web-types.lit.json +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/popover",
|
|
3
|
-
"version": "24.5.
|
|
3
|
+
"version": "24.5.11",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -37,18 +37,18 @@
|
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
40
|
-
"@vaadin/a11y-base": "~24.5.
|
|
41
|
-
"@vaadin/component-base": "~24.5.
|
|
42
|
-
"@vaadin/lit-renderer": "~24.5.
|
|
43
|
-
"@vaadin/overlay": "~24.5.
|
|
44
|
-
"@vaadin/vaadin-lumo-styles": "~24.5.
|
|
45
|
-
"@vaadin/vaadin-material-styles": "~24.5.
|
|
46
|
-
"@vaadin/vaadin-themable-mixin": "~24.5.
|
|
40
|
+
"@vaadin/a11y-base": "~24.5.11",
|
|
41
|
+
"@vaadin/component-base": "~24.5.11",
|
|
42
|
+
"@vaadin/lit-renderer": "~24.5.11",
|
|
43
|
+
"@vaadin/overlay": "~24.5.11",
|
|
44
|
+
"@vaadin/vaadin-lumo-styles": "~24.5.11",
|
|
45
|
+
"@vaadin/vaadin-material-styles": "~24.5.11",
|
|
46
|
+
"@vaadin/vaadin-themable-mixin": "~24.5.11",
|
|
47
47
|
"lit": "^3.0.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@vaadin/chai-plugins": "~24.5.
|
|
51
|
-
"@vaadin/test-runner-commands": "~24.5.
|
|
50
|
+
"@vaadin/chai-plugins": "~24.5.11",
|
|
51
|
+
"@vaadin/test-runner-commands": "~24.5.11",
|
|
52
52
|
"@vaadin/testing-helpers": "^1.1.0",
|
|
53
53
|
"sinon": "^18.0.0"
|
|
54
54
|
},
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"web-types.json",
|
|
57
57
|
"web-types.lit.json"
|
|
58
58
|
],
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "545f510805f462682bd0912ec72687a86a6f268a"
|
|
60
60
|
}
|
package/src/vaadin-popover.d.ts
CHANGED
|
@@ -221,7 +221,8 @@ declare class Popover extends PopoverPositionMixin(
|
|
|
221
221
|
* - outside click (unless `noCloseOnOutsideClick` property is true)
|
|
222
222
|
*
|
|
223
223
|
* When setting `trigger` property to `null`, `undefined` or empty array, the popover
|
|
224
|
-
* can be only opened
|
|
224
|
+
* can be only opened programmatically by changing `opened` property. Note, closing
|
|
225
|
+
* on Escape press or outside click is still allowed unless explicitly disabled.
|
|
225
226
|
*/
|
|
226
227
|
trigger: PopoverTrigger[] | null | undefined;
|
|
227
228
|
|
package/src/vaadin-popover.js
CHANGED
|
@@ -372,7 +372,8 @@ class Popover extends PopoverPositionMixin(
|
|
|
372
372
|
* - outside click (unless `noCloseOnOutsideClick` property is true)
|
|
373
373
|
*
|
|
374
374
|
* When setting `trigger` property to `null`, `undefined` or empty array, the popover
|
|
375
|
-
* can be only opened
|
|
375
|
+
* can be only opened programmatically by changing `opened` property. Note, closing
|
|
376
|
+
* on Escape press or outside click is still allowed unless explicitly disabled.
|
|
376
377
|
*/
|
|
377
378
|
trigger: {
|
|
378
379
|
type: Array,
|
|
@@ -408,8 +409,7 @@ class Popover extends PopoverPositionMixin(
|
|
|
408
409
|
return [
|
|
409
410
|
'__updateContentHeight(contentHeight, _overlayElement)',
|
|
410
411
|
'__updateContentWidth(contentWidth, _overlayElement)',
|
|
411
|
-
'
|
|
412
|
-
'__overlayRoleOrTargetChanged(overlayRole, target)',
|
|
412
|
+
'__updateAriaAttributes(opened, overlayRole, target)',
|
|
413
413
|
];
|
|
414
414
|
}
|
|
415
415
|
|
|
@@ -577,27 +577,27 @@ class Popover extends PopoverPositionMixin(
|
|
|
577
577
|
}
|
|
578
578
|
|
|
579
579
|
/** @private */
|
|
580
|
-
|
|
581
|
-
if (target) {
|
|
582
|
-
target.setAttribute('aria-expanded', opened ? 'true' : 'false');
|
|
583
|
-
|
|
584
|
-
if (opened) {
|
|
585
|
-
target.setAttribute('aria-controls', this.__overlayId);
|
|
586
|
-
} else {
|
|
587
|
-
target.removeAttribute('aria-controls');
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
/** @private */
|
|
593
|
-
__overlayRoleOrTargetChanged(overlayRole, target) {
|
|
580
|
+
__updateAriaAttributes(opened, overlayRole, target) {
|
|
594
581
|
if (this.__oldTarget) {
|
|
595
|
-
this.__oldTarget.
|
|
582
|
+
const oldEffectiveTarget = this.__oldTarget.ariaTarget || this.__oldTarget;
|
|
583
|
+
oldEffectiveTarget.removeAttribute('aria-haspopup');
|
|
584
|
+
oldEffectiveTarget.removeAttribute('aria-expanded');
|
|
585
|
+
oldEffectiveTarget.removeAttribute('aria-controls');
|
|
596
586
|
}
|
|
597
587
|
|
|
598
588
|
if (target) {
|
|
589
|
+
const effectiveTarget = target.ariaTarget || target;
|
|
590
|
+
|
|
599
591
|
const isDialog = overlayRole === 'dialog' || overlayRole === 'alertdialog';
|
|
600
|
-
|
|
592
|
+
effectiveTarget.setAttribute('aria-haspopup', isDialog ? 'dialog' : 'true');
|
|
593
|
+
|
|
594
|
+
effectiveTarget.setAttribute('aria-expanded', opened ? 'true' : 'false');
|
|
595
|
+
|
|
596
|
+
if (opened) {
|
|
597
|
+
effectiveTarget.setAttribute('aria-controls', this.__overlayId);
|
|
598
|
+
} else {
|
|
599
|
+
effectiveTarget.removeAttribute('aria-controls');
|
|
600
|
+
}
|
|
601
601
|
|
|
602
602
|
this.__oldTarget = target;
|
|
603
603
|
}
|
|
@@ -611,7 +611,6 @@ class Popover extends PopoverPositionMixin(
|
|
|
611
611
|
__onGlobalClick(event) {
|
|
612
612
|
if (
|
|
613
613
|
this.opened &&
|
|
614
|
-
!this.__isManual &&
|
|
615
614
|
!this.modal &&
|
|
616
615
|
!event.composedPath().some((el) => el === this._overlayElement || el === this.target) &&
|
|
617
616
|
!this.noCloseOnOutsideClick &&
|
|
@@ -646,13 +645,7 @@ class Popover extends PopoverPositionMixin(
|
|
|
646
645
|
return;
|
|
647
646
|
}
|
|
648
647
|
|
|
649
|
-
if (
|
|
650
|
-
event.key === 'Escape' &&
|
|
651
|
-
!this.noCloseOnEsc &&
|
|
652
|
-
this.opened &&
|
|
653
|
-
!this.__isManual &&
|
|
654
|
-
isLastOverlay(this._overlayElement)
|
|
655
|
-
) {
|
|
648
|
+
if (event.key === 'Escape' && !this.noCloseOnEsc && this.opened && isLastOverlay(this._overlayElement)) {
|
|
656
649
|
// Prevent closing parent overlay (e.g. dialog)
|
|
657
650
|
event.stopPropagation();
|
|
658
651
|
this._openedStateController.close(true);
|
|
@@ -673,7 +666,7 @@ class Popover extends PopoverPositionMixin(
|
|
|
673
666
|
const overlayPart = this._overlayElement.$.overlay;
|
|
674
667
|
|
|
675
668
|
// Move focus to the popover content on target element Tab
|
|
676
|
-
if (this.target && isElementFocused(this.
|
|
669
|
+
if (this.target && isElementFocused(this.__getTargetFocusable())) {
|
|
677
670
|
event.preventDefault();
|
|
678
671
|
overlayPart.focus();
|
|
679
672
|
return;
|
|
@@ -682,7 +675,7 @@ class Popover extends PopoverPositionMixin(
|
|
|
682
675
|
// Move focus to the next element after target on content Tab
|
|
683
676
|
const lastFocusable = this.__getLastFocusable(overlayPart);
|
|
684
677
|
if (lastFocusable && isElementFocused(lastFocusable)) {
|
|
685
|
-
const focusable = this.__getNextBodyFocusable(this.
|
|
678
|
+
const focusable = this.__getNextBodyFocusable(this.__getTargetFocusable());
|
|
686
679
|
if (focusable && focusable !== overlayPart) {
|
|
687
680
|
event.preventDefault();
|
|
688
681
|
focusable.focus();
|
|
@@ -705,7 +698,7 @@ class Popover extends PopoverPositionMixin(
|
|
|
705
698
|
const overlayPart = this._overlayElement.$.overlay;
|
|
706
699
|
|
|
707
700
|
// Prevent restoring focus after target blur on Shift + Tab
|
|
708
|
-
if (this.target && isElementFocused(this.
|
|
701
|
+
if (this.target && isElementFocused(this.__getTargetFocusable()) && this.__shouldRestoreFocus) {
|
|
709
702
|
this.__shouldRestoreFocus = false;
|
|
710
703
|
return;
|
|
711
704
|
}
|
|
@@ -713,12 +706,12 @@ class Popover extends PopoverPositionMixin(
|
|
|
713
706
|
// Move focus back to the target on overlay content Shift + Tab
|
|
714
707
|
if (this.target && isElementFocused(overlayPart)) {
|
|
715
708
|
event.preventDefault();
|
|
716
|
-
this.
|
|
709
|
+
this.__getTargetFocusable().focus();
|
|
717
710
|
return;
|
|
718
711
|
}
|
|
719
712
|
|
|
720
713
|
// Move focus back to the popover on next element Shift + Tab
|
|
721
|
-
const nextFocusable = this.__getNextBodyFocusable(this.
|
|
714
|
+
const nextFocusable = this.__getNextBodyFocusable(this.__getTargetFocusable());
|
|
722
715
|
if (nextFocusable && isElementFocused(nextFocusable)) {
|
|
723
716
|
const lastFocusable = this.__getLastFocusable(overlayPart);
|
|
724
717
|
if (lastFocusable) {
|
|
@@ -741,6 +734,16 @@ class Popover extends PopoverPositionMixin(
|
|
|
741
734
|
return focusables.pop();
|
|
742
735
|
}
|
|
743
736
|
|
|
737
|
+
/** @private */
|
|
738
|
+
__getTargetFocusable() {
|
|
739
|
+
if (!this.target) {
|
|
740
|
+
return null;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
// If target has `focusElement`, check if that one is focused.
|
|
744
|
+
return this.target.focusElement || this.target;
|
|
745
|
+
}
|
|
746
|
+
|
|
744
747
|
/** @private */
|
|
745
748
|
__onTargetFocusIn() {
|
|
746
749
|
this.__focusInside = true;
|
|
@@ -766,7 +769,7 @@ class Popover extends PopoverPositionMixin(
|
|
|
766
769
|
// Do not close the popover on overlay focusout if it's not the last one.
|
|
767
770
|
// This covers the case when focus moves to the nested popover opened
|
|
768
771
|
// without focusing parent popover overlay (e.g. using hover trigger).
|
|
769
|
-
if (!isLastOverlay(this._overlayElement)) {
|
|
772
|
+
if (this._overlayElement.opened && !isLastOverlay(this._overlayElement)) {
|
|
770
773
|
return;
|
|
771
774
|
}
|
|
772
775
|
|
|
@@ -939,7 +942,7 @@ class Popover extends PopoverPositionMixin(
|
|
|
939
942
|
* @private
|
|
940
943
|
*/
|
|
941
944
|
__onEscapePress(e) {
|
|
942
|
-
if (this.noCloseOnEsc
|
|
945
|
+
if (this.noCloseOnEsc) {
|
|
943
946
|
e.preventDefault();
|
|
944
947
|
}
|
|
945
948
|
}
|
|
@@ -949,7 +952,7 @@ class Popover extends PopoverPositionMixin(
|
|
|
949
952
|
* @private
|
|
950
953
|
*/
|
|
951
954
|
__onOutsideClick(e) {
|
|
952
|
-
if (this.noCloseOnOutsideClick
|
|
955
|
+
if (this.noCloseOnOutsideClick) {
|
|
953
956
|
e.preventDefault();
|
|
954
957
|
}
|
|
955
958
|
}
|
|
@@ -959,11 +962,6 @@ class Popover extends PopoverPositionMixin(
|
|
|
959
962
|
return Array.isArray(this.trigger) && this.trigger.includes(trigger);
|
|
960
963
|
}
|
|
961
964
|
|
|
962
|
-
/** @private */
|
|
963
|
-
get __isManual() {
|
|
964
|
-
return this.trigger == null || (Array.isArray(this.trigger) && this.trigger.length === 0);
|
|
965
|
-
}
|
|
966
|
-
|
|
967
965
|
/** @private */
|
|
968
966
|
__updateDimension(overlay, dimension, value) {
|
|
969
967
|
const prop = `--_vaadin-popover-content-${dimension}`;
|
package/web-types.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/web-types",
|
|
3
3
|
"name": "@vaadin/popover",
|
|
4
|
-
"version": "24.5.
|
|
4
|
+
"version": "24.5.11",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
8
8
|
"elements": [
|
|
9
9
|
{
|
|
10
10
|
"name": "vaadin-popover",
|
|
11
|
-
"description": "`<vaadin-popover>` is a Web Component for creating overlays\nthat are positioned next to specified DOM element (target).\n\nUnlike `<vaadin-tooltip>`, the popover supports rich content\nthat can be provided by using `renderer` function.\n\n### Styling\n\n`<vaadin-popover>` uses `<vaadin-popover-overlay>` internal\nthemable component as the actual visible overlay.\n\nSee [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.5.
|
|
11
|
+
"description": "`<vaadin-popover>` is a Web Component for creating overlays\nthat are positioned next to specified DOM element (target).\n\nUnlike `<vaadin-tooltip>`, the popover supports rich content\nthat can be provided by using `renderer` function.\n\n### Styling\n\n`<vaadin-popover>` uses `<vaadin-popover-overlay>` internal\nthemable component as the actual visible overlay.\n\nSee [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.5.11/#/elements/vaadin-overlay) documentation\nfor `<vaadin-popover-overlay>` parts.\n\nIn addition to `<vaadin-overlay>` parts, the following parts are available for styling:\n\nPart name | Description\n-----------------|-------------------------------------------\n`arrow` | Optional arrow pointing to the target when using `theme=\"arrow\"`\n\nThe following state attributes are available for styling:\n\nAttribute | Description\n-----------------|----------------------------------------\n`position` | Reflects the `position` property value.\n\nNote: the `theme` attribute value set on `<vaadin-popover>` is\npropagated to the internal `<vaadin-popover-overlay>` component.\n\n### Custom CSS Properties\n\nThe following custom CSS properties are available on the `<vaadin-popover>` element:\n\nCustom CSS property | Description\n---------------------------------|-------------\n`--vaadin-popover-offset-top` | Used as an offset when the popover is aligned vertically below the target\n`--vaadin-popover-offset-bottom` | Used as an offset when the popover is aligned vertically above the target\n`--vaadin-popover-offset-start` | Used as an offset when the popover is aligned horizontally after the target\n`--vaadin-popover-offset-end` | Used as an offset when the popover is aligned horizontally before the target\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
12
12
|
"attributes": [
|
|
13
13
|
{
|
|
14
14
|
"name": "overlay-class",
|
|
@@ -411,7 +411,7 @@
|
|
|
411
411
|
},
|
|
412
412
|
{
|
|
413
413
|
"name": "trigger",
|
|
414
|
-
"description": "Popover trigger mode, used to configure how the overlay is opened or closed.\nCould be set to multiple by providing an array, e.g. `trigger = ['hover', 'focus']`.\n\nSupported values:\n- `click` (default) - opens and closes on target click.\n- `hover` - opens on target mouseenter, closes on target mouseleave. Moving mouse\nto the popover overlay content keeps the overlay opened.\n- `focus` - opens on target focus, closes on target blur. Moving focus to the\npopover overlay content keeps the overlay opened.\n\nIn addition to the behavior specified by `trigger`, the popover can be closed by:\n- pressing Escape key (unless `noCloseOnEsc` property is true)\n- outside click (unless `noCloseOnOutsideClick` property is true)\n\nWhen setting `trigger` property to `null`, `undefined` or empty array, the popover\ncan be only opened
|
|
414
|
+
"description": "Popover trigger mode, used to configure how the overlay is opened or closed.\nCould be set to multiple by providing an array, e.g. `trigger = ['hover', 'focus']`.\n\nSupported values:\n- `click` (default) - opens and closes on target click.\n- `hover` - opens on target mouseenter, closes on target mouseleave. Moving mouse\nto the popover overlay content keeps the overlay opened.\n- `focus` - opens on target focus, closes on target blur. Moving focus to the\npopover overlay content keeps the overlay opened.\n\nIn addition to the behavior specified by `trigger`, the popover can be closed by:\n- pressing Escape key (unless `noCloseOnEsc` property is true)\n- outside click (unless `noCloseOnOutsideClick` property is true)\n\nWhen setting `trigger` property to `null`, `undefined` or empty array, the popover\ncan be only opened programmatically by changing `opened` property. Note, closing\non Escape press or outside click is still allowed unless explicitly disabled.",
|
|
415
415
|
"value": {
|
|
416
416
|
"type": [
|
|
417
417
|
"Array",
|
package/web-types.lit.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/web-types",
|
|
3
3
|
"name": "@vaadin/popover",
|
|
4
|
-
"version": "24.5.
|
|
4
|
+
"version": "24.5.11",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"framework": "lit",
|
|
7
7
|
"framework-config": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"elements": [
|
|
17
17
|
{
|
|
18
18
|
"name": "vaadin-popover",
|
|
19
|
-
"description": "`<vaadin-popover>` is a Web Component for creating overlays\nthat are positioned next to specified DOM element (target).\n\nUnlike `<vaadin-tooltip>`, the popover supports rich content\nthat can be provided by using `renderer` function.\n\n### Styling\n\n`<vaadin-popover>` uses `<vaadin-popover-overlay>` internal\nthemable component as the actual visible overlay.\n\nSee [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.5.
|
|
19
|
+
"description": "`<vaadin-popover>` is a Web Component for creating overlays\nthat are positioned next to specified DOM element (target).\n\nUnlike `<vaadin-tooltip>`, the popover supports rich content\nthat can be provided by using `renderer` function.\n\n### Styling\n\n`<vaadin-popover>` uses `<vaadin-popover-overlay>` internal\nthemable component as the actual visible overlay.\n\nSee [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.5.11/#/elements/vaadin-overlay) documentation\nfor `<vaadin-popover-overlay>` parts.\n\nIn addition to `<vaadin-overlay>` parts, the following parts are available for styling:\n\nPart name | Description\n-----------------|-------------------------------------------\n`arrow` | Optional arrow pointing to the target when using `theme=\"arrow\"`\n\nThe following state attributes are available for styling:\n\nAttribute | Description\n-----------------|----------------------------------------\n`position` | Reflects the `position` property value.\n\nNote: the `theme` attribute value set on `<vaadin-popover>` is\npropagated to the internal `<vaadin-popover-overlay>` component.\n\n### Custom CSS Properties\n\nThe following custom CSS properties are available on the `<vaadin-popover>` element:\n\nCustom CSS property | Description\n---------------------------------|-------------\n`--vaadin-popover-offset-top` | Used as an offset when the popover is aligned vertically below the target\n`--vaadin-popover-offset-bottom` | Used as an offset when the popover is aligned vertically above the target\n`--vaadin-popover-offset-start` | Used as an offset when the popover is aligned horizontally after the target\n`--vaadin-popover-offset-end` | Used as an offset when the popover is aligned horizontally before the target\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
20
20
|
"extension": true,
|
|
21
21
|
"attributes": [
|
|
22
22
|
{
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
},
|
|
155
155
|
{
|
|
156
156
|
"name": ".trigger",
|
|
157
|
-
"description": "Popover trigger mode, used to configure how the overlay is opened or closed.\nCould be set to multiple by providing an array, e.g. `trigger = ['hover', 'focus']`.\n\nSupported values:\n- `click` (default) - opens and closes on target click.\n- `hover` - opens on target mouseenter, closes on target mouseleave. Moving mouse\nto the popover overlay content keeps the overlay opened.\n- `focus` - opens on target focus, closes on target blur. Moving focus to the\npopover overlay content keeps the overlay opened.\n\nIn addition to the behavior specified by `trigger`, the popover can be closed by:\n- pressing Escape key (unless `noCloseOnEsc` property is true)\n- outside click (unless `noCloseOnOutsideClick` property is true)\n\nWhen setting `trigger` property to `null`, `undefined` or empty array, the popover\ncan be only opened
|
|
157
|
+
"description": "Popover trigger mode, used to configure how the overlay is opened or closed.\nCould be set to multiple by providing an array, e.g. `trigger = ['hover', 'focus']`.\n\nSupported values:\n- `click` (default) - opens and closes on target click.\n- `hover` - opens on target mouseenter, closes on target mouseleave. Moving mouse\nto the popover overlay content keeps the overlay opened.\n- `focus` - opens on target focus, closes on target blur. Moving focus to the\npopover overlay content keeps the overlay opened.\n\nIn addition to the behavior specified by `trigger`, the popover can be closed by:\n- pressing Escape key (unless `noCloseOnEsc` property is true)\n- outside click (unless `noCloseOnOutsideClick` property is true)\n\nWhen setting `trigger` property to `null`, `undefined` or empty array, the popover\ncan be only opened programmatically by changing `opened` property. Note, closing\non Escape press or outside click is still allowed unless explicitly disabled.",
|
|
158
158
|
"value": {
|
|
159
159
|
"kind": "expression"
|
|
160
160
|
}
|