@sbb-esta/lyne-elements 0.52.1 → 0.52.2

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 (71) hide show
  1. package/accordion.js +54 -54
  2. package/action-group.js +3 -3
  3. package/alert/alert-group.js +22 -22
  4. package/alert/alert.js +22 -22
  5. package/autocomplete.js +126 -126
  6. package/breadcrumb/breadcrumb-group.js +60 -60
  7. package/breadcrumb/breadcrumb.js +17 -17
  8. package/calendar.js +423 -423
  9. package/card/card-badge.js +17 -17
  10. package/card/card.js +2 -2
  11. package/card/common.js +30 -30
  12. package/checkbox/checkbox-group.js +17 -17
  13. package/checkbox/checkbox.js +34 -34
  14. package/clock.js +83 -83
  15. package/container/sticky-bar.js +16 -16
  16. package/core/a11y.js +91 -91
  17. package/core/base-elements.js +86 -86
  18. package/core/controllers.js +40 -40
  19. package/core/datetime.js +32 -32
  20. package/core/dom.js +26 -26
  21. package/core/eventing.js +33 -33
  22. package/core/mixins.js +122 -122
  23. package/core/testing.js +29 -29
  24. package/datepicker/common.js +55 -55
  25. package/datepicker/datepicker-toggle.js +94 -94
  26. package/datepicker/datepicker.js +144 -144
  27. package/dialog/dialog-title.js +20 -20
  28. package/dialog/dialog.js +66 -66
  29. package/expansion-panel/expansion-panel-header.js +20 -20
  30. package/expansion-panel/expansion-panel.js +60 -60
  31. package/file-selector.js +91 -91
  32. package/form-field/form-field-clear.js +12 -12
  33. package/form-field/form-field.js +111 -111
  34. package/header/header.js +53 -53
  35. package/icon.js +107 -107
  36. package/image.js +87 -87
  37. package/journey-header.js +29 -29
  38. package/map-container.js +23 -23
  39. package/menu/menu.js +91 -91
  40. package/navigation/common.js +16 -16
  41. package/navigation/navigation-marker.js +34 -34
  42. package/navigation/navigation-section.js +83 -83
  43. package/navigation/navigation.js +87 -87
  44. package/notification.js +52 -52
  45. package/option/optgroup.js +45 -45
  46. package/option/option.js +108 -108
  47. package/overlay.js +5 -5
  48. package/package.json +1 -1
  49. package/popover/popover.js +110 -110
  50. package/radio-button/radio-button-group.js +93 -93
  51. package/radio-button/radio-button.js +84 -84
  52. package/select.js +178 -178
  53. package/selection-panel.js +44 -44
  54. package/slider.js +58 -58
  55. package/status.js +6 -6
  56. package/stepper/step-label.js +19 -19
  57. package/stepper/step.js +31 -31
  58. package/stepper/stepper.js +46 -46
  59. package/tabs/tab-group.js +67 -67
  60. package/tag/tag-group.js +8 -8
  61. package/tag/tag.js +27 -27
  62. package/teaser-paid.js +12 -12
  63. package/time-input.js +73 -73
  64. package/timetable-occupancy-icon.js +26 -26
  65. package/timetable-occupancy.js +9 -9
  66. package/toast.js +38 -38
  67. package/toggle/toggle-option.js +33 -33
  68. package/toggle/toggle.js +46 -46
  69. package/train/train-formation.js +36 -36
  70. package/train/train-wagon.js +30 -30
  71. package/train/train.js +13 -13
@@ -1,190 +1,190 @@
1
- import { css as f, html as h, nothing as u } from "lit";
2
- import { property as b, customElement as m } from "lit/decorators.js";
3
- import { ref as g } from "lit/directives/ref.js";
4
- import { SbbFocusHandler as w, IS_FOCUSABLE_QUERY as y, setModalityOnNextFocus as p, getFirstFocusableElement as x } from "../core/a11y.js";
1
+ import { css as u, html as d, nothing as g } from "lit";
2
+ import { property as l, customElement as f } from "lit/decorators.js";
3
+ import { ref as m } from "lit/directives/ref.js";
4
+ import { SbbFocusHandler as _, IS_FOCUSABLE_QUERY as w, setModalityOnNextFocus as b, getFirstFocusableElement as y } from "../core/a11y.js";
5
5
  import { SbbOpenCloseBaseElement as E } from "../core/base-elements.js";
6
- import { SbbLanguageController as C } from "../core/controllers.js";
7
- import { findReferencedElement as _ } from "../core/dom.js";
8
- import { EventEmitter as v, composedPathHasAttribute as T } from "../core/eventing.js";
6
+ import { SbbLanguageController as x } from "../core/controllers.js";
7
+ import { findReferencedElement as C } from "../core/dom.js";
8
+ import { EventEmitter as h, composedPathHasAttribute as T } from "../core/eventing.js";
9
9
  import { i18nClosePopover as k } from "../core/i18n.js";
10
- import { isEventOnElement as c, removeAriaOverlayTriggerAttributes as A, setAriaOverlayTriggerAttributes as L, getElementPosition as z } from "../core/overlay.js";
10
+ import { isEventOnElement as c, removeAriaOverlayTriggerAttributes as P, setAriaOverlayTriggerAttributes as L, getElementPosition as O } from "../core/overlay.js";
11
11
  import "../button/secondary-button.js";
12
- const O = f`*,:before,:after{box-sizing:border-box}:host{--sbb-popover-position: absolute;--sbb-popover-position-x: 0;--sbb-popover-position-y: 0;--sbb-popover-arrow-size: var(--sbb-spacing-fixed-4x);--sbb-popover-arrow-position-x: 0;--sbb-popover-max-width: calc(100% - var(--sbb-spacing-fixed-2x));--sbb-popover-inset: 0 auto auto 0;--sbb-popover-border-radius: var(--sbb-border-radius-8x);--sbb-popover-padding: var(--sbb-spacing-fixed-4x);--sbb-popover-background: var(--sbb-color-white);--sbb-popover-color: var(--sbb-color-charcoal);--sbb-popover-animation-duration: var( --sbb-disable-animation-zero-time, var(--sbb-animation-duration-4x) );--sbb-popover-animation-easing: ease-out;--sbb-popover-transform: translateY(var(--sbb-spacing-fixed-2x));--sbb-focus-outline-color: var(--sbb-focus-outline-color-default);display:block}:host([data-position=above]){--sbb-popover-transform: translateY(calc(var(--sbb-spacing-fixed-2x) * -1))}:host(:not([data-state=closed])){--sbb-popover-inset: 0}.sbb-popover:after,.sbb-popover__content:before{content:"";position:absolute;display:block;width:var(--sbb-popover-arrow-size);height:var(--sbb-popover-arrow-size);left:var(--sbb-popover-arrow-position-x);bottom:calc(100% - var(--sbb-popover-arrow-size) / 2);background-color:var(--sbb-popover-background);border-radius:var(--sbb-border-radius-2x) 0;transform:rotate(45deg)}.sbb-popover__container{position:fixed;inset:var(--sbb-popover-inset);pointer-events:none;z-index:var(--sbb-popover-z-index, var(--sbb-overlay-default-z-index));color:var(--sbb-popover-color)}.sbb-popover{box-shadow:var(--sbb-shadow-elevation-level-5-shadow-2-offset-x) var(--sbb-shadow-elevation-level-5-shadow-2-offset-y) var(--sbb-shadow-elevation-level-5-shadow-2-blur) var(--sbb-shadow-elevation-level-5-shadow-2-spread) var(--sbb-shadow-elevation-level-5-hard-2-color),var(--sbb-shadow-elevation-level-5-shadow-1-offset-x) var(--sbb-shadow-elevation-level-5-shadow-1-offset-y) var(--sbb-shadow-elevation-level-5-shadow-1-blur) var(--sbb-shadow-elevation-level-5-shadow-1-spread) var(--sbb-shadow-elevation-level-5-hard-1-color);display:none;position:var(--sbb-popover-position);pointer-events:all;top:var(--sbb-popover-position-y);bottom:unset;left:var(--sbb-popover-position-x);right:unset;border:none;border-radius:var(--sbb-popover-border-radius);padding:0;max-width:var(--sbb-popover-max-width);width:max-content;background-color:var(--sbb-popover-background);outline:none}.sbb-popover:focus-visible:not([data-focus-origin=mouse],[data-focus-origin=touch]){outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) solid var(--sbb-focus-outline-width)}:host([data-state]:not([data-state=closed])) .sbb-popover{display:block;animation-name:open;animation-duration:var(--sbb-popover-animation-duration);animation-timing-function:var(--sbb-popover-animation-easing)}:host([data-state][data-state=closing]) .sbb-popover{pointer-events:none;animation-name:close;animation-duration:var(--sbb-popover-animation-duration);animation-timing-function:var(--sbb-popover-animation-easing)}.sbb-popover:after{box-shadow:var(--sbb-shadow-elevation-level-5-shadow-2-offset-x) var(--sbb-shadow-elevation-level-5-shadow-2-offset-y) var(--sbb-shadow-elevation-level-5-shadow-2-blur) var(--sbb-shadow-elevation-level-5-shadow-2-spread) var(--sbb-shadow-elevation-level-5-hard-2-color),var(--sbb-shadow-elevation-level-5-shadow-1-offset-x) var(--sbb-shadow-elevation-level-5-shadow-1-offset-y) var(--sbb-shadow-elevation-level-5-shadow-1-blur) var(--sbb-shadow-elevation-level-5-shadow-1-spread) var(--sbb-shadow-elevation-level-5-hard-1-color);z-index:-1}@media (forced-colors: active){.sbb-popover:after{outline:var(--sbb-border-width-1x) solid CanvasText}}:host([data-position=above]) .sbb-popover:after{top:calc(100% - var(--sbb-popover-arrow-size) / 2)}@media (forced-colors: active){.sbb-popover{outline:var(--sbb-border-width-1x) solid CanvasText}}.sbb-popover:before{content:"";display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background-color:transparent}:host([data-position=below]) .sbb-popover:before{inset-block-start:calc(-1 * var(--sbb-spacing-fixed-6x))}:host([data-position=above]) .sbb-popover:before{inset-block-end:calc(-1 * var(--sbb-spacing-fixed-6x))}.sbb-popover__content{display:flex;gap:var(--sbb-spacing-fixed-4x);border-radius:var(--sbb-popover-border-radius);padding:var(--sbb-popover-padding);outline:none;background-color:var(--sbb-popover-background);overflow:hidden;flex-direction:row-reverse}:host([data-position=above]) .sbb-popover__content:before{top:calc(100% - var(--sbb-popover-arrow-size) / 2)}@keyframes open{0%{opacity:0;transform:var(--sbb-popover-transform)}to{opacity:1;transform:translateY(0)}}@keyframes close{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:var(--sbb-popover-transform)}}`;
13
- var S = Object.defineProperty, P = Object.getOwnPropertyDescriptor, n = (e, t, o, i) => {
14
- for (var a = i > 1 ? void 0 : i ? P(t, o) : t, r = e.length - 1, l; r >= 0; r--)
15
- (l = e[r]) && (a = (i ? l(t, o, a) : l(a)) || a);
16
- return i && a && S(t, o, a), a;
12
+ const S = u`*,:before,:after{box-sizing:border-box}:host{--sbb-popover-position: absolute;--sbb-popover-position-x: 0;--sbb-popover-position-y: 0;--sbb-popover-arrow-size: var(--sbb-spacing-fixed-4x);--sbb-popover-arrow-position-x: 0;--sbb-popover-max-width: calc(100% - var(--sbb-spacing-fixed-2x));--sbb-popover-inset: 0 auto auto 0;--sbb-popover-border-radius: var(--sbb-border-radius-8x);--sbb-popover-padding: var(--sbb-spacing-fixed-4x);--sbb-popover-background: var(--sbb-color-white);--sbb-popover-color: var(--sbb-color-charcoal);--sbb-popover-animation-duration: var( --sbb-disable-animation-zero-time, var(--sbb-animation-duration-4x) );--sbb-popover-animation-easing: ease-out;--sbb-popover-transform: translateY(var(--sbb-spacing-fixed-2x));--sbb-focus-outline-color: var(--sbb-focus-outline-color-default);display:block}:host([data-position=above]){--sbb-popover-transform: translateY(calc(var(--sbb-spacing-fixed-2x) * -1))}:host(:not([data-state=closed])){--sbb-popover-inset: 0}.sbb-popover:after,.sbb-popover__content:before{content:"";position:absolute;display:block;width:var(--sbb-popover-arrow-size);height:var(--sbb-popover-arrow-size);left:var(--sbb-popover-arrow-position-x);bottom:calc(100% - var(--sbb-popover-arrow-size) / 2);background-color:var(--sbb-popover-background);border-radius:var(--sbb-border-radius-2x) 0;transform:rotate(45deg)}.sbb-popover__container{position:fixed;inset:var(--sbb-popover-inset);pointer-events:none;z-index:var(--sbb-popover-z-index, var(--sbb-overlay-default-z-index));color:var(--sbb-popover-color)}.sbb-popover{box-shadow:var(--sbb-shadow-elevation-level-5-shadow-2-offset-x) var(--sbb-shadow-elevation-level-5-shadow-2-offset-y) var(--sbb-shadow-elevation-level-5-shadow-2-blur) var(--sbb-shadow-elevation-level-5-shadow-2-spread) var(--sbb-shadow-elevation-level-5-hard-2-color),var(--sbb-shadow-elevation-level-5-shadow-1-offset-x) var(--sbb-shadow-elevation-level-5-shadow-1-offset-y) var(--sbb-shadow-elevation-level-5-shadow-1-blur) var(--sbb-shadow-elevation-level-5-shadow-1-spread) var(--sbb-shadow-elevation-level-5-hard-1-color);display:none;position:var(--sbb-popover-position);pointer-events:all;top:var(--sbb-popover-position-y);bottom:unset;left:var(--sbb-popover-position-x);right:unset;border:none;border-radius:var(--sbb-popover-border-radius);padding:0;max-width:var(--sbb-popover-max-width);width:max-content;background-color:var(--sbb-popover-background);outline:none}.sbb-popover:focus-visible:not([data-focus-origin=mouse],[data-focus-origin=touch]){outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) solid var(--sbb-focus-outline-width)}:host([data-state]:not([data-state=closed])) .sbb-popover{display:block;animation-name:open;animation-duration:var(--sbb-popover-animation-duration);animation-timing-function:var(--sbb-popover-animation-easing)}:host([data-state][data-state=closing]) .sbb-popover{pointer-events:none;animation-name:close;animation-duration:var(--sbb-popover-animation-duration);animation-timing-function:var(--sbb-popover-animation-easing)}.sbb-popover:after{box-shadow:var(--sbb-shadow-elevation-level-5-shadow-2-offset-x) var(--sbb-shadow-elevation-level-5-shadow-2-offset-y) var(--sbb-shadow-elevation-level-5-shadow-2-blur) var(--sbb-shadow-elevation-level-5-shadow-2-spread) var(--sbb-shadow-elevation-level-5-hard-2-color),var(--sbb-shadow-elevation-level-5-shadow-1-offset-x) var(--sbb-shadow-elevation-level-5-shadow-1-offset-y) var(--sbb-shadow-elevation-level-5-shadow-1-blur) var(--sbb-shadow-elevation-level-5-shadow-1-spread) var(--sbb-shadow-elevation-level-5-hard-1-color);z-index:-1}@media (forced-colors: active){.sbb-popover:after{outline:var(--sbb-border-width-1x) solid CanvasText}}:host([data-position=above]) .sbb-popover:after{top:calc(100% - var(--sbb-popover-arrow-size) / 2)}@media (forced-colors: active){.sbb-popover{outline:var(--sbb-border-width-1x) solid CanvasText}}.sbb-popover:before{content:"";display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background-color:transparent}:host([data-position=below]) .sbb-popover:before{inset-block-start:calc(-1 * var(--sbb-spacing-fixed-6x))}:host([data-position=above]) .sbb-popover:before{inset-block-end:calc(-1 * var(--sbb-spacing-fixed-6x))}.sbb-popover__content{display:flex;gap:var(--sbb-spacing-fixed-4x);border-radius:var(--sbb-popover-border-radius);padding:var(--sbb-popover-padding);outline:none;background-color:var(--sbb-popover-background);overflow:hidden;flex-direction:row-reverse}:host([data-position=above]) .sbb-popover__content:before{top:calc(100% - var(--sbb-popover-arrow-size) / 2)}@keyframes open{0%{opacity:0;transform:var(--sbb-popover-transform)}to{opacity:1;transform:translateY(0)}}@keyframes close{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:var(--sbb-popover-transform)}}`;
13
+ var A = Object.defineProperty, F = Object.getOwnPropertyDescriptor, n = (e, o, t, i) => {
14
+ for (var r = i > 1 ? void 0 : i ? F(o, t) : o, a = e.length - 1, p; a >= 0; a--)
15
+ (p = e[a]) && (r = (i ? p(o, t, r) : p(r)) || r);
16
+ return i && r && A(o, t, r), r;
17
17
  };
18
- const F = 16, B = 32;
19
- let D = 0;
20
- const d = /* @__PURE__ */ new Set();
18
+ const z = 16, D = 32;
19
+ let M = 0;
20
+ const v = /* @__PURE__ */ new Set();
21
21
  let s = class extends E {
22
22
  constructor() {
23
- super(...arguments), this.hideCloseButton = !1, this.hoverTrigger = !1, this.openDelay = 0, this.closeDelay = 0, this.willClose = new v(
23
+ super(...arguments), this.hideCloseButton = !1, this.hoverTrigger = !1, this.openDelay = 0, this.closeDelay = 0, this.willClose = new h(
24
24
  this,
25
25
  s.events.willClose
26
- ), this.didClose = new v(
26
+ ), this.didClose = new h(
27
27
  this,
28
28
  s.events.didClose
29
- ), this.h = !1, this.i = new w(), this.f = !1, this.o = new C(this), this.w = (e) => {
30
- this.m = c(this.a, e);
31
- }, this.x = (e) => {
32
- !this.m && !c(this.a, e) && (this.g = e.composedPath().filter((t) => t instanceof window.HTMLElement).find((t) => t.matches(y)), clearTimeout(this.e), this.close());
33
- }, this.t = () => {
34
- this.state === "closed" || this.state === "closing" ? this.n = setTimeout(() => this.open(), this.openDelay) : clearTimeout(this.e);
35
- }, this.u = () => {
36
- this.state === "opened" || this.state === "opening" ? this.e = setTimeout(() => this.close(), this.closeDelay) : clearTimeout(this.n);
37
- }, this.r = () => {
38
- this.state !== "opening" && clearTimeout(this.e);
39
- }, this.s = () => {
40
- this.state !== "opening" && (this.e = setTimeout(() => this.close(), this.closeDelay));
29
+ ), this._skipCloseFocus = !1, this._focusHandler = new _(), this._hoverTrigger = !1, this._language = new x(this), this._pointerDownListener = (e) => {
30
+ this._isPointerDownEventOnPopover = c(this._overlay, e);
31
+ }, this._closeOnBackdropClick = (e) => {
32
+ !this._isPointerDownEventOnPopover && !c(this._overlay, e) && (this._nextFocusedElement = e.composedPath().filter((o) => o instanceof window.HTMLElement).find((o) => o.matches(w)), clearTimeout(this._closeTimeout), this.close());
33
+ }, this._onTriggerMouseEnter = () => {
34
+ this.state === "closed" || this.state === "closing" ? this._openTimeout = setTimeout(() => this.open(), this.openDelay) : clearTimeout(this._closeTimeout);
35
+ }, this._onTriggerMouseLeave = () => {
36
+ this.state === "opened" || this.state === "opening" ? this._closeTimeout = setTimeout(() => this.close(), this.closeDelay) : clearTimeout(this._openTimeout);
37
+ }, this._onOverlayMouseEnter = () => {
38
+ this.state !== "opening" && clearTimeout(this._closeTimeout);
39
+ }, this._onOverlayMouseLeave = () => {
40
+ this.state !== "opening" && (this._closeTimeout = setTimeout(() => this.close(), this.closeDelay));
41
41
  };
42
42
  }
43
43
  /** Opens the popover on trigger click. */
44
44
  open() {
45
45
  var e;
46
- if (!(this.state !== "closed" && this.state !== "closing" || !this.a) && this.willOpen.emit()) {
47
- for (const t of Array.from(d)) {
48
- const o = t.getAttribute("data-state");
49
- o && (o === "opened" || o === "opening") && t.close();
46
+ if (!(this.state !== "closed" && this.state !== "closing" || !this._overlay) && this.willOpen.emit()) {
47
+ for (const o of Array.from(v)) {
48
+ const t = o.getAttribute("data-state");
49
+ t && (t === "opened" || t === "opening") && o.close();
50
50
  }
51
- this.state = "opening", this.inert = !0, this.j(), (e = this.b) == null || e.setAttribute("aria-expanded", "true"), this.g = void 0, this.h = !1;
51
+ this.state = "opening", this.inert = !0, this._setPopoverPosition(), (e = this._triggerElement) == null || e.setAttribute("aria-expanded", "true"), this._nextFocusedElement = void 0, this._skipCloseFocus = !1;
52
52
  }
53
53
  }
54
54
  /** Closes the popover. */
55
55
  close(e) {
56
- var t;
57
- this.state !== "opened" && this.state !== "opening" || (this.l = e, this.willClose.emit({ closeTarget: e }) && (this.state = "closing", this.inert = !0, (t = this.b) == null || t.setAttribute("aria-expanded", "false")));
56
+ var o;
57
+ this.state !== "opened" && this.state !== "opening" || (this._popoverCloseElement = e, this.willClose.emit({ closeTarget: e }) && (this.state = "closing", this.inert = !0, (o = this._triggerElement) == null || o.setAttribute("aria-expanded", "false")));
58
58
  }
59
59
  // Closes the popover on "Esc" key pressed and traps focus within the popover.
60
- p(e) {
60
+ _onKeydownEvent(e) {
61
61
  if (this.state === "opened" && e.key === "Escape") {
62
62
  this.close();
63
63
  return;
64
64
  }
65
65
  }
66
66
  // Removes trigger click listener on trigger change.
67
- q(e, t) {
68
- var o, i;
69
- e !== t && ((o = this.d) == null || o.abort(), (i = this.c) == null || i.abort(), this.k());
67
+ _removeTriggerClickListener(e, o) {
68
+ var t, i;
69
+ e !== o && ((t = this._popoverController) == null || t.abort(), (i = this._openStateController) == null || i.abort(), this._configure());
70
70
  }
71
71
  connectedCallback() {
72
- super.connectedCallback(), this.id || (this.id = this.id || `sbb-popover-${++D}`), this.k(), this.state = "closed", d.add(this);
72
+ super.connectedCallback(), this.id || (this.id = this.id || `sbb-popover-${++M}`), this._configure(), this.state = "closed", v.add(this);
73
73
  }
74
74
  willUpdate(e) {
75
- super.willUpdate(e), e.has("trigger") && this.q(this.trigger, e.get("trigger")), e.has("hoverTrigger") && this.k();
75
+ super.willUpdate(e), e.has("trigger") && this._removeTriggerClickListener(this.trigger, e.get("trigger")), e.has("hoverTrigger") && this._configure();
76
76
  }
77
77
  firstUpdated(e) {
78
- super.firstUpdated(e), this.f && (this.a.addEventListener("mouseenter", () => this.r()), this.a.addEventListener("mouseleave", () => this.s()));
78
+ super.firstUpdated(e), this._hoverTrigger && (this._overlay.addEventListener("mouseenter", () => this._onOverlayMouseEnter()), this._overlay.addEventListener("mouseleave", () => this._onOverlayMouseLeave()));
79
79
  }
80
80
  disconnectedCallback() {
81
- var e, t;
82
- super.disconnectedCallback(), (e = this.d) == null || e.abort(), (t = this.c) == null || t.abort(), this.i.disconnect(), d.delete(this);
81
+ var e, o;
82
+ super.disconnectedCallback(), (e = this._popoverController) == null || e.abort(), (o = this._openStateController) == null || o.abort(), this._focusHandler.disconnect(), v.delete(this);
83
83
  }
84
84
  // Check if the trigger is valid and attach click event listeners.
85
- k() {
85
+ _configure() {
86
86
  var e;
87
- A(this.b), this.trigger && (this.b = _(this.trigger), this.b && (L(this.b, "dialog", this.id, this.state), this.f = this.hoverTrigger && !window.matchMedia("(pointer: coarse)").matches, (e = this.d) == null || e.abort(), this.d = new AbortController(), this.f ? (this.b.addEventListener("mouseenter", this.t, {
88
- signal: this.d.signal
89
- }), this.b.addEventListener("mouseleave", this.u, {
90
- signal: this.d.signal
91
- }), this.b.addEventListener(
87
+ P(this._triggerElement), this.trigger && (this._triggerElement = C(this.trigger), this._triggerElement && (L(this._triggerElement, "dialog", this.id, this.state), this._hoverTrigger = this.hoverTrigger && !window.matchMedia("(pointer: coarse)").matches, (e = this._popoverController) == null || e.abort(), this._popoverController = new AbortController(), this._hoverTrigger ? (this._triggerElement.addEventListener("mouseenter", this._onTriggerMouseEnter, {
88
+ signal: this._popoverController.signal
89
+ }), this._triggerElement.addEventListener("mouseleave", this._onTriggerMouseLeave, {
90
+ signal: this._popoverController.signal
91
+ }), this._triggerElement.addEventListener(
92
92
  "keydown",
93
- (t) => {
94
- (t.code === "Space" || t.code === "Enter") && this.open();
93
+ (o) => {
94
+ (o.code === "Space" || o.code === "Enter") && this.open();
95
95
  },
96
96
  {
97
- signal: this.d.signal
97
+ signal: this._popoverController.signal
98
98
  }
99
- )) : this.b.addEventListener(
99
+ )) : this._triggerElement.addEventListener(
100
100
  "click",
101
101
  () => {
102
102
  this.state === "closed" && this.open();
103
103
  },
104
104
  {
105
- signal: this.d.signal
105
+ signal: this._popoverController.signal
106
106
  }
107
107
  )));
108
108
  }
109
- v() {
110
- this.c = new AbortController(), document.addEventListener("scroll", () => this.j(), {
109
+ _attachWindowEvents() {
110
+ this._openStateController = new AbortController(), document.addEventListener("scroll", () => this._setPopoverPosition(), {
111
111
  passive: !0,
112
- signal: this.c.signal
113
- }), window.addEventListener("resize", () => this.j(), {
112
+ signal: this._openStateController.signal
113
+ }), window.addEventListener("resize", () => this._setPopoverPosition(), {
114
114
  passive: !0,
115
- signal: this.c.signal
116
- }), window.addEventListener("keydown", (e) => this.p(e), {
117
- signal: this.c.signal
118
- }), window.addEventListener("pointerdown", this.w, {
119
- signal: this.c.signal
120
- }), window.addEventListener("pointerup", this.x, {
121
- signal: this.c.signal
115
+ signal: this._openStateController.signal
116
+ }), window.addEventListener("keydown", (e) => this._onKeydownEvent(e), {
117
+ signal: this._openStateController.signal
118
+ }), window.addEventListener("pointerdown", this._pointerDownListener, {
119
+ signal: this._openStateController.signal
120
+ }), window.addEventListener("pointerup", this._closeOnBackdropClick, {
121
+ signal: this._openStateController.signal
122
122
  });
123
123
  }
124
124
  // Close the popover on click of any element that has the 'sbb-popover-close' attribute.
125
- y(e) {
126
- const t = T(e, "sbb-popover-close", this);
127
- t && !t.hasAttribute("disabled") && (clearTimeout(this.e), this.close(t));
125
+ _closeOnSbbPopoverCloseClick(e) {
126
+ const o = T(e, "sbb-popover-close", this);
127
+ o && !o.hasAttribute("disabled") && (clearTimeout(this._closeTimeout), this.close(o));
128
128
  }
129
129
  // Set popover position (x, y) to '0' once the popover is closed and the transition ended to prevent the
130
130
  // viewport from overflowing. And set the focus to the first focusable element once the popover is open.
131
131
  // In rare cases it can be that the animationEnd event is triggered twice.
132
132
  // To avoid entering a corrupt state, exit when state is not expected.
133
- z(e) {
134
- var t, o, i, a;
133
+ _onPopoverAnimationEnd(e) {
134
+ var o, t, i, r;
135
135
  if (e.animationName === "open" && this.state === "opening")
136
- this.state = "opened", this.didOpen.emit(), this.inert = !1, this.v(), this.A(), this.i.trap(this, {
137
- postFilter: (r) => r !== this.a
136
+ this.state = "opened", this.didOpen.emit(), this.inert = !1, this._attachWindowEvents(), this._setPopoverFocus(), this._focusHandler.trap(this, {
137
+ postFilter: (a) => a !== this._overlay
138
138
  });
139
139
  else if (e.animationName === "close" && this.state === "closing") {
140
- if (this.state = "closed", (o = (t = this.a) == null ? void 0 : t.firstElementChild) == null || o.scrollTo(0, 0), (i = this.a) == null || i.removeAttribute("tabindex"), !this.h) {
141
- const r = this.g || this.b;
142
- p(r), r == null || r.focus();
140
+ if (this.state = "closed", (t = (o = this._overlay) == null ? void 0 : o.firstElementChild) == null || t.scrollTo(0, 0), (i = this._overlay) == null || i.removeAttribute("tabindex"), !this._skipCloseFocus) {
141
+ const a = this._nextFocusedElement || this._triggerElement;
142
+ b(a), a == null || a.focus();
143
143
  }
144
- this.didClose.emit({ closeTarget: this.l }), (a = this.c) == null || a.abort(), this.i.disconnect();
144
+ this.didClose.emit({ closeTarget: this._popoverCloseElement }), (r = this._openStateController) == null || r.abort(), this._focusHandler.disconnect();
145
145
  }
146
146
  }
147
147
  // Set focus on the first focusable element.
148
- A() {
149
- const e = this.shadowRoot.querySelector("[sbb-popover-close]") || x(
150
- Array.from(this.children).filter((t) => t instanceof window.HTMLElement)
148
+ _setPopoverFocus() {
149
+ const e = this.shadowRoot.querySelector("[sbb-popover-close]") || y(
150
+ Array.from(this.children).filter((o) => o instanceof window.HTMLElement)
151
151
  );
152
- e ? (p(e), e.focus()) : (this.a.setAttribute("tabindex", "0"), p(this.a), this.a.focus(), this.a.addEventListener(
152
+ e ? (b(e), e.focus()) : (this._overlay.setAttribute("tabindex", "0"), b(this._overlay), this._overlay.focus(), this._overlay.addEventListener(
153
153
  "blur",
154
154
  () => {
155
155
  setTimeout(() => {
156
- var t;
157
- document.visibilityState !== "hidden" && ((t = this.a) == null || t.removeAttribute("tabindex"), (this.state === "opened" || this.state === "opening") && (this.h = !0), this.close());
156
+ var o;
157
+ document.visibilityState !== "hidden" && ((o = this._overlay) == null || o.removeAttribute("tabindex"), (this.state === "opened" || this.state === "opening") && (this._skipCloseFocus = !0), this.close());
158
158
  });
159
159
  },
160
160
  {
161
- signal: this.c.signal
161
+ signal: this._openStateController.signal
162
162
  }
163
163
  ));
164
164
  }
165
- j() {
166
- if (!this.a || !this.b)
165
+ _setPopoverPosition() {
166
+ if (!this._overlay || !this._triggerElement)
167
167
  return;
168
- const e = z(
169
- this.a,
170
- this.b,
168
+ const e = O(
169
+ this._overlay,
170
+ this._triggerElement,
171
171
  this.shadowRoot.querySelector(".sbb-popover__container"),
172
172
  {
173
- verticalOffset: F,
174
- horizontalOffset: B,
173
+ verticalOffset: z,
174
+ horizontalOffset: D,
175
175
  centered: !0,
176
176
  responsiveHeight: !0
177
177
  }
178
178
  );
179
179
  this.setAttribute("data-position", e.alignment.vertical);
180
- const t = this.b.getBoundingClientRect().left - e.left + this.b.clientWidth / 2 - 8;
181
- this.style.setProperty("--sbb-popover-position-x", `${e.left}px`), this.style.setProperty("--sbb-popover-position-y", `${e.top}px`), this.style.setProperty("--sbb-popover-arrow-position-x", `${t}px`);
180
+ const o = this._triggerElement.getBoundingClientRect().left - e.left + this._triggerElement.clientWidth / 2 - 8;
181
+ this.style.setProperty("--sbb-popover-position-x", `${e.left}px`), this.style.setProperty("--sbb-popover-position-y", `${e.top}px`), this.style.setProperty("--sbb-popover-arrow-position-x", `${o}px`);
182
182
  }
183
183
  render() {
184
- const e = h`
184
+ const e = d`
185
185
  <span class="sbb-popover__close">
186
186
  <sbb-secondary-button
187
- aria-label=${this.accessibilityCloseLabel || k[this.o.current]}
187
+ aria-label=${this.accessibilityCloseLabel || k[this._language.current]}
188
188
  size="s"
189
189
  type="button"
190
190
  icon-name="cross-small"
@@ -192,19 +192,19 @@ let s = class extends E {
192
192
  ></sbb-secondary-button>
193
193
  </span>
194
194
  `;
195
- return h`
195
+ return d`
196
196
  <div class="sbb-popover__container">
197
197
  <div
198
- @animationend=${(t) => this.z(t)}
198
+ @animationend=${(o) => this._onPopoverAnimationEnd(o)}
199
199
  class="sbb-popover"
200
200
  role="tooltip"
201
- ${g((t) => this.a = t)}
201
+ ${m((o) => this._overlay = o)}
202
202
  >
203
203
  <div
204
- @click=${(t) => this.y(t)}
204
+ @click=${(o) => this._closeOnSbbPopoverCloseClick(o)}
205
205
  class="sbb-popover__content"
206
206
  >
207
- ${!this.hideCloseButton && !this.f ? e : u}
207
+ ${!this.hideCloseButton && !this._hoverTrigger ? e : g}
208
208
  <span>
209
209
  <slot>No content</slot>
210
210
  </span>
@@ -214,27 +214,27 @@ let s = class extends E {
214
214
  `;
215
215
  }
216
216
  };
217
- s.styles = O;
217
+ s.styles = S;
218
218
  n([
219
- b()
219
+ l()
220
220
  ], s.prototype, "trigger", 2);
221
221
  n([
222
- b({ attribute: "hide-close-button", type: Boolean })
222
+ l({ attribute: "hide-close-button", type: Boolean })
223
223
  ], s.prototype, "hideCloseButton", 2);
224
224
  n([
225
- b({ attribute: "hover-trigger", type: Boolean })
225
+ l({ attribute: "hover-trigger", type: Boolean })
226
226
  ], s.prototype, "hoverTrigger", 2);
227
227
  n([
228
- b({ attribute: "open-delay", type: Number })
228
+ l({ attribute: "open-delay", type: Number })
229
229
  ], s.prototype, "openDelay", 2);
230
230
  n([
231
- b({ attribute: "close-delay", type: Number })
231
+ l({ attribute: "close-delay", type: Number })
232
232
  ], s.prototype, "closeDelay", 2);
233
233
  n([
234
- b({ attribute: "accessibility-close-label" })
234
+ l({ attribute: "accessibility-close-label" })
235
235
  ], s.prototype, "accessibilityCloseLabel", 2);
236
236
  s = n([
237
- m("sbb-popover")
237
+ f("sbb-popover")
238
238
  ], s);
239
239
  export {
240
240
  s as SbbPopoverElement