@sbb-esta/lyne-elements 0.52.1 → 0.53.0

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 (242) 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/checkbox.d.ts +3 -46
  13. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  14. package/checkbox/checkbox-group/checkbox-group.d.ts +4 -2
  15. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  16. package/checkbox/checkbox-group.js +26 -23
  17. package/checkbox/checkbox-panel/checkbox-panel.d.ts +41 -0
  18. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -0
  19. package/checkbox/checkbox-panel.d.ts +2 -0
  20. package/checkbox/checkbox-panel.d.ts.map +1 -0
  21. package/checkbox/checkbox-panel.js +67 -0
  22. package/checkbox/checkbox.js +27 -104
  23. package/checkbox/common/checkbox-common.d.ts +13 -0
  24. package/checkbox/common/checkbox-common.d.ts.map +1 -0
  25. package/checkbox/common.d.ts +2 -0
  26. package/checkbox/common.d.ts.map +1 -0
  27. package/checkbox/common.js +52 -0
  28. package/checkbox.d.ts +2 -0
  29. package/checkbox.d.ts.map +1 -1
  30. package/checkbox.js +2 -0
  31. package/clock.js +83 -83
  32. package/container/sticky-bar.js +16 -16
  33. package/core/a11y.js +91 -91
  34. package/core/base-elements.js +86 -86
  35. package/core/controllers.js +40 -40
  36. package/core/datetime.js +32 -32
  37. package/core/dom.js +26 -26
  38. package/core/eventing.js +33 -33
  39. package/core/mixins/panel-mixin.d.ts +13 -0
  40. package/core/mixins/panel-mixin.d.ts.map +1 -0
  41. package/core/mixins.d.ts +1 -0
  42. package/core/mixins.d.ts.map +1 -1
  43. package/core/mixins.js +170 -139
  44. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +1 -1
  45. package/core/testing.js +29 -29
  46. package/core.css +1 -1
  47. package/custom-elements.json +8862 -6904
  48. package/datepicker/common.js +55 -55
  49. package/datepicker/datepicker-toggle.js +94 -94
  50. package/datepicker/datepicker.js +144 -144
  51. package/development/checkbox/checkbox/checkbox.d.ts +3 -46
  52. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  53. package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -2
  54. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  55. package/development/checkbox/checkbox-group.js +43 -13
  56. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +41 -0
  57. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -0
  58. package/development/checkbox/checkbox-panel.d.ts +2 -0
  59. package/development/checkbox/checkbox-panel.d.ts.map +1 -0
  60. package/development/checkbox/checkbox-panel.js +86 -0
  61. package/development/checkbox/checkbox.js +19 -239
  62. package/development/checkbox/common/checkbox-common.d.ts +13 -0
  63. package/development/checkbox/common/checkbox-common.d.ts.map +1 -0
  64. package/development/checkbox/common.d.ts +2 -0
  65. package/development/checkbox/common.d.ts.map +1 -0
  66. package/development/checkbox/common.js +156 -0
  67. package/development/checkbox.d.ts +2 -0
  68. package/development/checkbox.d.ts.map +1 -1
  69. package/development/checkbox.js +3 -1
  70. package/development/core/mixins/panel-mixin.d.ts +13 -0
  71. package/development/core/mixins/panel-mixin.d.ts.map +1 -0
  72. package/development/core/mixins.d.ts +1 -0
  73. package/development/core/mixins.d.ts.map +1 -1
  74. package/development/core/mixins.js +187 -31
  75. package/development/image.js +1 -1
  76. package/development/radio-button/common/radio-button-common.d.ts +22 -0
  77. package/development/radio-button/common/radio-button-common.d.ts.map +1 -0
  78. package/development/radio-button/common.d.ts +2 -0
  79. package/development/radio-button/common.d.ts.map +1 -0
  80. package/development/radio-button/common.js +294 -0
  81. package/development/radio-button/radio-button/radio-button.d.ts +2 -81
  82. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  83. package/development/radio-button/radio-button-group/radio-button-group.d.ts +6 -4
  84. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  85. package/development/radio-button/radio-button-group.js +55 -23
  86. package/development/radio-button/radio-button-panel/index.d.ts +2 -0
  87. package/development/radio-button/radio-button-panel/index.d.ts.map +1 -0
  88. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +29 -0
  89. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -0
  90. package/development/radio-button/radio-button-panel.d.ts +2 -0
  91. package/development/radio-button/radio-button-panel.d.ts.map +1 -0
  92. package/development/radio-button/radio-button-panel.js +69 -0
  93. package/development/radio-button/radio-button.js +10 -324
  94. package/development/radio-button.d.ts +2 -0
  95. package/development/radio-button.d.ts.map +1 -1
  96. package/development/radio-button.js +3 -1
  97. package/{selection-panel/selection-panel.d.ts → development/selection-expansion-panel/selection-expansion-panel.d.ts} +9 -7
  98. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -0
  99. package/development/selection-expansion-panel.d.ts +2 -0
  100. package/development/selection-expansion-panel.d.ts.map +1 -0
  101. package/development/selection-expansion-panel.js +340 -0
  102. package/development/tabs/tab/index.d.ts +2 -0
  103. package/development/tabs/tab/index.d.ts.map +1 -0
  104. package/development/tabs/tab/tab.d.ts +24 -0
  105. package/development/tabs/tab/tab.d.ts.map +1 -0
  106. package/development/tabs/tab-group/tab-group.d.ts +20 -15
  107. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  108. package/development/tabs/tab-group.js +24 -14
  109. package/development/tabs/{tab-title/tab-title.d.ts → tab-label/tab-label.d.ts} +4 -4
  110. package/development/tabs/{tab-title/tab-title.d.ts.map → tab-label/tab-label.d.ts.map} +1 -1
  111. package/development/tabs/tab-label.d.ts +2 -0
  112. package/development/tabs/tab-label.d.ts.map +1 -0
  113. package/development/tabs/{tab-title.js → tab-label.js} +86 -86
  114. package/development/tabs/tab.d.ts +2 -0
  115. package/development/tabs/tab.d.ts.map +1 -0
  116. package/development/tabs/tab.js +71 -0
  117. package/development/tabs.d.ts +2 -1
  118. package/development/tabs.d.ts.map +1 -1
  119. package/development/tabs.js +3 -2
  120. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  121. package/development/train/train-formation.js +12 -12
  122. package/dialog/dialog-title.js +20 -20
  123. package/dialog/dialog.js +66 -66
  124. package/expansion-panel/expansion-panel-header.js +20 -20
  125. package/expansion-panel/expansion-panel.js +60 -60
  126. package/file-selector.js +91 -91
  127. package/form-field/form-field-clear.js +12 -12
  128. package/form-field/form-field.js +111 -111
  129. package/header/header.js +53 -53
  130. package/icon.js +107 -107
  131. package/image.js +87 -87
  132. package/index.d.ts +10 -8
  133. package/index.js +10 -8
  134. package/journey-header.js +29 -29
  135. package/map-container.js +23 -23
  136. package/menu/menu.js +91 -91
  137. package/navigation/common.js +16 -16
  138. package/navigation/navigation-marker.js +34 -34
  139. package/navigation/navigation-section.js +83 -83
  140. package/navigation/navigation.js +87 -87
  141. package/notification.js +52 -52
  142. package/option/optgroup.js +45 -45
  143. package/option/option.js +108 -108
  144. package/overlay.js +5 -5
  145. package/package.json +34 -19
  146. package/popover/popover.js +110 -110
  147. package/radio-button/common/radio-button-common.d.ts +22 -0
  148. package/radio-button/common/radio-button-common.d.ts.map +1 -0
  149. package/radio-button/common.d.ts +2 -0
  150. package/radio-button/common.d.ts.map +1 -0
  151. package/radio-button/common.js +105 -0
  152. package/radio-button/radio-button/radio-button.d.ts +2 -81
  153. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  154. package/radio-button/radio-button-group/radio-button-group.d.ts +6 -4
  155. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  156. package/radio-button/radio-button-group.js +86 -80
  157. package/radio-button/radio-button-panel/index.d.ts +2 -0
  158. package/radio-button/radio-button-panel/index.d.ts.map +1 -0
  159. package/radio-button/radio-button-panel/radio-button-panel.d.ts +29 -0
  160. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -0
  161. package/radio-button/radio-button-panel.d.ts +2 -0
  162. package/radio-button/radio-button-panel.d.ts.map +1 -0
  163. package/radio-button/radio-button-panel.js +59 -0
  164. package/radio-button/radio-button.js +20 -143
  165. package/radio-button.d.ts +2 -0
  166. package/radio-button.d.ts.map +1 -1
  167. package/radio-button.js +2 -0
  168. package/select.js +178 -178
  169. package/{development/selection-panel/selection-panel.d.ts → selection-expansion-panel/selection-expansion-panel.d.ts} +9 -7
  170. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -0
  171. package/selection-expansion-panel.d.ts +2 -0
  172. package/selection-expansion-panel.d.ts.map +1 -0
  173. package/selection-expansion-panel.js +146 -0
  174. package/slider.js +58 -58
  175. package/standard-theme.css +1 -1
  176. package/status.js +6 -6
  177. package/stepper/step-label.js +19 -19
  178. package/stepper/step.js +31 -31
  179. package/stepper/stepper.js +46 -46
  180. package/tabs/tab/index.d.ts +2 -0
  181. package/tabs/tab/index.d.ts.map +1 -0
  182. package/tabs/tab/tab.d.ts +24 -0
  183. package/tabs/tab/tab.d.ts.map +1 -0
  184. package/tabs/tab-group/tab-group.d.ts +20 -15
  185. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  186. package/tabs/tab-group.js +85 -75
  187. package/tabs/{tab-title/tab-title.d.ts → tab-label/tab-label.d.ts} +4 -4
  188. package/tabs/{tab-title/tab-title.d.ts.map → tab-label/tab-label.d.ts.map} +1 -1
  189. package/tabs/tab-label.d.ts +2 -0
  190. package/tabs/tab-label.d.ts.map +1 -0
  191. package/tabs/tab-label.js +51 -0
  192. package/tabs/tab.d.ts +2 -0
  193. package/tabs/tab.d.ts.map +1 -0
  194. package/tabs/tab.js +41 -0
  195. package/tabs.d.ts +2 -1
  196. package/tabs.d.ts.map +1 -1
  197. package/tabs.js +2 -1
  198. package/tag/tag-group.js +8 -8
  199. package/tag/tag.js +27 -27
  200. package/time-input.js +73 -73
  201. package/timetable-occupancy-icon.js +26 -26
  202. package/timetable-occupancy.js +9 -9
  203. package/toast.js +38 -38
  204. package/toggle/toggle-option.js +33 -33
  205. package/toggle/toggle.js +46 -46
  206. package/train/train-formation/train-formation.d.ts.map +1 -1
  207. package/train/train-formation.js +51 -51
  208. package/train/train-wagon.js +30 -30
  209. package/train/train.js +13 -13
  210. package/development/selection-panel/selection-panel.d.ts.map +0 -1
  211. package/development/selection-panel.d.ts +0 -2
  212. package/development/selection-panel.d.ts.map +0 -1
  213. package/development/selection-panel.js +0 -376
  214. package/development/tabs/tab-title.d.ts +0 -2
  215. package/development/tabs/tab-title.d.ts.map +0 -1
  216. package/development/teaser-hero/teaser-hero.d.ts +0 -26
  217. package/development/teaser-hero/teaser-hero.d.ts.map +0 -1
  218. package/development/teaser-hero.d.ts +0 -2
  219. package/development/teaser-hero.d.ts.map +0 -1
  220. package/development/teaser-hero.js +0 -181
  221. package/development/teaser-paid/teaser-paid.d.ts +0 -20
  222. package/development/teaser-paid/teaser-paid.d.ts.map +0 -1
  223. package/development/teaser-paid.d.ts +0 -2
  224. package/development/teaser-paid.d.ts.map +0 -1
  225. package/development/teaser-paid.js +0 -91
  226. package/selection-panel/selection-panel.d.ts.map +0 -1
  227. package/selection-panel.d.ts +0 -2
  228. package/selection-panel.d.ts.map +0 -1
  229. package/selection-panel.js +0 -138
  230. package/tabs/tab-title.d.ts +0 -2
  231. package/tabs/tab-title.d.ts.map +0 -1
  232. package/tabs/tab-title.js +0 -51
  233. package/teaser-hero/teaser-hero.d.ts +0 -26
  234. package/teaser-hero/teaser-hero.d.ts.map +0 -1
  235. package/teaser-hero.d.ts +0 -2
  236. package/teaser-hero.d.ts.map +0 -1
  237. package/teaser-hero.js +0 -51
  238. package/teaser-paid/teaser-paid.d.ts +0 -20
  239. package/teaser-paid/teaser-paid.d.ts.map +0 -1
  240. package/teaser-paid.d.ts +0 -2
  241. package/teaser-paid.d.ts.map +0 -1
  242. package/teaser-paid.js +0 -28
package/map-container.js CHANGED
@@ -1,27 +1,27 @@
1
- import { css as m, LitElement as p, html as e, nothing as l } from "lit";
1
+ import { css as m, LitElement as p, html as n, nothing as l } from "lit";
2
2
  import { property as h, state as u, customElement as v } from "lit/decorators.js";
3
3
  import { ref as d } from "lit/directives/ref.js";
4
4
  import { SbbLanguageController as g } from "./core/controllers.js";
5
- import { i18nMapContainerButtonLabel as w } from "./core/i18n.js";
6
- import { AgnosticIntersectionObserver as _ } from "./core/observers.js";
5
+ import { i18nMapContainerButtonLabel as _ } from "./core/i18n.js";
6
+ import { AgnosticIntersectionObserver as w } from "./core/observers.js";
7
7
  import "./button/tertiary-button.js";
8
8
  const f = m`*,:before,:after{box-sizing:border-box}:host{--sbb-map-container-map-height-zero: 18.4375rem;--sbb-map-container-map-height-small: 20rem;--sbb-map-container-sidebar-width: 25rem;--sbb-map-container-sidebar-background-color: var(--sbb-color-white);--sbb-map-container-map-height: calc( var(--sbb-map-container-map-height-zero) + var(--sbb-border-radius-4x) );--sbb-map-container-border-radius: var(--sbb-border-radius-4x);--sbb-map-container-animation-duration: var(--sbb-animation-duration-4x);display:block}@media (min-width: 37.5rem){:host{--sbb-map-container-map-height: calc( var(--sbb-map-container-map-height-small) + var(--sbb-map-container-border-radius) )}}@media (min-width: 80rem){:host{--sbb-map-container-sidebar-width: 30rem}}.sbb-map-container{display:grid;grid-template-rows:auto auto;height:100%}@media (min-width: 52.5rem){.sbb-map-container{grid-template-columns:max(var(--sbb-map-container-sidebar-width)) calc(100% - var(--sbb-map-container-sidebar-width));height:calc(100vh - var(--sbb-map-container-margin-start, var(--sbb-header-height)));overflow:hidden}}.sbb-map-container__sidebar-button{position:fixed;left:50%;inset-block-end:var(--sbb-spacing-fixed-5x);visibility:hidden;opacity:0;transform:translate(-50%) translateY(calc(100% + var(--sbb-spacing-fixed-5x)));transition:opacity var(--sbb-map-container-animation-duration) var(--sbb-animation-easing),visibility var(--sbb-map-container-animation-duration) var(--sbb-animation-easing) var(--sbb-map-container-animation-duration),transform var(--sbb-map-container-animation-duration) var(--sbb-animation-easing)}:host([data-scroll-up-button-visible]) .sbb-map-container__sidebar-button{transition:visibility var(--sbb-map-container-animation-duration) var(--sbb-animation-easing),opacity var(--sbb-map-container-animation-duration) var(--sbb-animation-easing),transform var(--sbb-map-container-animation-duration) ease-out;visibility:visible;opacity:1;transform:translate(-50%) translateY(0)}@media (min-width: 52.5rem){.sbb-map-container__sidebar-button{display:none}}.sbb-map-container__sidebar{--sbb-scrollbar-thumb-width: .5rem;--sbb-scrollbar-thumb-width-hover: var(--sbb-scrollbar-thumb-width);--sbb-scrollbar-width-firefox: auto;--sbb-scrollbar-color: var(--sbb-color-black-alpha-30);--sbb-scrollbar-color-hover: var(--sbb-color-black-alpha-60);--sbb-scrollbar-track-color: var(--sbb-color-cloud);--sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);grid-column:1/3;grid-row:2/3;width:100%;height:calc(100% + var(--sbb-map-container-border-radius));overflow:hidden auto;position:relative;z-index:2;border-start-end-radius:var(--sbb-map-container-border-radius);border-start-start-radius:var(--sbb-map-container-border-radius);margin-block-start:calc(var(--sbb-map-container-border-radius) * -1);background-color:var(--sbb-map-container-sidebar-background-color)}.sbb-map-container__sidebar::-webkit-scrollbar{width:var(--sbb-scrollbar-width);height:var(--sbb-scrollbar-width);background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-map-container__sidebar::-webkit-scrollbar-corner{background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-map-container__sidebar::-webkit-scrollbar-thumb{background-color:var(--sbb-scrollbar-color, currentcolor);border:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;border-radius:var(--sbb-border-radius-4x);background-clip:padding-box}.sbb-map-container__sidebar::-webkit-scrollbar-thumb:hover{background-color:var(--sbb-scrollbar-color-hover, currentcolor);border-width:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)))}.sbb-map-container__sidebar::-webkit-scrollbar-button,.sbb-map-container__sidebar::-webkit-scrollbar-corner{display:none}@supports not selector(::-webkit-scrollbar){.sbb-map-container__sidebar{scrollbar-width:var(--sbb-scrollbar-width-firefox);scrollbar-color:var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent)}}@media (min-width: 52.5rem){.sbb-map-container__sidebar{grid-column:1/2;grid-row:1/3;border-radius:0;margin-block-start:0;border-block-start:var(--sbb-border-width-1x) solid var(--sbb-color-cloud)}}.sbb-map-container__map{position:sticky;inset-block-start:0;inset-inline:0;z-index:1;grid-row:1/2;grid-column:1/3;height:var(--sbb-map-container-map-height)}@media (min-width: 52.5rem){.sbb-map-container__map{grid-row:1/3;grid-column:2/3;height:100%;position:relative}}`;
9
- var k = Object.defineProperty, x = Object.getOwnPropertyDescriptor, c = (r, t, i, b) => {
10
- for (var a = b > 1 ? void 0 : b ? x(t, i) : t, s = r.length - 1, n; s >= 0; s--)
11
- (n = r[s]) && (a = (b ? n(t, i, a) : n(a)) || a);
9
+ var k = Object.defineProperty, y = Object.getOwnPropertyDescriptor, c = (r, t, i, b) => {
10
+ for (var a = b > 1 ? void 0 : b ? y(t, i) : t, s = r.length - 1, e; s >= 0; s--)
11
+ (e = r[s]) && (a = (b ? e(t, i, a) : e(a)) || a);
12
12
  return b && a && k(t, i, a), a;
13
13
  };
14
14
  let o = class extends p {
15
15
  constructor() {
16
- super(...arguments), this.hideScrollUpButton = !1, this.c = !1, this.e = new g(this), this.b = new _(
17
- (r) => this.f(r)
16
+ super(...arguments), this.hideScrollUpButton = !1, this._scrollUpButtonVisible = !1, this._language = new g(this), this._observer = new w(
17
+ (r) => this._toggleButtonVisibilityOnIntersect(r)
18
18
  );
19
19
  }
20
20
  /**
21
21
  * Button click callback to trigger the scroll to container top
22
22
  * @private
23
23
  */
24
- g() {
24
+ _onScrollButtonClick() {
25
25
  this.scrollIntoView({ behavior: "smooth" });
26
26
  }
27
27
  /**
@@ -29,44 +29,44 @@ let o = class extends p {
29
29
  * @param entries
30
30
  * @private
31
31
  */
32
- f(r) {
32
+ _toggleButtonVisibilityOnIntersect(r) {
33
33
  r.forEach((t) => {
34
34
  const i = !t.isIntersecting;
35
- this.toggleAttribute("data-scroll-up-button-visible", i), this.c = i;
35
+ this.toggleAttribute("data-scroll-up-button-visible", i), this._scrollUpButtonVisible = i;
36
36
  });
37
37
  }
38
38
  connectedCallback() {
39
- super.connectedCallback(), this.d();
39
+ super.connectedCallback(), this._updateIntersectionObserver();
40
40
  }
41
- d() {
42
- this.b.disconnect(), !this.hideScrollUpButton && this.a && this.b.observe(this.a);
41
+ _updateIntersectionObserver() {
42
+ this._observer.disconnect(), !this.hideScrollUpButton && this._intersector && this._observer.observe(this._intersector);
43
43
  }
44
44
  disconnectedCallback() {
45
- super.disconnectedCallback(), this.b.disconnect();
45
+ super.disconnectedCallback(), this._observer.disconnect();
46
46
  }
47
47
  render() {
48
- return e`
48
+ return n`
49
49
  <div class="sbb-map-container">
50
50
  <div class="sbb-map-container__sidebar">
51
- ${this.hideScrollUpButton ? l : e`<span
51
+ ${this.hideScrollUpButton ? l : n`<span
52
52
  ${d((r) => {
53
- this.a !== r && (this.a = r, this.d());
53
+ this._intersector !== r && (this._intersector = r, this._updateIntersectionObserver());
54
54
  })}
55
55
  ></span>`}
56
56
 
57
57
  <slot></slot>
58
58
 
59
- ${this.hideScrollUpButton ? l : e`<sbb-tertiary-button
59
+ ${this.hideScrollUpButton ? l : n`<sbb-tertiary-button
60
60
  class="sbb-map-container__sidebar-button"
61
61
  size="l"
62
62
  icon-name="location-pin-map-small"
63
63
  type="button"
64
- @click=${() => this.g()}
64
+ @click=${() => this._onScrollButtonClick()}
65
65
  ${d((r) => {
66
- r && (r.inert = !this.c);
66
+ r && (r.inert = !this._scrollUpButtonVisible);
67
67
  })}
68
68
  >
69
- ${w[this.e.current]}
69
+ ${_[this._language.current]}
70
70
  </sbb-tertiary-button>`}
71
71
  </div>
72
72
  <div class="sbb-map-container__map">
@@ -82,7 +82,7 @@ c([
82
82
  ], o.prototype, "hideScrollUpButton", 2);
83
83
  c([
84
84
  u()
85
- ], o.prototype, "c", 2);
85
+ ], o.prototype, "_scrollUpButtonVisible", 2);
86
86
  o = c([
87
87
  v("sbb-map-container")
88
88
  ], o);
package/menu/menu.js CHANGED
@@ -1,19 +1,19 @@
1
1
  import { css as v, html as l } from "lit";
2
- import { property as p, customElement as g } from "lit/decorators.js";
3
- import { ref as f } from "lit/directives/ref.js";
4
- import { SbbFocusHandler as w, isArrowKeyPressed as x, interactivityChecker as y, getNextElementIndex as k, setModalityOnNextFocus as c, IS_FOCUSABLE_QUERY as _ } from "../core/a11y.js";
5
- import { SbbOpenCloseBaseElement as E } from "../core/base-elements.js";
6
- import { SbbConnectedAbortController as N } from "../core/controllers.js";
7
- import { SbbScrollHandler as S, isBreakpoint as h, findReferencedElement as C } from "../core/dom.js";
8
- import { SbbNamedSlotListMixin as L } from "../core/mixins.js";
9
- import { isEventOnElement as d, applyInertMechanism as m, removeInertMechanism as u, removeAriaOverlayTriggerAttributes as B, setAriaOverlayTriggerAttributes as A, getElementPosition as O } from "../core/overlay.js";
2
+ import { property as g, customElement as p } from "lit/decorators.js";
3
+ import { ref as _ } from "lit/directives/ref.js";
4
+ import { SbbFocusHandler as f, isArrowKeyPressed as w, interactivityChecker as E, getNextElementIndex as x, setModalityOnNextFocus as c, IS_FOCUSABLE_QUERY as y } from "../core/a11y.js";
5
+ import { SbbOpenCloseBaseElement as k } from "../core/base-elements.js";
6
+ import { SbbConnectedAbortController as C } from "../core/controllers.js";
7
+ import { SbbScrollHandler as L, isBreakpoint as d, findReferencedElement as O } from "../core/dom.js";
8
+ import { SbbNamedSlotListMixin as N } from "../core/mixins.js";
9
+ import { isEventOnElement as h, applyInertMechanism as m, removeInertMechanism as u, removeAriaOverlayTriggerAttributes as S, setAriaOverlayTriggerAttributes as B, getElementPosition as A } from "../core/overlay.js";
10
10
  const T = v`*,:before,:after{box-sizing:border-box}:host{--sbb-menu-position-x: 0;--sbb-menu-position-y: 0;--sbb-menu-animation-duration: var( --sbb-disable-animation-zero-time, var(--sbb-animation-duration-6x) );--sbb-menu-animation-easing: ease;--sbb-menu-transform: translateY(100%);--sbb-menu-max-width: 100%;--sbb-menu-min-width: 100%;--sbb-menu-inset: 0 auto auto 0;--sbb-menu-container-height: 100vh;--sbb-menu-max-height: calc(85vh - var(--sbb-spacing-fixed-8x));--sbb-menu-min-height: 3.03125rem;--sbb-menu-border-radius: var(--sbb-border-radius-4x);--sbb-menu-visibility: hidden;--sbb-menu-backdrop-color: transparent;display:contents}@supports (height: 100dvh){:host{--sbb-menu-container-height: 100dvh}}@media (min-width: 52.5rem){:host{--sbb-menu-transform: translateY(var(--sbb-spacing-fixed-2x));--sbb-menu-max-width: 20rem;--sbb-menu-min-width: 11.25rem}}:host(:is([data-state=opened],[data-state=opening])){--sbb-menu-visibility: visible;--sbb-menu-backdrop-color: var(--sbb-color-black-alpha-20)}@media (min-width: 52.5rem){:host(:is([data-state=opened],[data-state=opening])){--sbb-menu-backdrop-color: transparent}}:host(:not([data-state=closed])){--sbb-menu-inset: 0}::slotted(:not(sbb-menu-button,sbb-menu-link,sbb-divider)){display:block;padding-inline:var(--sbb-spacing-fixed-5x)}::slotted(sbb-divider){--sbb-divider-color: var(--sbb-color-iron);margin-block:var(--sbb-spacing-fixed-2x)}.sbb-menu__container{position:fixed;pointer-events:none;inset:var(--sbb-menu-inset);height:var(--sbb-menu-container-height);z-index:var(--sbb-menu-z-index, var(--sbb-overlay-default-z-index))}.sbb-menu__container:before{content:"";visibility:var(--sbb-menu-visibility);pointer-events:all;position:fixed;inset:var(--sbb-menu-inset);height:var(--sbb-menu-container-height);background-color:var(--sbb-menu-backdrop-color);transition-duration:var(--sbb-menu-animation-duration);transition-timing-function:var(--sbb-menu-animation-easing);transition-property:background-color,visibility}.sbb-menu{display:none;opacity:0;pointer-events:none;max-width:var(--sbb-menu-max-width);min-width:var(--sbb-menu-min-width);text-align:start;position:absolute;inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:unset;color:var(--sbb-color-white);border:none;border-radius:var(--sbb-menu-border-radius) var(--sbb-menu-border-radius) 0 0;background-color:var(--sbb-color-black);padding:0;overflow:hidden}:host([data-state]:not([data-state=closed])) .sbb-menu{display:block;opacity:1;pointer-events:all;animation-name:open;animation-duration:var(--sbb-menu-animation-duration);animation-timing-function:var(--sbb-menu-animation-easing)}:host([data-state][data-state=closing]) .sbb-menu{pointer-events:none;animation-name:close}@media (forced-colors: active){.sbb-menu{outline:var(--sbb-border-width-1x) solid CanvasText}}@media (min-width: 52.5rem){.sbb-menu{top:0;bottom:unset;left:0;right:unset;max-height:fit-content;border-radius:var(--sbb-menu-border-radius)}:host(:not([data-state=closed])) .sbb-menu{top:var(--sbb-menu-position-y);left:var(--sbb-menu-position-x);max-height:var(--sbb-menu-max-height);min-height:var(--sbb-menu-min-height)}}.sbb-menu__content{--sbb-scrollbar-thumb-width: .125rem;--sbb-scrollbar-thumb-width-hover: .25rem;--sbb-scrollbar-width-firefox: thin;--sbb-scrollbar-color: var(--sbb-color-white-alpha-30);--sbb-scrollbar-color-hover: var(--sbb-color-white-alpha-60);--sbb-scrollbar-track-color: transparent;--sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);max-height:var(--sbb-menu-max-height);padding-block:var(--sbb-spacing-fixed-1x);overflow:auto;outline:none}.sbb-menu__content::-webkit-scrollbar{width:var(--sbb-scrollbar-width);height:var(--sbb-scrollbar-width);background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-menu__content::-webkit-scrollbar-corner{background-color:var(--sbb-scrollbar-track-color, transparent)}.sbb-menu__content::-webkit-scrollbar-thumb{background-color:var(--sbb-scrollbar-color, currentcolor);border:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;border-radius:var(--sbb-border-radius-4x);background-clip:padding-box}.sbb-menu__content::-webkit-scrollbar-thumb:hover{background-color:var(--sbb-scrollbar-color-hover, currentcolor);border-width:calc(.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)))}.sbb-menu__content::-webkit-scrollbar-button,.sbb-menu__content::-webkit-scrollbar-corner{display:none}@supports not selector(::-webkit-scrollbar){.sbb-menu__content{scrollbar-width:var(--sbb-scrollbar-width-firefox);scrollbar-color:var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent)}}.sbb-menu__content:after{content:"";display:block;height:var(--sbb-spacing-fixed-8x)}@media (min-width: 52.5rem){.sbb-menu__content{max-height:fit-content}:host(:not([data-state=closed])) .sbb-menu__content{max-height:var(--sbb-menu-max-height);min-height:var(--sbb-menu-min-height)}.sbb-menu__content:after{display:none}}.sbb-menu-list{list-style:none;margin:0;padding:0;font-size:inherit}@keyframes open{0%{opacity:0;transform:var(--sbb-menu-transform)}to{opacity:1;transform:translateY(0)}}@keyframes close{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:var(--sbb-menu-transform)}}`;
11
- var I = Object.defineProperty, P = Object.getOwnPropertyDescriptor, b = (t, e, s, n) => {
12
- for (var i = n > 1 ? void 0 : n ? P(e, s) : e, o = t.length - 1, a; o >= 0; o--)
13
- (a = t[o]) && (i = (n ? a(e, s, i) : a(i)) || i);
14
- return n && i && I(e, s, i), i;
11
+ var M = Object.defineProperty, P = Object.getOwnPropertyDescriptor, b = (e, t, n, s) => {
12
+ for (var i = s > 1 ? void 0 : s ? P(t, n) : t, o = e.length - 1, a; o >= 0; o--)
13
+ (a = e[o]) && (i = (s ? a(t, n, i) : a(i)) || i);
14
+ return s && i && M(t, n, i), i;
15
15
  };
16
- const K = 8, U = [
16
+ const I = 8, K = [
17
17
  "A",
18
18
  "BUTTON",
19
19
  "SBB-BUTTON",
@@ -23,153 +23,153 @@ const K = 8, U = [
23
23
  "SBB-LINK-BUTTON",
24
24
  "SBB-BLOCK-LINK-BUTTON"
25
25
  ];
26
- let z = 0, r = class extends L(E) {
26
+ let D = 0, r = class extends N(k) {
27
27
  constructor() {
28
- super(...arguments), this.listChildLocalNames = ["sbb-menu-button", "sbb-menu-link"], this.e = null, this.a = null, this.h = !1, this.l = new N(this), this.f = new w(), this.i = new S(), this.r = (t) => {
29
- this.h = d(this.c, t);
30
- }, this.s = (t) => {
31
- !this.h && !d(this.c, t) && this.close();
28
+ super(...arguments), this.listChildLocalNames = ["sbb-menu-button", "sbb-menu-link"], this._trigger = null, this._triggerElement = null, this._isPointerDownEventOnMenu = !1, this._abort = new C(this), this._focusHandler = new f(), this._scrollHandler = new L(), this._pointerDownListener = (e) => {
29
+ this._isPointerDownEventOnMenu = h(this._menu, e);
30
+ }, this._closeOnBackdropClick = (e) => {
31
+ !this._isPointerDownEventOnMenu && !h(this._menu, e) && this.close();
32
32
  };
33
33
  }
34
- set trigger(t) {
35
- const e = this.e;
36
- this.e = t, this.k(this.e, e);
34
+ set trigger(e) {
35
+ const t = this._trigger;
36
+ this._trigger = e, this._removeTriggerClickListener(this._trigger, t);
37
37
  }
38
38
  get trigger() {
39
- return this.e;
39
+ return this._trigger;
40
40
  }
41
41
  /**
42
42
  * Opens the menu on trigger click.
43
43
  */
44
44
  open() {
45
- var t;
46
- this.state === "closing" || !this.c || this.willOpen.emit() && (this.state = "opening", this.g(), (t = this.a) == null || t.setAttribute("aria-expanded", "true"), h("medium") || this.i.disableScroll());
45
+ var e;
46
+ this.state === "closing" || !this._menu || this.willOpen.emit() && (this.state = "opening", this._setMenuPosition(), (e = this._triggerElement) == null || e.setAttribute("aria-expanded", "true"), d("medium") || this._scrollHandler.disableScroll());
47
47
  }
48
48
  /**
49
49
  * Closes the menu.
50
50
  */
51
51
  close() {
52
- var t;
53
- this.state !== "opening" && this.willClose.emit() && (this.state = "closing", (t = this.a) == null || t.setAttribute("aria-expanded", "false"));
52
+ var e;
53
+ this.state !== "opening" && this.willClose.emit() && (this.state = "closing", (e = this._triggerElement) == null || e.setAttribute("aria-expanded", "false"));
54
54
  }
55
55
  /**
56
56
  * Handles click and checks if its target is a sbb-menu-button/sbb-menu-link.
57
57
  */
58
- m(t) {
59
- const e = t.target;
60
- ((e == null ? void 0 : e.localName) === "sbb-menu-button" || (e == null ? void 0 : e.localName) === "sbb-menu-link") && this.close();
58
+ _onClick(e) {
59
+ const t = e.target;
60
+ ((t == null ? void 0 : t.localName) === "sbb-menu-button" || (t == null ? void 0 : t.localName) === "sbb-menu-link") && this.close();
61
61
  }
62
- n(t) {
63
- if (!x(t))
62
+ _handleKeyDown(e) {
63
+ if (!w(e))
64
64
  return;
65
- t.preventDefault();
66
- const e = Array.from(
65
+ e.preventDefault();
66
+ const t = Array.from(
67
67
  this.querySelectorAll(
68
68
  "sbb-menu-button, sbb-menu-link"
69
69
  )
70
70
  ).filter(
71
- (i) => !i.disabled && y.isVisible(i)
72
- ), s = e.findIndex((i) => i === t.target), n = k(t, s, e.length);
73
- e[n].focus();
71
+ (i) => !i.disabled && E.isVisible(i)
72
+ ), n = t.findIndex((i) => i === e.target), s = x(e, n, t.length);
73
+ t[s].focus();
74
74
  }
75
75
  // Closes the menu on "Esc" key pressed and traps focus within the menu.
76
- async o(t) {
77
- if (this.state === "opened" && t.key === "Escape") {
76
+ async _onKeydownEvent(e) {
77
+ if (this.state === "opened" && e.key === "Escape") {
78
78
  this.close();
79
79
  return;
80
80
  }
81
81
  }
82
82
  // Removes trigger click listener on trigger change.
83
- k(t, e) {
84
- var s, n;
85
- t !== e && ((s = this.d) == null || s.abort(), (n = this.b) == null || n.abort(), this.j(this.trigger));
83
+ _removeTriggerClickListener(e, t) {
84
+ var n, s;
85
+ e !== t && ((n = this._menuController) == null || n.abort(), (s = this._windowEventsController) == null || s.abort(), this._configure(this.trigger));
86
86
  }
87
87
  connectedCallback() {
88
- var e;
88
+ var t;
89
89
  super.connectedCallback();
90
- const t = this.l.signal;
91
- this.addEventListener("click", (s) => this.m(s), { signal: t }), this.addEventListener("keydown", (s) => this.n(s), { signal: t }), (e = this.shadowRoot) == null || e.addEventListener("slotchange", (s) => this.p(s), {
92
- signal: t,
90
+ const e = this._abort.signal;
91
+ this.addEventListener("click", (n) => this._onClick(n), { signal: e }), this.addEventListener("keydown", (n) => this._handleKeyDown(n), { signal: e }), (t = this.shadowRoot) == null || t.addEventListener("slotchange", (n) => this._checkListCase(n), {
92
+ signal: e,
93
93
  capture: !0
94
- }), this.j(this.trigger), this.state === "opened" && m(this);
94
+ }), this._configure(this.trigger), this.state === "opened" && m(this);
95
95
  }
96
96
  disconnectedCallback() {
97
- var t, e;
98
- super.disconnectedCallback(), (t = this.d) == null || t.abort(), (e = this.b) == null || e.abort(), this.f.disconnect(), u();
97
+ var e, t;
98
+ super.disconnectedCallback(), (e = this._menuController) == null || e.abort(), (t = this._windowEventsController) == null || t.abort(), this._focusHandler.disconnect(), u();
99
99
  }
100
- p(t) {
101
- var e;
102
- (e = this.children) != null && e.length && Array.from(this.children ?? []).every(
103
- (s) => s.localName === "sbb-menu-button" || s.localName === "sbb-menu-link"
104
- ) || (t.stopImmediatePropagation(), this.listChildren.length && (this.listChildren.forEach((s) => s.removeAttribute("slot")), this.listChildren = []));
100
+ _checkListCase(e) {
101
+ var t;
102
+ (t = this.children) != null && t.length && Array.from(this.children ?? []).every(
103
+ (n) => n.localName === "sbb-menu-button" || n.localName === "sbb-menu-link"
104
+ ) || (e.stopImmediatePropagation(), this.listChildren.length && (this.listChildren.forEach((n) => n.removeAttribute("slot")), this.listChildren = []));
105
105
  }
106
106
  // Check if the trigger is valid and attach click event listeners.
107
- j(t) {
108
- var e;
109
- B(this.a), t && (this.a = C(t), this.a && (this.id = this.id || `sbb-menu-${z++}`, A(this.a, "menu", this.id, this.state), (e = this.d) == null || e.abort(), this.d = new AbortController(), this.a.addEventListener("click", () => this.open(), {
110
- signal: this.d.signal
107
+ _configure(e) {
108
+ var t;
109
+ S(this._triggerElement), e && (this._triggerElement = O(e), this._triggerElement && (this.id = this.id || `sbb-menu-${D++}`, B(this._triggerElement, "menu", this.id, this.state), (t = this._menuController) == null || t.abort(), this._menuController = new AbortController(), this._triggerElement.addEventListener("click", () => this.open(), {
110
+ signal: this._menuController.signal
111
111
  })));
112
112
  }
113
- q() {
114
- this.b = new AbortController(), document.addEventListener("scroll", () => this.g(), {
113
+ _attachWindowEvents() {
114
+ this._windowEventsController = new AbortController(), document.addEventListener("scroll", () => this._setMenuPosition(), {
115
115
  passive: !0,
116
- signal: this.b.signal
117
- }), window.addEventListener("resize", () => this.g(), {
116
+ signal: this._windowEventsController.signal
117
+ }), window.addEventListener("resize", () => this._setMenuPosition(), {
118
118
  passive: !0,
119
- signal: this.b.signal
120
- }), window.addEventListener("keydown", (t) => this.o(t), {
121
- signal: this.b.signal
122
- }), window.addEventListener("pointerdown", this.r, {
123
- signal: this.b.signal
124
- }), window.addEventListener("pointerup", this.s, {
125
- signal: this.b.signal
119
+ signal: this._windowEventsController.signal
120
+ }), window.addEventListener("keydown", (e) => this._onKeydownEvent(e), {
121
+ signal: this._windowEventsController.signal
122
+ }), window.addEventListener("pointerdown", this._pointerDownListener, {
123
+ signal: this._windowEventsController.signal
124
+ }), window.addEventListener("pointerup", this._closeOnBackdropClick, {
125
+ signal: this._windowEventsController.signal
126
126
  });
127
127
  }
128
128
  // Close menu at any click on an interactive element inside the <sbb-menu> that bubbles to the container.
129
- t(t) {
130
- const e = t.target;
131
- U.includes(e.nodeName) && !e.hasAttribute("disabled") && this.close();
129
+ _closeOnInteractiveElementClick(e) {
130
+ const t = e.target;
131
+ K.includes(t.nodeName) && !t.hasAttribute("disabled") && this.close();
132
132
  }
133
133
  // Set menu position (x, y) to '0' once the menu is closed and the transition ended to prevent the
134
134
  // viewport from overflowing. And set the focus to the first focusable element once the menu is open.
135
135
  // In rare cases it can be that the animationEnd event is triggered twice.
136
136
  // To avoid entering a corrupt state, exit when state is not expected.
137
- u(t) {
138
- var e, s, n, i;
139
- t.animationName === "open" && this.state === "opening" ? (this.state = "opened", this.didOpen.emit(), m(this), this.v(), this.f.trap(this), this.q()) : t.animationName === "close" && this.state === "closing" && (this.state = "closed", (s = (e = this.c) == null ? void 0 : e.firstElementChild) == null || s.scrollTo(0, 0), u(), c(this.a), (n = this.a) == null || n.focus({
137
+ _onMenuAnimationEnd(e) {
138
+ var t, n, s, i;
139
+ e.animationName === "open" && this.state === "opening" ? (this.state = "opened", this.didOpen.emit(), m(this), this._setMenuFocus(), this._focusHandler.trap(this), this._attachWindowEvents()) : e.animationName === "close" && this.state === "closing" && (this.state = "closed", (n = (t = this._menu) == null ? void 0 : t.firstElementChild) == null || n.scrollTo(0, 0), u(), c(this._triggerElement), (s = this._triggerElement) == null || s.focus({
140
140
  // When inside the sbb-header, we prevent the scroll to avoid the snapping to the top of the page
141
- preventScroll: this.a.localName === "sbb-header-button" || this.a.localName === "sbb-header-link"
142
- }), this.didClose.emit(), (i = this.b) == null || i.abort(), this.f.disconnect(), this.i.enableScroll());
141
+ preventScroll: this._triggerElement.localName === "sbb-header-button" || this._triggerElement.localName === "sbb-header-link"
142
+ }), this.didClose.emit(), (i = this._windowEventsController) == null || i.abort(), this._focusHandler.disconnect(), this._scrollHandler.enableScroll());
143
143
  }
144
144
  // Set focus on the first focusable element.
145
- v() {
146
- const t = this.querySelector(_);
147
- c(t), t.focus();
145
+ _setMenuFocus() {
146
+ const e = this.querySelector(y);
147
+ c(e), e.focus();
148
148
  }
149
149
  // Set menu position and max height if the breakpoint is medium-ultra.
150
- g() {
151
- if (!h("medium") || !this.c || !this.a || this.state === "closing")
150
+ _setMenuPosition() {
151
+ if (!d("medium") || !this._menu || !this._triggerElement || this.state === "closing")
152
152
  return;
153
- const t = O(
153
+ const e = A(
154
154
  this.shadowRoot.querySelector(".sbb-menu__content"),
155
- this.a,
155
+ this._triggerElement,
156
156
  this.shadowRoot.querySelector(".sbb-menu__container"),
157
157
  {
158
- verticalOffset: K
158
+ verticalOffset: I
159
159
  }
160
160
  );
161
- this.style.setProperty("--sbb-menu-position-x", `${t.left}px`), this.style.setProperty("--sbb-menu-position-y", `${t.top}px`), this.style.setProperty("--sbb-menu-max-height", t.maxHeight);
161
+ this.style.setProperty("--sbb-menu-position-x", `${e.left}px`), this.style.setProperty("--sbb-menu-position-y", `${e.top}px`), this.style.setProperty("--sbb-menu-max-height", e.maxHeight);
162
162
  }
163
163
  render() {
164
164
  return l`
165
165
  <div class="sbb-menu__container">
166
166
  <div
167
- @animationend=${(t) => this.u(t)}
167
+ @animationend=${(e) => this._onMenuAnimationEnd(e)}
168
168
  class="sbb-menu"
169
- ${f((t) => this.c = t)}
169
+ ${_((e) => this._menu = e)}
170
170
  >
171
171
  <div
172
- @click=${(t) => this.t(t)}
172
+ @click=${(e) => this._closeOnInteractiveElementClick(e)}
173
173
  class="sbb-menu__content"
174
174
  >
175
175
  ${this.listChildren.length ? this.renderList({ class: "sbb-menu-list", ariaLabel: this.listAccessibilityLabel }) : l`<slot></slot>`}
@@ -181,13 +181,13 @@ let z = 0, r = class extends L(E) {
181
181
  };
182
182
  r.styles = T;
183
183
  b([
184
- p()
184
+ g()
185
185
  ], r.prototype, "trigger", 1);
186
186
  b([
187
- p({ attribute: "list-accessibility-label" })
187
+ g({ attribute: "list-accessibility-label" })
188
188
  ], r.prototype, "listAccessibilityLabel", 2);
189
189
  r = b([
190
- g("sbb-menu")
190
+ p("sbb-menu")
191
191
  ], r);
192
192
  export {
193
193
  r as SbbMenuElement
@@ -1,40 +1,40 @@
1
- import { property as a } from "lit/decorators.js";
1
+ import { property as e } from "lit/decorators.js";
2
2
  import { html as b } from "lit/static-html.js";
3
3
  import { SbbConnectedAbortController as r } from "../core/controllers.js";
4
4
  import { css as l } from "lit";
5
5
  import "../icon.js";
6
6
  const c = l`*,:before,:after{box-sizing:border-box}:host{--sbb-navigation-action-color: var(--sbb-color-cloud);--sbb-navigation-action-icon-display: none;display:block;outline:none!important}:host([data-section-action][data-action-active].sbb-active){--sbb-navigation-action-icon-display: block}:host([data-action-active]){--sbb-navigation-action-color: var(--sbb-color-storm)}@media (forced-colors: active){:host([data-action-active]){--sbb-navigation-action-color: Highlight}}sbb-icon{display:var(--sbb-navigation-action-icon-display);position:absolute;inset-inline-start:calc((var(--sbb-size-icon-ui-small) + var(--sbb-spacing-fixed-1x)) * -1);inset-block-start:calc(1em * var(--sbb-typo-line-height-body-text) / 2);transform:translateY(-50%)}@media (any-hover: hover){:host(:hover){--sbb-navigation-action-color: var(--sbb-color-storm)}}@media (forced-colors: active){:host([role=button]){--sbb-navigation-action-color: ButtonText}}:is(.sbb-navigation-button,.sbb-navigation-link){--sbb-title-line-height: var(--sbb-typo-line-height-titles);--sbb-title-margin-block-start: 0;--sbb-title-margin-block-end: 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;margin-block:var(--sbb-title-margin-block-start) var(--sbb-title-margin-block-end);font-family:var(--sbb-typo-font-family);font-weight:700;line-height:var(--sbb-title-line-height);letter-spacing:var(--sbb-typo-letter-spacing-titles);font-size:var(--sbb-title-font-size);--sbb-title-font-size: var(--sbb-font-size-title-4);cursor:pointer;position:relative;text-decoration:none;display:flex;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:color var(--sbb-disable-animation-zero-time, var(--sbb-animation-duration-3x)) ease;-webkit-hyphens:auto;hyphens:auto;text-align:left;color:var(--sbb-navigation-action-color);outline:none}@media (forced-colors: active){:is(.sbb-navigation-button,.sbb-navigation-link){transition:none}}:host([size=m]) :is(.sbb-navigation-button,.sbb-navigation-link){--sbb-text-font-size: var(--sbb-font-size-text-s);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);font-weight:700}:host([size=s]) :is(.sbb-navigation-button,.sbb-navigation-link){--sbb-text-font-size: var(--sbb-font-size-text-xxs);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);font-weight:700}:host(:focus-visible:not([data-focus-origin=mouse],[data-focus-origin=touch])) :is(.sbb-navigation-button,.sbb-navigation-link),:host(:not([data-focus-origin=mouse],[data-focus-origin=touch])) :is(.sbb-navigation-button,.sbb-navigation-link):focus-visible{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) solid var(--sbb-focus-outline-width);border-radius:calc(var(--sbb-border-radius-4x) - var(--sbb-focus-outline-offset))}`;
7
- var h = Object.defineProperty, v = (n, i, o, g) => {
8
- for (var t = void 0, s = n.length - 1, e; s >= 0; s--)
9
- (e = n[s]) && (t = e(i, o, t) || t);
10
- return t && h(i, o, t), t;
7
+ var v = Object.defineProperty, g = (a, i, o, h) => {
8
+ for (var t = void 0, n = a.length - 1, s; n >= 0; n--)
9
+ (s = a[n]) && (t = s(i, o, t) || t);
10
+ return t && v(i, o, t), t;
11
11
  };
12
- const y = (n) => {
13
- const o = class o extends n {
12
+ const y = (a) => {
13
+ const o = class o extends a {
14
14
  constructor() {
15
- super(...arguments), this.size = "l", this.c = new r(this), this.a = null, this.b = null;
15
+ super(...arguments), this.size = "l", this._abort = new r(this), this._navigationMarker = null, this._navigationSection = null;
16
16
  }
17
17
  /** The navigation marker in which the action is nested. */
18
18
  get marker() {
19
- return this.a;
19
+ return this._navigationMarker;
20
20
  }
21
21
  /** The section in which the action is nested. */
22
22
  get section() {
23
- return this.b;
23
+ return this._navigationSection;
24
24
  }
25
25
  connectedCallback() {
26
26
  super.connectedCallback();
27
- const t = this.c.signal;
27
+ const t = this._abort.signal;
28
28
  this.addEventListener(
29
29
  "click",
30
30
  () => {
31
- var s;
32
- !this.hasAttribute("data-action-active") && this.a && !this.connectedSection && ((s = this.marker) == null || s.select(
31
+ var n;
32
+ !this.hasAttribute("data-action-active") && this._navigationMarker && !this.connectedSection && ((n = this.marker) == null || n.select(
33
33
  this
34
34
  ));
35
35
  },
36
36
  { signal: t }
37
- ), this.a = this.closest("sbb-navigation-marker"), this.b = this.closest("sbb-navigation-section"), this.toggleAttribute("data-section-action", !!this.b);
37
+ ), this._navigationMarker = this.closest("sbb-navigation-marker"), this._navigationSection = this.closest("sbb-navigation-section"), this.toggleAttribute("data-section-action", !!this._navigationSection);
38
38
  }
39
39
  renderTemplate() {
40
40
  return b`<sbb-icon name="dash-small"></sbb-icon> <slot></slot>`;
@@ -42,8 +42,8 @@ const y = (n) => {
42
42
  };
43
43
  o.styles = c;
44
44
  let i = o;
45
- return v([
46
- a({ reflect: !0 })
45
+ return g([
46
+ e({ reflect: !0 })
47
47
  ], i.prototype, "size"), i;
48
48
  };
49
49
  export {
@@ -1,77 +1,77 @@
1
- import { css as l, LitElement as v } from "lit";
2
- import { property as g, state as c, customElement as h } from "lit/decorators.js";
1
+ import { css as c, LitElement as l } from "lit";
2
+ import { property as v, state as g, customElement as h } from "lit/decorators.js";
3
3
  import { SbbNamedSlotListMixin as d } from "../core/mixins.js";
4
- import { AgnosticResizeObserver as m } from "../core/observers.js";
5
- const p = l`*,:before,:after{box-sizing:border-box}:host{--sbb-navigation-action-gap: var(--sbb-spacing-responsive-xs);--sbb-navigation-marker-position-x: var(--sbb-spacing-fixed-1x);--sbb-navigation-marker-position-y: unset;--sbb-navigation-marker-width: 1.0625rem;--sbb-navigation-marker-border: var(--sbb-border-width-1x);--sbb-navigation-marker-padding-inline-start: var(--sbb-spacing-fixed-6x);--sbb-navigation-marker-typo-line-height: var(--sbb-typo-line-height-titles);--sbb-navigation-margin-inline-start: var(--sbb-spacing-fixed-3x);--sbb-navigation-marker-margin-block: calc( 1em * var(--sbb-navigation-marker-typo-line-height) / 2 - var(--sbb-navigation-marker-border) / 2 );display:block}:host([size=s]){--sbb-navigation-action-gap: var(--sbb-spacing-fixed-2x);--sbb-navigation-marker-width: .5rem;--sbb-navigation-marker-typo-line-height: var(--sbb-typo-line-height-body-text);--sbb-navigation-margin-inline-start: var(--sbb-spacing-fixed-2x);--sbb-navigation-marker-position-x: calc( var(--sbb-navigation-marker-padding-inline-start) - var(--sbb-spacing-fixed-2x) );--sbb-navigation-marker-padding-inline-start: calc( var(--sbb-spacing-fixed-6x) + var(--sbb-spacing-fixed-1x) )}.sbb-navigation-marker{list-style:none;padding:0;font-size:inherit;--sbb-title-line-height: var(--sbb-typo-line-height-titles);--sbb-title-margin-block-start: 0;--sbb-title-margin-block-end: 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;margin-block:var(--sbb-title-margin-block-start) var(--sbb-title-margin-block-end);font-family:var(--sbb-typo-font-family);font-weight:700;line-height:var(--sbb-title-line-height);letter-spacing:var(--sbb-typo-letter-spacing-titles);font-size:var(--sbb-title-font-size);--sbb-title-font-size: var(--sbb-font-size-title-4);position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:var(--sbb-navigation-action-gap);padding-inline-start:var(--sbb-navigation-marker-padding-inline-start)}.sbb-navigation-marker:before{content:"";position:absolute;opacity:0;inset-inline-start:var(--sbb-navigation-marker-position-x);inset-block-start:var(--sbb-navigation-marker-position-y);width:var(--sbb-navigation-marker-width);border-block-start:var(--sbb-navigation-marker-border) solid var(--sbb-color-storm);margin-block:var(--sbb-navigation-marker-margin-block);transition-duration:var(--sbb-disable-animation-zero-time, var(--sbb-animation-duration-6x));transition-timing-function:ease;transition-property:opacity,inset-block-start}:host([data-has-active-action]) .sbb-navigation-marker:before{opacity:1}@media (forced-colors: active){.sbb-navigation-marker:before{border-color:CanvasText}}:host([size=s]) .sbb-navigation-marker{--sbb-text-font-size: var(--sbb-font-size-text-xxs);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);font-weight:700}::slotted(:is(sbb-navigation-button,sbb-navigation-link)){margin-inline-start:var(--sbb-navigation-margin-inline-start)}`;
6
- var f = Object.defineProperty, k = Object.getOwnPropertyDescriptor, b = (t, i, n, a) => {
7
- for (var e = a > 1 ? void 0 : a ? k(i, n) : i, r = t.length - 1, o; r >= 0; r--)
8
- (o = t[r]) && (e = (a ? o(i, n, e) : o(e)) || e);
9
- return a && e && f(i, n, e), e;
4
+ import { AgnosticResizeObserver as p } from "../core/observers.js";
5
+ const m = c`*,:before,:after{box-sizing:border-box}:host{--sbb-navigation-action-gap: var(--sbb-spacing-responsive-xs);--sbb-navigation-marker-position-x: var(--sbb-spacing-fixed-1x);--sbb-navigation-marker-position-y: unset;--sbb-navigation-marker-width: 1.0625rem;--sbb-navigation-marker-border: var(--sbb-border-width-1x);--sbb-navigation-marker-padding-inline-start: var(--sbb-spacing-fixed-6x);--sbb-navigation-marker-typo-line-height: var(--sbb-typo-line-height-titles);--sbb-navigation-margin-inline-start: var(--sbb-spacing-fixed-3x);--sbb-navigation-marker-margin-block: calc( 1em * var(--sbb-navigation-marker-typo-line-height) / 2 - var(--sbb-navigation-marker-border) / 2 );display:block}:host([size=s]){--sbb-navigation-action-gap: var(--sbb-spacing-fixed-2x);--sbb-navigation-marker-width: .5rem;--sbb-navigation-marker-typo-line-height: var(--sbb-typo-line-height-body-text);--sbb-navigation-margin-inline-start: var(--sbb-spacing-fixed-2x);--sbb-navigation-marker-position-x: calc( var(--sbb-navigation-marker-padding-inline-start) - var(--sbb-spacing-fixed-2x) );--sbb-navigation-marker-padding-inline-start: calc( var(--sbb-spacing-fixed-6x) + var(--sbb-spacing-fixed-1x) )}.sbb-navigation-marker{list-style:none;padding:0;font-size:inherit;--sbb-title-line-height: var(--sbb-typo-line-height-titles);--sbb-title-margin-block-start: 0;--sbb-title-margin-block-end: 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;margin-block:var(--sbb-title-margin-block-start) var(--sbb-title-margin-block-end);font-family:var(--sbb-typo-font-family);font-weight:700;line-height:var(--sbb-title-line-height);letter-spacing:var(--sbb-typo-letter-spacing-titles);font-size:var(--sbb-title-font-size);--sbb-title-font-size: var(--sbb-font-size-title-4);position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:var(--sbb-navigation-action-gap);padding-inline-start:var(--sbb-navigation-marker-padding-inline-start)}.sbb-navigation-marker:before{content:"";position:absolute;opacity:0;inset-inline-start:var(--sbb-navigation-marker-position-x);inset-block-start:var(--sbb-navigation-marker-position-y);width:var(--sbb-navigation-marker-width);border-block-start:var(--sbb-navigation-marker-border) solid var(--sbb-color-storm);margin-block:var(--sbb-navigation-marker-margin-block);transition-duration:var(--sbb-disable-animation-zero-time, var(--sbb-animation-duration-6x));transition-timing-function:ease;transition-property:opacity,inset-block-start}:host([data-has-active-action]) .sbb-navigation-marker:before{opacity:1}@media (forced-colors: active){.sbb-navigation-marker:before{border-color:CanvasText}}:host([size=s]) .sbb-navigation-marker{--sbb-text-font-size: var(--sbb-font-size-text-xxs);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);font-weight:700}::slotted(:is(sbb-navigation-button,sbb-navigation-link)){margin-inline-start:var(--sbb-navigation-margin-inline-start)}`;
6
+ var f = Object.defineProperty, k = Object.getOwnPropertyDescriptor, b = (t, i, n, e) => {
7
+ for (var a = e > 1 ? void 0 : e ? k(i, n) : i, s = t.length - 1, o; s >= 0; s--)
8
+ (o = t[s]) && (a = (e ? o(i, n, a) : o(a)) || a);
9
+ return e && a && f(i, n, a), a;
10
10
  };
11
- let s = class extends d(v) {
11
+ let r = class extends d(l) {
12
12
  constructor() {
13
13
  super(...arguments), this.listChildLocalNames = [
14
14
  "sbb-navigation-button",
15
15
  "sbb-navigation-link"
16
- ], this.size = "l", this.c = new m(
17
- () => this.b()
16
+ ], this.size = "l", this._navigationMarkerResizeObserver = new p(
17
+ () => this._setMarkerPosition()
18
18
  );
19
19
  }
20
20
  willUpdate(t) {
21
- super.willUpdate(t), (t.has("size") || t.has("listChildren")) && this.d(), this.toggleAttribute("data-has-active-action", !!this.a);
21
+ super.willUpdate(t), (t.has("size") || t.has("listChildren")) && this._updateMarkerActions(), this.toggleAttribute("data-has-active-action", !!this._currentActiveAction);
22
22
  }
23
- d() {
23
+ _updateMarkerActions() {
24
24
  for (const t of this.listChildren)
25
25
  t.size = this.size;
26
- this.a = this.listChildren.find(
26
+ this._currentActiveAction = this.listChildren.find(
27
27
  (t) => t.hasAttribute("data-action-active")
28
- ), this.b();
28
+ ), this._setMarkerPosition();
29
29
  }
30
30
  connectedCallback() {
31
- super.connectedCallback(), this.c.observe(this), this.e();
31
+ super.connectedCallback(), this._navigationMarkerResizeObserver.observe(this), this._checkActiveAction();
32
32
  }
33
- e() {
33
+ _checkActiveAction() {
34
34
  const t = this.querySelector(
35
35
  ":is(sbb-navigation-button, sbb-navigation-link).sbb-active"
36
36
  );
37
37
  t && this.select(t);
38
38
  }
39
39
  disconnectedCallback() {
40
- super.disconnectedCallback(), this.c.disconnect();
40
+ super.disconnectedCallback(), this._navigationMarkerResizeObserver.disconnect();
41
41
  }
42
42
  select(t) {
43
- t && (this.reset(), t.toggleAttribute("data-action-active", !0), this.a = t, setTimeout(() => this.b()));
43
+ t && (this.reset(), t.toggleAttribute("data-action-active", !0), this._currentActiveAction = t, setTimeout(() => this._setMarkerPosition()));
44
44
  }
45
45
  firstUpdated(t) {
46
- super.firstUpdated(t), setTimeout(() => this.b());
46
+ super.firstUpdated(t), setTimeout(() => this._setMarkerPosition());
47
47
  }
48
48
  reset() {
49
49
  var t;
50
- this.a && (this.a.removeAttribute("data-action-active"), (t = this.a.connectedSection) == null || t.close(), this.a = void 0);
50
+ this._currentActiveAction && (this._currentActiveAction.removeAttribute("data-action-active"), (t = this._currentActiveAction.connectedSection) == null || t.close(), this._currentActiveAction = void 0);
51
51
  }
52
- b() {
53
- var n, a;
54
- if (!this.a)
52
+ _setMarkerPosition() {
53
+ var n, e;
54
+ if (!this._currentActiveAction)
55
55
  return;
56
- const t = this.listChildren.indexOf(this.a), i = (n = this.shadowRoot.querySelector(
56
+ const t = this.listChildren.indexOf(this._currentActiveAction), i = (n = this.shadowRoot.querySelector(
57
57
  `li:nth-child(${t + 1})`
58
58
  )) == null ? void 0 : n.offsetTop;
59
- i != null && ((a = this.style) == null || a.setProperty("--sbb-navigation-marker-position-y", `${i}px`));
59
+ i != null && ((e = this.style) == null || e.setProperty("--sbb-navigation-marker-position-y", `${i}px`));
60
60
  }
61
61
  render() {
62
62
  return this.renderList();
63
63
  }
64
64
  };
65
- s.styles = p;
65
+ r.styles = m;
66
66
  b([
67
- g({ reflect: !0 })
68
- ], s.prototype, "size", 2);
67
+ v({ reflect: !0 })
68
+ ], r.prototype, "size", 2);
69
69
  b([
70
- c()
71
- ], s.prototype, "a", 2);
72
- s = b([
70
+ g()
71
+ ], r.prototype, "_currentActiveAction", 2);
72
+ r = b([
73
73
  h("sbb-navigation-marker")
74
- ], s);
74
+ ], r);
75
75
  export {
76
- s as SbbNavigationMarkerElement
76
+ r as SbbNavigationMarkerElement
77
77
  };