@sbb-esta/lyne-elements 3.10.0 → 3.12.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 (267) hide show
  1. package/action-group/action-group.component.js +1 -1
  2. package/alert/alert/alert.component.js +1 -1
  3. package/autocomplete/autocomplete-base-element.d.ts +5 -0
  4. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  5. package/autocomplete/autocomplete-base-element.js +72 -59
  6. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +1 -1
  7. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +1 -1
  8. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +1 -1
  9. package/badge.css +1 -0
  10. package/breadcrumb/breadcrumb/breadcrumb.component.js +4 -4
  11. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  12. package/button/common.js +1 -1
  13. package/button/mini-button/mini-button.component.js +1 -1
  14. package/button.js +1 -1
  15. package/calendar/calendar.component.d.ts +2 -1
  16. package/calendar/calendar.component.d.ts.map +1 -1
  17. package/calendar/calendar.component.js +1 -1
  18. package/card/card/card.component.js +1 -1
  19. package/card/card-badge/card-badge.component.js +1 -1
  20. package/carousel/carousel-list/carousel-list.component.d.ts +8 -3
  21. package/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  22. package/carousel/carousel-list/carousel-list.component.js +62 -40
  23. package/checkbox/checkbox-group/checkbox-group.component.js +1 -1
  24. package/chip/chip/chip.component.js +1 -1
  25. package/chip/chip-group/chip-group.component.js +1 -1
  26. package/chip-label/chip-label.component.js +1 -1
  27. package/container/container/container.component.js +11 -11
  28. package/container/sticky-bar/sticky-bar.component.js +9 -9
  29. package/core/controllers/escapable-overlay-controller.d.ts +3 -0
  30. package/core/controllers/escapable-overlay-controller.d.ts.map +1 -1
  31. package/core/controllers/overlay-position-controller.d.ts +60 -0
  32. package/core/controllers/overlay-position-controller.d.ts.map +1 -0
  33. package/core/controllers/overlay-position-controller.js +224 -0
  34. package/core/controllers.d.ts +1 -0
  35. package/core/controllers.d.ts.map +1 -1
  36. package/core/controllers.js +12 -10
  37. package/core/mixins.js +1 -1
  38. package/core/overlay/overlay-option-panel.d.ts +2 -1
  39. package/core/overlay/overlay-option-panel.d.ts.map +1 -1
  40. package/core/overlay/overlay-option-panel.js +8 -5
  41. package/core/overlay/position.d.ts +2 -0
  42. package/core/overlay/position.d.ts.map +1 -1
  43. package/core/overlay/position.js +19 -17
  44. package/core/styles/core.scss +27 -2
  45. package/core/styles/layout.scss +4 -0
  46. package/core/styles/mixins/badge.scss +3 -0
  47. package/core/styles/mixins/layout.scss +5 -4
  48. package/core/styles/mixins/link.scss +0 -11
  49. package/core.css +21 -2
  50. package/custom-elements.json +2024 -417
  51. package/date-input/date-input.component.js +1 -1
  52. package/datepicker/datepicker-next-day/datepicker-next-day.component.js +1 -1
  53. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +1 -1
  54. package/datepicker/datepicker-toggle/datepicker-toggle.component.js +1 -1
  55. package/development/autocomplete/autocomplete-base-element.d.ts +5 -0
  56. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  57. package/development/autocomplete/autocomplete-base-element.js +25 -5
  58. package/development/breadcrumb/breadcrumb/breadcrumb.component.js +1 -2
  59. package/development/calendar/calendar.component.d.ts +2 -1
  60. package/development/calendar/calendar.component.d.ts.map +1 -1
  61. package/development/calendar/calendar.component.js +1 -1
  62. package/development/carousel/carousel-list/carousel-list.component.d.ts +8 -3
  63. package/development/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  64. package/development/carousel/carousel-list/carousel-list.component.js +51 -19
  65. package/development/container/container/container.component.js +3 -3
  66. package/development/container/sticky-bar/sticky-bar.component.js +5 -5
  67. package/development/core/controllers/escapable-overlay-controller.d.ts +3 -0
  68. package/development/core/controllers/escapable-overlay-controller.d.ts.map +1 -1
  69. package/development/core/controllers/escapable-overlay-controller.js +1 -1
  70. package/development/core/controllers/overlay-position-controller.d.ts +60 -0
  71. package/development/core/controllers/overlay-position-controller.d.ts.map +1 -0
  72. package/development/core/controllers/overlay-position-controller.js +306 -0
  73. package/development/core/controllers.d.ts +1 -0
  74. package/development/core/controllers.d.ts.map +1 -1
  75. package/development/core/controllers.js +3 -1
  76. package/development/core/overlay/overlay-option-panel.d.ts +2 -1
  77. package/development/core/overlay/overlay-option-panel.d.ts.map +1 -1
  78. package/development/core/overlay/overlay-option-panel.js +6 -3
  79. package/development/core/overlay/position.d.ts +2 -0
  80. package/development/core/overlay/position.d.ts.map +1 -1
  81. package/development/core/overlay/position.js +3 -2
  82. package/development/footer/footer.component.js +3 -3
  83. package/development/header/header/header.component.js +3 -3
  84. package/development/lead-container/lead-container.component.js +8 -7
  85. package/development/link/common/block-link-common.js +2 -12
  86. package/development/link/common/inline-link-common.js +2 -10
  87. package/development/link/common/link-common.js +1 -1
  88. package/development/link/common.js +1 -1
  89. package/development/{link-common-DPLJx5Uo.js → link-common-BDFF9Oiz.js} +1 -3
  90. package/development/link-list/link-list-anchor/link-list-anchor.component.js +1 -2
  91. package/development/link.js +1 -1
  92. package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts +35 -0
  93. package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -0
  94. package/development/mini-calendar/mini-calendar/mini-calendar.component.js +199 -0
  95. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts +23 -0
  96. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts.map +1 -0
  97. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +181 -0
  98. package/development/mini-calendar/mini-calendar-day.d.ts +5 -0
  99. package/development/mini-calendar/mini-calendar-day.d.ts.map +1 -0
  100. package/development/mini-calendar/mini-calendar-day.js +5 -0
  101. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts +25 -0
  102. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts.map +1 -0
  103. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +123 -0
  104. package/development/mini-calendar/mini-calendar-month.d.ts +5 -0
  105. package/development/mini-calendar/mini-calendar-month.d.ts.map +1 -0
  106. package/development/mini-calendar/mini-calendar-month.js +5 -0
  107. package/development/mini-calendar/mini-calendar.d.ts +5 -0
  108. package/development/mini-calendar/mini-calendar.d.ts.map +1 -0
  109. package/development/mini-calendar/mini-calendar.js +5 -0
  110. package/development/mini-calendar.d.ts +7 -0
  111. package/development/mini-calendar.d.ts.map +1 -0
  112. package/development/mini-calendar.js +9 -0
  113. package/development/paginator/common/paginator-common.d.ts +2 -1
  114. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  115. package/development/paginator/common/paginator-common.js +87 -49
  116. package/development/paginator/compact-paginator/compact-paginator.component.d.ts.map +1 -1
  117. package/development/paginator/compact-paginator/compact-paginator.component.js +3 -2
  118. package/development/paginator/paginator/paginator.component.d.ts +6 -0
  119. package/development/paginator/paginator/paginator.component.d.ts.map +1 -1
  120. package/development/paginator/paginator/paginator.component.js +19 -4
  121. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +4 -1
  122. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
  123. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +5 -1
  124. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts +4 -1
  125. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts.map +1 -1
  126. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.js +5 -1
  127. package/development/tabs/tab/tab.component.d.ts +9 -0
  128. package/development/tabs/tab/tab.component.d.ts.map +1 -1
  129. package/development/tabs/tab/tab.component.js +48 -7
  130. package/development/tabs/tab-group/tab-group.component.d.ts +7 -3
  131. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  132. package/development/tabs/tab-group/tab-group.component.js +19 -39
  133. package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  134. package/development/tabs/tab-label/tab-label.component.js +4 -3
  135. package/development/tag/tag/tag.component.js +2 -1
  136. package/development/tooltip/tooltip.component.d.ts +11 -4
  137. package/development/tooltip/tooltip.component.d.ts.map +1 -1
  138. package/development/tooltip/tooltip.component.js +57 -78
  139. package/dialog/dialog/dialog.component.js +1 -1
  140. package/dialog/dialog-actions/dialog-actions.component.js +1 -1
  141. package/expansion-panel/expansion-panel/expansion-panel.component.js +1 -1
  142. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +1 -1
  143. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  144. package/file-selector/common.js +1 -1
  145. package/file-selector-common-BEWjyy75.js +5 -0
  146. package/file-selector.js +1 -1
  147. package/flip-card/flip-card/flip-card.component.js +1 -1
  148. package/flip-card/flip-card-summary/flip-card-summary.component.js +1 -1
  149. package/footer/footer.component.js +8 -8
  150. package/form-error/form-error.component.js +1 -1
  151. package/form-field/form-field/form-field.component.js +1 -1
  152. package/form-field/form-field-clear/form-field-clear.component.js +1 -1
  153. package/header/common/header-action-common.js +1 -1
  154. package/header/header/header.component.js +32 -32
  155. package/icon-sidebar-button-common-XcKoF2SP.js +7 -0
  156. package/index.d.ts +6 -0
  157. package/index.js +6 -0
  158. package/layout.css +9 -3
  159. package/lead-container/lead-container.component.js +8 -8
  160. package/link/common/block-link-common.js +25 -25
  161. package/link/common/inline-link-common.js +7 -7
  162. package/link/common/link-common.js +1 -1
  163. package/link/common.js +1 -1
  164. package/link-common-nA3q92jp.js +46 -0
  165. package/link-list/link-list/link-list.component.js +1 -1
  166. package/link-list/link-list-anchor/link-list-anchor.component.js +5 -5
  167. package/link.js +1 -1
  168. package/loading-indicator-circle/loading-indicator-circle.component.js +1 -1
  169. package/logo/logo.component.js +1 -1
  170. package/map-container/map-container.component.js +1 -1
  171. package/menu/common/menu-action-common.js +1 -1
  172. package/menu/menu/menu.component.js +1 -1
  173. package/mini-calendar/mini-calendar/mini-calendar.component.d.ts +35 -0
  174. package/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -0
  175. package/mini-calendar/mini-calendar/mini-calendar.component.js +129 -0
  176. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts +23 -0
  177. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts.map +1 -0
  178. package/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +66 -0
  179. package/mini-calendar/mini-calendar-day.d.ts +5 -0
  180. package/mini-calendar/mini-calendar-day.d.ts.map +1 -0
  181. package/mini-calendar/mini-calendar-day.js +4 -0
  182. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts +25 -0
  183. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts.map +1 -0
  184. package/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +59 -0
  185. package/mini-calendar/mini-calendar-month.d.ts +5 -0
  186. package/mini-calendar/mini-calendar-month.d.ts.map +1 -0
  187. package/mini-calendar/mini-calendar-month.js +4 -0
  188. package/mini-calendar/mini-calendar.d.ts +5 -0
  189. package/mini-calendar/mini-calendar.d.ts.map +1 -0
  190. package/mini-calendar/mini-calendar.js +4 -0
  191. package/mini-calendar.d.ts +7 -0
  192. package/mini-calendar.d.ts.map +1 -0
  193. package/mini-calendar.js +8 -0
  194. package/navigation/common/navigation-action-common.js +1 -1
  195. package/navigation/navigation/navigation.component.js +1 -1
  196. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  197. package/navigation/navigation-section/navigation-section.component.js +1 -1
  198. package/notification/notification.component.js +1 -1
  199. package/off-brand-theme.css +31 -5
  200. package/option/option/option.component.js +1 -1
  201. package/overlay/overlay.component.js +1 -1
  202. package/package.json +21 -1
  203. package/paginator/common/paginator-common.d.ts +2 -1
  204. package/paginator/common/paginator-common.d.ts.map +1 -1
  205. package/paginator/common/paginator-common.js +102 -81
  206. package/paginator/compact-paginator/compact-paginator.component.d.ts.map +1 -1
  207. package/paginator/compact-paginator/compact-paginator.component.js +2 -1
  208. package/paginator/paginator/paginator.component.d.ts +6 -0
  209. package/paginator/paginator/paginator.component.d.ts.map +1 -1
  210. package/paginator/paginator/paginator.component.js +57 -45
  211. package/popover/popover/popover.component.js +1 -1
  212. package/popover/popover-trigger/popover-trigger.component.js +1 -1
  213. package/radio-button/common.js +1 -1
  214. package/radio-button/radio-button-group/radio-button-group.component.js +1 -1
  215. package/radio-button-common-Bw2t3Sxz.js +5 -0
  216. package/radio-button.js +1 -1
  217. package/safety-theme.css +31 -5
  218. package/select/select.component.js +1 -1
  219. package/selection-expansion-panel/selection-expansion-panel.component.js +1 -1
  220. package/sidebar/common.js +1 -1
  221. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +4 -1
  222. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
  223. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +9 -6
  224. package/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts +4 -1
  225. package/sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts.map +1 -1
  226. package/sidebar/icon-sidebar-link/icon-sidebar-link.component.js +13 -10
  227. package/sidebar/sidebar-container/sidebar-container.component.js +1 -1
  228. package/sidebar.js +1 -1
  229. package/signet/signet.component.js +1 -1
  230. package/slider/slider.component.js +1 -1
  231. package/standard-theme.css +31 -5
  232. package/stepper/step-label/step-label.component.js +1 -1
  233. package/stepper/stepper/stepper.component.js +1 -1
  234. package/tabs/tab/tab.component.d.ts +9 -0
  235. package/tabs/tab/tab.component.d.ts.map +1 -1
  236. package/tabs/tab/tab.component.js +37 -18
  237. package/tabs/tab-group/tab-group.component.d.ts +7 -3
  238. package/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  239. package/tabs/tab-group/tab-group.component.js +51 -52
  240. package/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  241. package/tabs/tab-label/tab-label.component.js +12 -12
  242. package/tag/tag/tag.component.js +4 -4
  243. package/teaser/teaser.component.js +1 -1
  244. package/teaser-hero/teaser-hero.component.js +1 -1
  245. package/teaser-product/common.js +1 -1
  246. package/teaser-product/teaser-product/teaser-product.component.js +1 -1
  247. package/teaser-product-common-Du28QCY3.js +5 -0
  248. package/teaser-product.js +1 -1
  249. package/time-input/time-input.component.js +1 -1
  250. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  251. package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
  252. package/toggle/toggle/toggle.component.js +1 -1
  253. package/toggle-check/toggle-check.component.js +1 -1
  254. package/tooltip/tooltip.component.d.ts +11 -4
  255. package/tooltip/tooltip.component.d.ts.map +1 -1
  256. package/tooltip/tooltip.component.js +60 -84
  257. package/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  258. package/train/train-formation/train-formation.component.js +1 -1
  259. package/train/train-wagon/train-wagon.component.js +1 -1
  260. package/transparent-button-DJIkG5hj.js +9 -0
  261. package/visual-checkbox/visual-checkbox.component.js +1 -1
  262. package/file-selector-common-D88J9PEh.js +0 -5
  263. package/icon-sidebar-button-common-BeRXvifI.js +0 -7
  264. package/link-common-BBKGg9HN.js +0 -46
  265. package/radio-button-common-Nm9ULjVb.js +0 -5
  266. package/teaser-product-common-DIra6aVg.js +0 -5
  267. package/transparent-button-Bg9fU_iZ.js +0 -9
@@ -1,5 +1,4 @@
1
- import { PropertyValues } from '@lit/reactive-element';
2
- import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
1
+ import { CSSResultGroup, LitElement, TemplateResult } from 'lit';
3
2
  declare const SbbCarouselListElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbElementInternalsMixinType> & typeof LitElement & import('../../core/mixins.js').SbbElementInternalsConstructor;
4
3
  /**
5
4
  * It displays a list of `sbb-carousel-item` components.
@@ -10,15 +9,21 @@ export declare class SbbCarouselListElement extends SbbCarouselListElement_base
10
9
  static styles: CSSResultGroup;
11
10
  private _currentIndex;
12
11
  private _language;
12
+ private _observedCarouselItems;
13
13
  private _beforeShowObserver;
14
14
  private _showObserver;
15
+ private _firstVisibleIntersectionController;
15
16
  constructor();
16
17
  /** Gets the slotted items. */
17
18
  private _carouselItems;
18
19
  private _handleSlotchange;
20
+ /**
21
+ * Reads the dimensions of the first carousel item and sets the CSS properties accordingly.
22
+ * Should set the dimensions only once, when the first item becomes visible and if the value is non-zero.
23
+ */
24
+ private _readDimensions;
19
25
  private _onKeyDown;
20
26
  connectedCallback(): void;
21
- firstUpdated(_changedProperties: PropertyValues): void;
22
27
  protected render(): TemplateResult;
23
28
  }
24
29
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"carousel-list.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/carousel/carousel-list/carousel-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;;AAcvC;;;;GAIG;AACH,qBAEM,sBAAuB,SAAQ,2BAAoC;IACvE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAmC;IAEpD,OAAO,CAAC,mBAAmB,CAexB;IAEH,OAAO,CAAC,aAAa,CAuBlB;;IAQH,8BAA8B;IAC9B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,UAAU;IAsBF,iBAAiB,IAAI,IAAI;IAOzB,YAAY,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;cASnD,MAAM,IAAI,cAAc;CAG5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,mBAAmB,EAAE,sBAAsB,CAAC;KAC7C;CACF"}
1
+ {"version":3,"file":"carousel-list.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/carousel/carousel-list/carousel-list.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAkB,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;;AAc3F;;;;GAIG;AACH,qBAEM,sBAAuB,SAAQ,2BAAoC;IACvE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,sBAAsB,CAAgC;IAE9D,OAAO,CAAC,mBAAmB,CAgBxB;IAEH,OAAO,CAAC,aAAa,CAwBlB;IAGH,OAAO,CAAC,mCAAmC,CAYxC;;IAQH,8BAA8B;IAC9B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAoBzB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,UAAU;IAwBF,iBAAiB,IAAI,IAAI;cAOtB,MAAM,IAAI,cAAc;CAG5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,mBAAmB,EAAE,sBAAsB,CAAC;KAC7C;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { IntersectionController } from "@lit-labs/observers/intersection-controller.js";
3
- import { css, LitElement, html } from "lit";
3
+ import { css, LitElement, isServer, html } from "lit";
4
4
  import { customElement } from "lit/decorators.js";
5
5
  import { isArrowKeyPressed } from "../../core/a11y.js";
6
6
  import { SbbLanguageController } from "../../core/controllers.js";
@@ -16,7 +16,7 @@ const style = css`*,
16
16
  --sbb-carousel-list-border-radius: var(--sbb-border-radius-4x);
17
17
  display: flex;
18
18
  height: var(--sbb-carousel-list-height);
19
- width: var(--sbb-carousel-list-width);
19
+ width: var(--sbb-carousel-list-width, 0);
20
20
  overflow-x: auto;
21
21
  scroll-snap-type: x mandatory;
22
22
  scroll-behavior: smooth;
@@ -30,8 +30,8 @@ const style = css`*,
30
30
  outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
31
31
  content: "";
32
32
  position: absolute;
33
- height: var(--sbb-carousel-list-height);
34
- width: var(--sbb-carousel-list-width);
33
+ height: inherit;
34
+ width: inherit;
35
35
  border-start-start-radius: var(--sbb-carousel-list-border-radius);
36
36
  border-start-end-radius: var(--sbb-carousel-list-border-radius);
37
37
  border-end-start-radius: var(--sbb-carousel-inherit-border-radius);
@@ -49,7 +49,9 @@ let SbbCarouselListElement = (() => {
49
49
  super();
50
50
  this._currentIndex = 0;
51
51
  this._language = new SbbLanguageController(this);
52
+ this._observedCarouselItems = [];
52
53
  this._beforeShowObserver = new IntersectionController(this, {
54
+ target: null,
53
55
  callback: (entry) => {
54
56
  const item = entry.filter((e) => e.isIntersecting && e.target !== this);
55
57
  item.forEach((e) => {
@@ -64,6 +66,7 @@ let SbbCarouselListElement = (() => {
64
66
  config: { threshold: 0.01, root: this, rootMargin: "100% 0% 100% 0%" }
65
67
  });
66
68
  this._showObserver = new IntersectionController(this, {
69
+ target: null,
67
70
  callback: (entryArr) => {
68
71
  for (const entry of entryArr) {
69
72
  if (entry.target === this) {
@@ -85,6 +88,19 @@ let SbbCarouselListElement = (() => {
85
88
  },
86
89
  config: { threshold: 0.99, root: this, rootMargin: "100% 0% 100% 0%" }
87
90
  });
91
+ this._firstVisibleIntersectionController = new IntersectionController(this, {
92
+ callback: (entries) => {
93
+ entries.forEach((entry) => {
94
+ if (entry.intersectionRatio > 0) {
95
+ this._readDimensions();
96
+ this._firstVisibleIntersectionController.unobserve(this);
97
+ }
98
+ });
99
+ },
100
+ config: {
101
+ root: !isServer ? document?.documentElement : null
102
+ }
103
+ });
88
104
  this.addEventListener?.("keydown", (e) => this._onKeyDown(e));
89
105
  }
90
106
  /** Gets the slotted items. */
@@ -92,16 +108,37 @@ let SbbCarouselListElement = (() => {
92
108
  return Array.from(this.querySelectorAll?.("sbb-carousel-item") ?? []);
93
109
  }
94
110
  _handleSlotchange() {
95
- const children = Array.from(this.children);
96
- const childrenLength = children.length;
97
- children.forEach((item, index) => {
98
- item.ariaLabel ||= i18nCarouselItemAriaLabel(index + 1, childrenLength)[this._language.current];
111
+ this._observedCarouselItems.forEach((item) => {
112
+ this._beforeShowObserver.unobserve(item);
113
+ this._showObserver.unobserve(item);
114
+ });
115
+ const carouselItems = this._carouselItems();
116
+ carouselItems.forEach((item, index) => {
117
+ item.ariaLabel ||= i18nCarouselItemAriaLabel(index + 1, carouselItems.length)[this._language.current];
99
118
  item.ariaHidden = index === this._currentIndex ? null : "true";
100
119
  });
101
- const firstItem = children.find((el) => el.localName === "sbb-carousel-item");
102
- if (firstItem) {
120
+ this._readDimensions();
121
+ }
122
+ /**
123
+ * Reads the dimensions of the first carousel item and sets the CSS properties accordingly.
124
+ * Should set the dimensions only once, when the first item becomes visible and if the value is non-zero.
125
+ */
126
+ _readDimensions() {
127
+ const carouselItems = this._carouselItems();
128
+ if (carouselItems.length === 0) {
129
+ return;
130
+ }
131
+ const firstItem = carouselItems[0];
132
+ if (firstItem.clientHeight > 0) {
103
133
  this.style.setProperty("--sbb-carousel-list-height", `${firstItem.clientHeight}px`);
134
+ }
135
+ if (firstItem.clientWidth > 0) {
104
136
  this.style.setProperty("--sbb-carousel-list-width", `${firstItem.clientWidth}px`);
137
+ carouselItems.forEach((item) => {
138
+ this._beforeShowObserver.observe(item);
139
+ this._showObserver.observe(item);
140
+ });
141
+ this._observedCarouselItems = carouselItems;
105
142
  }
106
143
  }
107
144
  _onKeyDown(evt) {
@@ -119,7 +156,9 @@ let SbbCarouselListElement = (() => {
119
156
  }
120
157
  if (newIndex !== this._currentIndex) {
121
158
  this._currentIndex = newIndex;
122
- this.scrollTo({ left: this._carouselItems()[this._currentIndex].offsetLeft });
159
+ this.scrollTo({
160
+ left: this._carouselItems()[this._currentIndex].offsetLeft - this.offsetLeft
161
+ });
123
162
  }
124
163
  }
125
164
  connectedCallback() {
@@ -127,13 +166,6 @@ let SbbCarouselListElement = (() => {
127
166
  this.internals.ariaLive = "polite";
128
167
  this.internals.ariaAtomic = "true";
129
168
  }
130
- firstUpdated(_changedProperties) {
131
- super.firstUpdated(_changedProperties);
132
- this.querySelectorAll("sbb-carousel-item").forEach((item) => {
133
- this._beforeShowObserver.observe(item);
134
- this._showObserver.observe(item);
135
- });
136
- }
137
169
  render() {
138
170
  return html`<slot @slotchange=${this._handleSlotchange}></slot>`;
139
171
  }
@@ -148,4 +180,4 @@ let SbbCarouselListElement = (() => {
148
180
  export {
149
181
  SbbCarouselListElement
150
182
  };
151
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jYXJvdXNlbC9jYXJvdXNlbC1saXN0L2Nhcm91c2VsLWxpc3QuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdAbGl0L3JlYWN0aXZlLWVsZW1lbnQnO1xuaW1wb3J0IHsgSW50ZXJzZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvaW50ZXJzZWN0aW9uLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBpc0Fycm93S2V5UHJlc3NlZCB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGkxOG5DYXJvdXNlbEl0ZW1BcmlhTGFiZWwgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiRWxlbWVudEludGVybmFsc01peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUge1xuICBTYmJDYXJvdXNlbEl0ZW1FbGVtZW50LFxuICBTYmJDYXJvdXNlbEl0ZW1FdmVudERldGFpbCxcbn0gZnJvbSAnLi4vY2Fyb3VzZWwtaXRlbS9jYXJvdXNlbC1pdGVtLmNvbXBvbmVudC5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2Nhcm91c2VsLWxpc3Quc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIGxpc3Qgb2YgYHNiYi1jYXJvdXNlbC1pdGVtYCBjb21wb25lbnRzLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItY2Fyb3VzZWwtaXRlbWAgZWxlbWVudHMuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1jYXJvdXNlbC1saXN0JylcbmNsYXNzIFNiYkNhcm91c2VsTGlzdEVsZW1lbnQgZXh0ZW5kcyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIF9jdXJyZW50SW5kZXggPSAwO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHJpdmF0ZSBfYmVmb3JlU2hvd09ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgIGNhbGxiYWNrOiAoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBlbnRyeS5maWx0ZXIoKGUpID0+IGUuaXNJbnRlcnNlY3RpbmcgJiYgZS50YXJnZXQgIT09IHRoaXMpO1xuICAgICAgaXRlbS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIFNiYkNhcm91c2VsSXRlbUVsZW1lbnQ7XG4gICAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudDxTYmJDYXJvdXNlbEl0ZW1FdmVudERldGFpbD4oJ2JlZm9yZXNob3cnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgaW5kZXg6IHRoaXMuX2Nhcm91c2VsSXRlbXMoKS5maW5kSW5kZXgoKGUpID0+IGUgPT09IHRhcmdldCkgfSxcbiAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY29uZmlnOiB7IHRocmVzaG9sZDogMC4wMSwgcm9vdDogdGhpcywgcm9vdE1hcmdpbjogJzEwMCUgMCUgMTAwJSAwJScgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfc2hvd09ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgIGNhbGxiYWNrOiAoZW50cnlBcnIpID0+IHtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cnlBcnIpIHtcbiAgICAgICAgaWYgKGVudHJ5LnRhcmdldCA9PT0gdGhpcykge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGVudHJ5LnRhcmdldCBhcyBTYmJDYXJvdXNlbEl0ZW1FbGVtZW50O1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0YXJnZXQuYXJpYUhpZGRlbiA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY3VycmVudEluZGV4ID0gdGhpcy5fY2Fyb3VzZWxJdGVtcygpLmZpbmRJbmRleCgoZWwpID0+IGVsID09PSB0YXJnZXQpO1xuICAgICAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50PFNiYkNhcm91c2VsSXRlbUV2ZW50RGV0YWlsPignc2hvdycsIHtcbiAgICAgICAgICAgICAgZGV0YWlsOiB7IGluZGV4OiB0aGlzLl9jdXJyZW50SW5kZXggfSxcbiAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgY29tcG9zZWQ6IHRydWUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldC5hcmlhSGlkZGVuID0gJ3RydWUnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBjb25maWc6IHsgdGhyZXNob2xkOiAwLjk5LCByb290OiB0aGlzLCByb290TWFyZ2luOiAnMTAwJSAwJSAxMDAlIDAlJyB9LFxuICB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX29uS2V5RG93bihlKSk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgc2xvdHRlZCBpdGVtcy4gKi9cbiAgcHJpdmF0ZSBfY2Fyb3VzZWxJdGVtcygpOiBTYmJDYXJvdXNlbEl0ZW1FbGVtZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItY2Fyb3VzZWwtaXRlbScpID8/IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNsb3RjaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pIGFzIFNiYkNhcm91c2VsSXRlbUVsZW1lbnRbXTtcblxuICAgIC8vIFNldCB0aGUgYXJpYS1sYWJlbCBpZiBub3QgcHJvdmlkZWRcbiAgICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgaXRlbS5hcmlhTGFiZWwgfHw9IGkxOG5DYXJvdXNlbEl0ZW1BcmlhTGFiZWwoaW5kZXggKyAxLCBjaGlsZHJlbkxlbmd0aClbXG4gICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnRcbiAgICAgIF07XG4gICAgICBpdGVtLmFyaWFIaWRkZW4gPSBpbmRleCA9PT0gdGhpcy5fY3VycmVudEluZGV4ID8gbnVsbCA6ICd0cnVlJztcbiAgICB9KTtcblxuICAgIC8vIFNldCB0aGUgY29tcG9uZW50IGRpbWVuc2lvbnNcbiAgICBjb25zdCBmaXJzdEl0ZW0gPSBjaGlsZHJlbi5maW5kKFxuICAgICAgKGVsKSA9PiBlbC5sb2NhbE5hbWUgPT09ICdzYmItY2Fyb3VzZWwtaXRlbScsXG4gICAgKSBhcyBTYmJDYXJvdXNlbEl0ZW1FbGVtZW50O1xuICAgIGlmIChmaXJzdEl0ZW0pIHtcbiAgICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLWNhcm91c2VsLWxpc3QtaGVpZ2h0JywgYCR7Zmlyc3RJdGVtLmNsaWVudEhlaWdodH1weGApO1xuICAgICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItY2Fyb3VzZWwtbGlzdC13aWR0aCcsIGAke2ZpcnN0SXRlbS5jbGllbnRXaWR0aH1weGApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIWlzQXJyb3dLZXlQcmVzc2VkKGV2dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBsZXQgbmV3SW5kZXggPSB0aGlzLl9jdXJyZW50SW5kZXg7XG4gICAgY29uc3QgaXNQcmV2ID0gZXZ0LmtleSA9PT0gJ0Fycm93VXAnIHx8IGV2dC5rZXkgPT09ICdBcnJvd0xlZnQnO1xuICAgIGNvbnN0IGlzTmV4dCA9IGV2dC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2dC5rZXkgPT09ICdBcnJvd1JpZ2h0JztcblxuICAgIGlmIChpc1ByZXYpIHtcbiAgICAgIG5ld0luZGV4ID0gTWF0aC5tYXgoMCwgdGhpcy5fY3VycmVudEluZGV4IC0gMSk7XG4gICAgfSBlbHNlIGlmIChpc05leHQpIHtcbiAgICAgIG5ld0luZGV4ID0gTWF0aC5taW4odGhpcy5fY2Fyb3VzZWxJdGVtcygpLmxlbmd0aCAtIDEsIHRoaXMuX2N1cnJlbnRJbmRleCArIDEpO1xuICAgIH1cblxuICAgIGlmIChuZXdJbmRleCAhPT0gdGhpcy5fY3VycmVudEluZGV4KSB7XG4gICAgICB0aGlzLl9jdXJyZW50SW5kZXggPSBuZXdJbmRleDtcbiAgICAgIHRoaXMuc2Nyb2xsVG8oeyBsZWZ0OiB0aGlzLl9jYXJvdXNlbEl0ZW1zKClbdGhpcy5fY3VycmVudEluZGV4XS5vZmZzZXRMZWZ0IH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYUxpdmUgPSAncG9saXRlJztcbiAgICB0aGlzLmludGVybmFscy5hcmlhQXRvbWljID0gJ3RydWUnO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChfY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKF9jaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1jYXJvdXNlbC1pdGVtJykuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgdGhpcy5fYmVmb3JlU2hvd09ic2VydmVyLm9ic2VydmUoaXRlbSk7XG4gICAgICB0aGlzLl9zaG93T2JzZXJ2ZXIub2JzZXJ2ZShpdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PmA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jYXJvdXNlbC1saXN0JzogU2JiQ2Fyb3VzZWxMaXN0RWxlbWVudDtcbiAg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
183
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jYXJvdXNlbC9jYXJvdXNlbC1saXN0L2Nhcm91c2VsLWxpc3QuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVyc2VjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL2ludGVyc2VjdGlvbi1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGh0bWwsIGlzU2VydmVyLCBMaXRFbGVtZW50LCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaTE4bkNhcm91c2VsSXRlbUFyaWFMYWJlbCB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIFNiYkNhcm91c2VsSXRlbUVsZW1lbnQsXG4gIFNiYkNhcm91c2VsSXRlbUV2ZW50RGV0YWlsLFxufSBmcm9tICcuLi9jYXJvdXNlbC1pdGVtL2Nhcm91c2VsLWl0ZW0uY29tcG9uZW50LmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vY2Fyb3VzZWwtbGlzdC5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgbGlzdCBvZiBgc2JiLWNhcm91c2VsLWl0ZW1gIGNvbXBvbmVudHMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1jYXJvdXNlbC1pdGVtYCBlbGVtZW50cy5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNhcm91c2VsLWxpc3QnKVxuY2xhc3MgU2JiQ2Fyb3VzZWxMaXN0RWxlbWVudCBleHRlbmRzIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByaXZhdGUgX2N1cnJlbnRJbmRleCA9IDA7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZWRDYXJvdXNlbEl0ZW1zOiBTYmJDYXJvdXNlbEl0ZW1FbGVtZW50W10gPSBbXTtcblxuICBwcml2YXRlIF9iZWZvcmVTaG93T2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIGNhbGxiYWNrOiAoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBlbnRyeS5maWx0ZXIoKGUpID0+IGUuaXNJbnRlcnNlY3RpbmcgJiYgZS50YXJnZXQgIT09IHRoaXMpO1xuICAgICAgaXRlbS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIFNiYkNhcm91c2VsSXRlbUVsZW1lbnQ7XG4gICAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudDxTYmJDYXJvdXNlbEl0ZW1FdmVudERldGFpbD4oJ2JlZm9yZXNob3cnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgaW5kZXg6IHRoaXMuX2Nhcm91c2VsSXRlbXMoKS5maW5kSW5kZXgoKGUpID0+IGUgPT09IHRhcmdldCkgfSxcbiAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY29uZmlnOiB7IHRocmVzaG9sZDogMC4wMSwgcm9vdDogdGhpcywgcm9vdE1hcmdpbjogJzEwMCUgMCUgMTAwJSAwJScgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfc2hvd09ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBjYWxsYmFjazogKGVudHJ5QXJyKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJ5QXJyKSB7XG4gICAgICAgIGlmIChlbnRyeS50YXJnZXQgPT09IHRoaXMpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YXJnZXQgPSBlbnRyeS50YXJnZXQgYXMgU2JiQ2Fyb3VzZWxJdGVtRWxlbWVudDtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgdGFyZ2V0LmFyaWFIaWRkZW4gPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IHRoaXMuX2Nhcm91c2VsSXRlbXMoKS5maW5kSW5kZXgoKGVsKSA9PiBlbCA9PT0gdGFyZ2V0KTtcbiAgICAgICAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudDxTYmJDYXJvdXNlbEl0ZW1FdmVudERldGFpbD4oJ3Nob3cnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDogeyBpbmRleDogdGhpcy5fY3VycmVudEluZGV4IH0sXG4gICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQuYXJpYUhpZGRlbiA9ICd0cnVlJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY29uZmlnOiB7IHRocmVzaG9sZDogMC45OSwgcm9vdDogdGhpcywgcm9vdE1hcmdpbjogJzEwMCUgMCUgMTAwJSAwJScgfSxcbiAgfSk7XG5cbiAgLy8gT2JzZXJ2ZXIgdG8gcmVhZCB0aGUgZGltZW5zaW9ucyBvZiB0aGUgZmlyc3QgaXRlbSB3aGVuIGl0IGJlY29tZXMgdmlzaWJsZS5cbiAgcHJpdmF0ZSBfZmlyc3RWaXNpYmxlSW50ZXJzZWN0aW9uQ29udHJvbGxlciA9IG5ldyBJbnRlcnNlY3Rpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICBjYWxsYmFjazogKGVudHJpZXMpID0+IHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmludGVyc2VjdGlvblJhdGlvID4gMCkge1xuICAgICAgICAgIHRoaXMuX3JlYWREaW1lbnNpb25zKCk7XG4gICAgICAgICAgdGhpcy5fZmlyc3RWaXNpYmxlSW50ZXJzZWN0aW9uQ29udHJvbGxlci51bm9ic2VydmUodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY29uZmlnOiB7XG4gICAgICByb290OiAhaXNTZXJ2ZXIgPyBkb2N1bWVudD8uZG9jdW1lbnRFbGVtZW50IDogbnVsbCxcbiAgICB9LFxuICB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX29uS2V5RG93bihlKSk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgc2xvdHRlZCBpdGVtcy4gKi9cbiAgcHJpdmF0ZSBfY2Fyb3VzZWxJdGVtcygpOiBTYmJDYXJvdXNlbEl0ZW1FbGVtZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItY2Fyb3VzZWwtaXRlbScpID8/IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNsb3RjaGFuZ2UoKTogdm9pZCB7XG4gICAgLy8gSW4gY2FzZSBvZiByZW1vdmVkIGNhcm91c2VsIGl0ZW1zLCB3ZSBuZWVkIHRvIHVub2JzZXJ2ZSB0aGUgY3VycmVudCBvYnNlcnZlcnMuXG4gICAgdGhpcy5fb2JzZXJ2ZWRDYXJvdXNlbEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIHRoaXMuX2JlZm9yZVNob3dPYnNlcnZlci51bm9ic2VydmUoaXRlbSk7XG4gICAgICB0aGlzLl9zaG93T2JzZXJ2ZXIudW5vYnNlcnZlKGl0ZW0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2Fyb3VzZWxJdGVtcyA9IHRoaXMuX2Nhcm91c2VsSXRlbXMoKTtcblxuICAgIC8vIFNldCB0aGUgYXJpYS1sYWJlbCBpZiBub3QgcHJvdmlkZWRcbiAgICBjYXJvdXNlbEl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBpdGVtLmFyaWFMYWJlbCB8fD0gaTE4bkNhcm91c2VsSXRlbUFyaWFMYWJlbChpbmRleCArIDEsIGNhcm91c2VsSXRlbXMubGVuZ3RoKVtcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudFxuICAgICAgXTtcbiAgICAgIGl0ZW0uYXJpYUhpZGRlbiA9IGluZGV4ID09PSB0aGlzLl9jdXJyZW50SW5kZXggPyBudWxsIDogJ3RydWUnO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fcmVhZERpbWVuc2lvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgZmlyc3QgY2Fyb3VzZWwgaXRlbSBhbmQgc2V0cyB0aGUgQ1NTIHByb3BlcnRpZXMgYWNjb3JkaW5nbHkuXG4gICAqIFNob3VsZCBzZXQgdGhlIGRpbWVuc2lvbnMgb25seSBvbmNlLCB3aGVuIHRoZSBmaXJzdCBpdGVtIGJlY29tZXMgdmlzaWJsZSBhbmQgaWYgdGhlIHZhbHVlIGlzIG5vbi16ZXJvLlxuICAgKi9cbiAgcHJpdmF0ZSBfcmVhZERpbWVuc2lvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgY2Fyb3VzZWxJdGVtcyA9IHRoaXMuX2Nhcm91c2VsSXRlbXMoKTtcbiAgICBpZiAoY2Fyb3VzZWxJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdEl0ZW0gPSBjYXJvdXNlbEl0ZW1zWzBdO1xuXG4gICAgaWYgKGZpcnN0SXRlbS5jbGllbnRIZWlnaHQgPiAwKSB7XG4gICAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1jYXJvdXNlbC1saXN0LWhlaWdodCcsIGAke2ZpcnN0SXRlbS5jbGllbnRIZWlnaHR9cHhgKTtcbiAgICB9XG5cbiAgICBpZiAoZmlyc3RJdGVtLmNsaWVudFdpZHRoID4gMCkge1xuICAgICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItY2Fyb3VzZWwtbGlzdC13aWR0aCcsIGAke2ZpcnN0SXRlbS5jbGllbnRXaWR0aH1weGApO1xuXG4gICAgICAvLyBXZSBzaG91bGQgb25seSBvYnNlcnZlIHRoZSBpdGVtcyBpZiB0aGV5IGhhdmUgYSBub24temVybyB3aWR0aC4gT3RoZXJ3aXNlLCBhbiB1bndhbnRlZCBzY3JvbGxpbmcgY2FuIGhhcHBlbi5cbiAgICAgIGNhcm91c2VsSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICB0aGlzLl9iZWZvcmVTaG93T2JzZXJ2ZXIub2JzZXJ2ZShpdGVtKTtcbiAgICAgICAgdGhpcy5fc2hvd09ic2VydmVyLm9ic2VydmUoaXRlbSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX29ic2VydmVkQ2Fyb3VzZWxJdGVtcyA9IGNhcm91c2VsSXRlbXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25LZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGxldCBuZXdJbmRleCA9IHRoaXMuX2N1cnJlbnRJbmRleDtcbiAgICBjb25zdCBpc1ByZXYgPSBldnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZ0LmtleSA9PT0gJ0Fycm93TGVmdCc7XG4gICAgY29uc3QgaXNOZXh0ID0gZXZ0LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZ0LmtleSA9PT0gJ0Fycm93UmlnaHQnO1xuXG4gICAgaWYgKGlzUHJldikge1xuICAgICAgbmV3SW5kZXggPSBNYXRoLm1heCgwLCB0aGlzLl9jdXJyZW50SW5kZXggLSAxKTtcbiAgICB9IGVsc2UgaWYgKGlzTmV4dCkge1xuICAgICAgbmV3SW5kZXggPSBNYXRoLm1pbih0aGlzLl9jYXJvdXNlbEl0ZW1zKCkubGVuZ3RoIC0gMSwgdGhpcy5fY3VycmVudEluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgaWYgKG5ld0luZGV4ICE9PSB0aGlzLl9jdXJyZW50SW5kZXgpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IG5ld0luZGV4O1xuICAgICAgdGhpcy5zY3JvbGxUbyh7XG4gICAgICAgIGxlZnQ6IHRoaXMuX2Nhcm91c2VsSXRlbXMoKVt0aGlzLl9jdXJyZW50SW5kZXhdLm9mZnNldExlZnQgLSB0aGlzLm9mZnNldExlZnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFMaXZlID0gJ3BvbGl0ZSc7XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYUF0b21pYyA9ICd0cnVlJztcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PmA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jYXJvdXNlbC1saXN0JzogU2JiQ2Fyb3VzZWxMaXN0RWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXNCTSwwQkFBc0IsTUFBQTs7MEJBRDNCLGNBQWMsbUJBQW1CLENBQUM7Ozs7b0JBQ0UseUJBQXlCLFVBQVU7QUFBM0MsRUFBQSxtQkFBUSxZQUFvQztBQUFBLElBa0V2RSxjQUFBO0FBQ0UsWUFBQTtBQWhFTSxXQUFBLGdCQUFnQjtBQUNoQixXQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUMxQyxXQUFBLHlCQUFtRCxDQUFBO0FBRW5ELFdBQUEsc0JBQXNCLElBQUksdUJBQXVCLE1BQU07QUFBQSxRQUM3RCxRQUFRO0FBQUEsUUFDUixVQUFVLENBQUMsVUFBUztBQUNsQixnQkFBTSxPQUFPLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLElBQUk7QUFDdEUsZUFBSyxRQUFRLENBQUMsTUFBSztBQUNqQixrQkFBTSxTQUFTLEVBQUU7QUFDakIsbUJBQU8sY0FDTCxJQUFJLFlBQXdDLGNBQWM7QUFBQSxjQUN4RCxRQUFRLEVBQUUsT0FBTyxLQUFLLGVBQUEsRUFBaUIsVUFBVSxDQUFDQSxPQUFNQSxPQUFNLE1BQU0sRUFBQTtBQUFBLGNBQ3BFLFNBQVM7QUFBQSxjQUNULFVBQVU7QUFBQSxZQUFBLENBQ1gsQ0FBQztBQUFBLFVBRU4sQ0FBQztBQUFBLFFBQ0g7QUFBQSxRQUNBLFFBQVEsRUFBRSxXQUFXLE1BQU0sTUFBTSxNQUFNLFlBQVks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
@@ -79,17 +79,17 @@ const style = css`@charset "UTF-8";
79
79
  background-color: transparent;
80
80
  }
81
81
  :host(:not([expanded])) .sbb-container {
82
- padding-inline: var(--sbb-layout-base-offset-responsive);
82
+ padding-inline: var(--sbb-page-spacing-padding, var(--sbb-layout-base-offset-responsive));
83
83
  margin-inline: auto;
84
84
  width: 100%;
85
85
  }
86
86
  @media (min-width: calc(90rem)) {
87
87
  :host(:not([expanded])) .sbb-container {
88
- max-width: calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive));
88
+ max-width: var(--sbb-spacing-max-width, calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive)));
89
89
  }
90
90
  }
91
91
  :host([expanded]) .sbb-container {
92
- padding-inline: var(--sbb-spacing-responsive-xxs);
92
+ padding-inline: var(--sbb-page-spacing-padding, var(--sbb-spacing-responsive-xxs));
93
93
  }
94
94
  :host([data-slot-names~=image]:not([background-expanded])) .sbb-container {
95
95
  position: relative;
@@ -120,13 +120,13 @@ const style = css`*,
120
120
  padding: 0 !important;
121
121
  }
122
122
  :host(:not([data-expanded])) .sbb-sticky-bar__wrapper::before {
123
- padding-inline: var(--sbb-layout-base-offset-responsive);
123
+ padding-inline: var(--sbb-page-spacing-padding, var(--sbb-layout-base-offset-responsive));
124
124
  margin-inline: auto;
125
125
  width: 100%;
126
126
  }
127
127
  @media (min-width: calc(90rem)) {
128
128
  :host(:not([data-expanded])) .sbb-sticky-bar__wrapper::before {
129
- max-width: calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive));
129
+ max-width: var(--sbb-spacing-max-width, calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive)));
130
130
  }
131
131
  }
132
132
  .sbb-sticky-bar__wrapper::after {
@@ -156,17 +156,17 @@ const style = css`*,
156
156
  box-shadow: var(--sbb-shadow-elevation-level-11-shadow-2-offset-x) var(--sbb-shadow-elevation-level-11-shadow-2-offset-y) var(--sbb-shadow-elevation-level-11-shadow-2-blur) var(--sbb-shadow-elevation-level-11-shadow-2-spread) var(--sbb-shadow-color-soft-2), var(--sbb-shadow-elevation-level-11-shadow-1-offset-x) var(--sbb-shadow-elevation-level-11-shadow-1-offset-y) var(--sbb-shadow-elevation-level-11-shadow-1-blur) var(--sbb-shadow-elevation-level-11-shadow-1-spread) var(--sbb-shadow-color-soft-1);
157
157
  }
158
158
  :host(:not([data-expanded])) .sbb-sticky-bar {
159
- padding-inline: var(--sbb-layout-base-offset-responsive);
159
+ padding-inline: var(--sbb-page-spacing-padding, var(--sbb-layout-base-offset-responsive));
160
160
  margin-inline: auto;
161
161
  width: 100%;
162
162
  }
163
163
  @media (min-width: calc(90rem)) {
164
164
  :host(:not([data-expanded])) .sbb-sticky-bar {
165
- max-width: calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive));
165
+ max-width: var(--sbb-spacing-max-width, calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive)));
166
166
  }
167
167
  }
168
168
  :host([data-expanded]) .sbb-sticky-bar {
169
- padding-inline: var(--sbb-spacing-responsive-xxs);
169
+ padding-inline: var(--sbb-page-spacing-padding, var(--sbb-spacing-responsive-xxs));
170
170
  }
171
171
 
172
172
  .sbb-sticky-bar__intersector {
@@ -1,5 +1,8 @@
1
1
  import { ReactiveController, ReactiveControllerHost } from 'lit';
2
2
  import { SbbOpenCloseBaseElement } from '../base-elements/open-close-base-element.js';
3
+ /**
4
+ * Handles the stack of overlays and closes the last opened one when pressing Escape.
5
+ */
3
6
  export declare class SbbEscapableOverlayController implements ReactiveController {
4
7
  private _host;
5
8
  private _overlayStack;
@@ -1 +1 @@
1
- {"version":3,"file":"escapable-overlay-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/escapable-overlay-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAErF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAa3F,qBAAa,6BAA8B,YAAW,kBAAkB;IAEpE,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,aAAa;gBADb,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,EACvD,aAAa,GAAE,uBAAuB,EAAiB;IAK1D,gBAAgB,IAAI,IAAI;IAKxB,OAAO,IAAI,IAAI;IAQf,UAAU,IAAI,IAAI;CAQ1B"}
1
+ {"version":3,"file":"escapable-overlay-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/escapable-overlay-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAErF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAa3F;;GAEG;AACH,qBAAa,6BAA8B,YAAW,kBAAkB;IAEpE,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,aAAa;gBADb,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,EACvD,aAAa,GAAE,uBAAuB,EAAiB;IAK1D,gBAAgB,IAAI,IAAI;IAKxB,OAAO,IAAI,IAAI;IAQf,UAAU,IAAI,IAAI;CAQ1B"}
@@ -35,4 +35,4 @@ class SbbEscapableOverlayController {
35
35
  export {
36
36
  SbbEscapableOverlayController
37
37
  };
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBhYmxlLW92ZXJsYXktY29udHJvbGxlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvZXNjYXBhYmxlLW92ZXJsYXktY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9iYXNlLWVsZW1lbnRzL29wZW4tY2xvc2UtYmFzZS1lbGVtZW50LmpzJztcblxuY29uc3Qgb3ZlcmxheVN0YWNrID0gbmV3IEFycmF5PFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50PigpO1xuXG5pZiAoIWlzU2VydmVyKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBvdmVybGF5U3RhY2suYXQoLTEpPy5lc2NhcGVTdHJhdGVneSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBjbGFzcyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfb3ZlcmxheVN0YWNrOiBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudFtdID0gb3ZlcmxheVN0YWNrLFxuICApIHtcbiAgICB0aGlzLl9ob3N0LmFkZENvbnRyb2xsZXI/Lih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvdmVybGF5IGlzIG9wZW5lZFxuICBwdWJsaWMgY29ubmVjdCgpOiB2b2lkIHtcbiAgICAvLyBEdWUgdG8gY29ubmVjdCgpIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgZm9yIHRoZSBzYW1lIGhvc3QsXG4gICAgLy8gd2UgaGF2ZSB0byByZW1vdmUgYSBwb3RlbnRpYWwgZW50cnkgb2YgdGhlIGhvc3QgZnJvbSB0aGUgc3RhY2suXG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fb3ZlcmxheVN0YWNrLnB1c2godGhpcy5faG9zdCk7XG4gIH1cblxuICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG92ZXJsYXkgaXMgY2xvc2VkXG4gIHB1YmxpYyBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vdmVybGF5U3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBmaW5kRWxJbmRleCA9IHRoaXMuX292ZXJsYXlTdGFjay5maW5kSW5kZXgoKGUpID0+IGUgPT09IHRoaXMuX2hvc3QpO1xuICAgICAgaWYgKGZpbmRFbEluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLl9vdmVybGF5U3RhY2suc3BsaWNlKGZpbmRFbEluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBSUEsTUFBTSxlQUFlLElBQUksTUFBQTtBQUV6QixJQUFJLENBQUMsVUFBVTtBQUNiLFNBQU8saUJBQWlCLFdBQVcsQ0FBQyxVQUF3QjtBQUMxRCxRQUFJLE1BQU0sUUFBUSxZQUFZLENBQUMsTUFBTSxrQkFBa0I7QUFDckQsWUFBTSxlQUFBO0FBQ04sbUJBQWEsR0FBRyxFQUFFLEdBQUcsZUFBQTtBQUFBLElBQ3ZCO0FBQUEsRUFDRixDQUFDO0FBQ0g7TUFFYSw4QkFBNkI7QUFBQSxFQUN4QyxZQUNVLE9BQ0EsZ0JBQTJDLGNBQVk7QUFEdkQsU0FBQSxRQUFBO0FBQ0EsU0FBQSxnQkFBQTtBQUVSLFNBQUssTUFBTSxnQkFBZ0IsSUFBSTtBQUFBLEVBQ2pDO0FBQUEsRUFFTyxtQkFBZ0I7QUFDckIsU0FBSyxXQUFBO0FBQUEsRUFDUDtBQUFBO0FBQUEsRUFHTyxVQUFPO0FBR1osU0FBSyxXQUFBO0FBQ0wsU0FBSyxjQUFjLEtBQUssS0FBSyxLQUFLO0FBQUEsRUFDcEM7QUFBQTtBQUFBLEVBR08sYUFBVTtBQUNmLFFBQUksS0FBSyxjQUFjLFFBQVE7QUFDN0IsWUFBTSxjQUFjLEtBQUssY0FBYyxVQUFVLENBQUMsTUFBTSxNQUFNLEtBQUssS0FBSztBQUN4RSxVQUFJLGdCQUFnQixJQUFJO0FBQ3RCLGFBQUssY0FBYyxPQUFPLGFBQWEsQ0FBQztBQUFBLE1BQzFDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRDsifQ==
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBhYmxlLW92ZXJsYXktY29udHJvbGxlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvZXNjYXBhYmxlLW92ZXJsYXktY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9iYXNlLWVsZW1lbnRzL29wZW4tY2xvc2UtYmFzZS1lbGVtZW50LmpzJztcblxuY29uc3Qgb3ZlcmxheVN0YWNrID0gbmV3IEFycmF5PFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50PigpO1xuXG5pZiAoIWlzU2VydmVyKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBvdmVybGF5U3RhY2suYXQoLTEpPy5lc2NhcGVTdHJhdGVneSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogSGFuZGxlcyB0aGUgc3RhY2sgb2Ygb3ZlcmxheXMgYW5kIGNsb3NlcyB0aGUgbGFzdCBvcGVuZWQgb25lIHdoZW4gcHJlc3NpbmcgRXNjYXBlLlxuICovXG5leHBvcnQgY2xhc3MgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50LFxuICAgIHByaXZhdGUgX292ZXJsYXlTdGFjazogU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnRbXSA9IG92ZXJsYXlTdGFjayxcbiAgKSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyPy4odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3ZlcmxheSBpcyBvcGVuZWRcbiAgcHVibGljIGNvbm5lY3QoKTogdm9pZCB7XG4gICAgLy8gRHVlIHRvIGNvbm5lY3QoKSBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciB0aGUgc2FtZSBob3N0LFxuICAgIC8vIHdlIGhhdmUgdG8gcmVtb3ZlIGEgcG90ZW50aWFsIGVudHJ5IG9mIHRoZSBob3N0IGZyb20gdGhlIHN0YWNrLlxuICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX292ZXJsYXlTdGFjay5wdXNoKHRoaXMuX2hvc3QpO1xuICB9XG5cbiAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvdmVybGF5IGlzIGNsb3NlZFxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3ZlcmxheVN0YWNrLmxlbmd0aCkge1xuICAgICAgY29uc3QgZmluZEVsSW5kZXggPSB0aGlzLl9vdmVybGF5U3RhY2suZmluZEluZGV4KChlKSA9PiBlID09PSB0aGlzLl9ob3N0KTtcbiAgICAgIGlmIChmaW5kRWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVN0YWNrLnNwbGljZShmaW5kRWxJbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUlBLE1BQU0sZUFBZSxJQUFJLE1BQUE7QUFFekIsSUFBSSxDQUFDLFVBQVU7QUFDYixTQUFPLGlCQUFpQixXQUFXLENBQUMsVUFBd0I7QUFDMUQsUUFBSSxNQUFNLFFBQVEsWUFBWSxDQUFDLE1BQU0sa0JBQWtCO0FBQ3JELFlBQU0sZUFBQTtBQUNOLG1CQUFhLEdBQUcsRUFBRSxHQUFHLGVBQUE7QUFBQSxJQUN2QjtBQUFBLEVBQ0YsQ0FBQztBQUNIO01BS2EsOEJBQTZCO0FBQUEsRUFDeEMsWUFDVSxPQUNBLGdCQUEyQyxjQUFZO0FBRHZELFNBQUEsUUFBQTtBQUNBLFNBQUEsZ0JBQUE7QUFFUixTQUFLLE1BQU0sZ0JBQWdCLElBQUk7QUFBQSxFQUNqQztBQUFBLEVBRU8sbUJBQWdCO0FBQ3JCLFNBQUssV0FBQTtBQUFBLEVBQ1A7QUFBQTtBQUFBLEVBR08sVUFBTztBQUdaLFNBQUssV0FBQTtBQUNMLFNBQUssY0FBYyxLQUFLLEtBQUssS0FBSztBQUFBLEVBQ3BDO0FBQUE7QUFBQSxFQUdPLGFBQVU7QUFDZixRQUFJLEtBQUssY0FBYyxRQUFRO0FBQzdCLFlBQU0sY0FBYyxLQUFLLGNBQWMsVUFBVSxDQUFDLE1BQU0sTUFBTSxLQUFLLEtBQUs7QUFDeEUsVUFBSSxnQkFBZ0IsSUFBSTtBQUN0QixhQUFLLGNBQWMsT0FBTyxhQUFhLENBQUM7QUFBQSxNQUMxQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Q7In0=
@@ -0,0 +1,60 @@
1
+ import { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ /**
3
+ * Controller for managing overlays positioning. Also acts as a polyfill when native
4
+ * CSS Anchor Positioning is not supported (enough).
5
+ * Applies unique anchor names when using native CSS Anchor Positioning
6
+ * or calculates and applies correct positions in polyfill mode.
7
+ *
8
+ * Also, the controller sets the 'data-overlay-position' attribute on the overlay element.
9
+ * This can be used to apply specific styles based on the current position of the overlay.
10
+ *
11
+ * ### Implementation
12
+ * Define and apply the following CSS variables on the overlay element:
13
+ * ```scss
14
+ * --sbb-overlay-position-area: block-end; // Default
15
+ * --sbb-overlay-position-try-fallbacks: block-start, inline-end, inline-start; // Fallbacks
16
+ *
17
+ * position-area: var(--sbb-overlay-position-area);
18
+ * position-try-fallbacks: var(--sbb-overlay-position-try-fallbacks);
19
+ * ```
20
+ */
21
+ export declare class SbbOverlayPositionController implements ReactiveController {
22
+ private _usePolyfill;
23
+ private readonly _resizeObserver;
24
+ private readonly _overlay;
25
+ private _abortController?;
26
+ private _anchor?;
27
+ private _overlayStyles?;
28
+ private _frame?;
29
+ private _anchorName;
30
+ private _positions;
31
+ private _lastPosition?;
32
+ /** Get the current position. (e.g. block-end, block-start, etc.) */
33
+ get currentPosition(): string;
34
+ constructor(host: ReactiveControllerHost & HTMLElement, overlay?: HTMLElement, _usePolyfill?: boolean);
35
+ hostConnected(): void;
36
+ hostUpdate(): void;
37
+ /**
38
+ * Connects the overlay to the given trigger element and determines the optimal position.
39
+ * Usually, this is called when the overlay is opened.
40
+ * @param anchor The anchor element.
41
+ */
42
+ connect(anchor: HTMLElement): void;
43
+ disconnect(): void;
44
+ private _requestCalculatePosition;
45
+ private _calculatePosition;
46
+ /**
47
+ * Calculates the optimal position that fits the overlay.
48
+ * @param positions The list of positions to check.
49
+ * @private
50
+ */
51
+ private _getOptimalPosition;
52
+ private _applyOverlayPosition;
53
+ /**
54
+ * Only used in polyfill mode.
55
+ * Reads the list of the configured positions from the CSS variables.
56
+ * @private
57
+ */
58
+ private _readPositionsFromCss;
59
+ }
60
+ //# sourceMappingURL=overlay-position-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay-position-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/overlay-position-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAqDrF;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,4BAA6B,YAAW,kBAAkB;IA0BnE,OAAO,CAAC,YAAY;IAzBtB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAEtB;IACV,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAsB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B,oEAAoE;IACpE,IAAW,eAAe,IAAI,MAAM,CAOnC;gBAGC,IAAI,EAAE,sBAAsB,GAAG,WAAW,EAC1C,OAAO,CAAC,EAAE,WAAW,EACb,YAAY,UAA8B;IAM7C,aAAa,IAAI,IAAI;IASrB,UAAU,IAAI,IAAI;IAOzB;;;;OAIG;IACI,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAmClC,UAAU,IAAI,IAAI;IAOzB,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,kBAAkB;IAY1B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAiL3B,OAAO,CAAC,qBAAqB;IAM7B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;CA6B9B"}