@sbb-esta/lyne-elements 5.1.0 → 5.2.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 (68) hide show
  1. package/action-group.pure.js +1 -1
  2. package/alert.pure.js +14 -14
  3. package/breadcrumb.pure.js +3 -3
  4. package/calendar.pure.js +67 -67
  5. package/carousel/_carousel.global.scss +6 -0
  6. package/carousel.pure.js +1 -1
  7. package/clock.pure.js +1 -1
  8. package/core/styles/_theme.scss +1 -0
  9. package/core.js +2 -2
  10. package/custom-elements.json +99 -67
  11. package/date-input.pure.js +1 -1
  12. package/development/action-group.pure.js +1 -1
  13. package/development/alert.pure.js +14 -14
  14. package/development/breadcrumb.pure.js +3 -3
  15. package/development/calendar.pure.js +67 -67
  16. package/development/carousel.pure.js +1 -1
  17. package/development/clock.pure.js +15 -17
  18. package/development/core.js +2 -2
  19. package/development/date-input.pure.js +15 -7
  20. package/development/expansion-panel.pure.js +6 -6
  21. package/development/file-selector.pure.js +7 -3
  22. package/development/image.pure.js +8 -8
  23. package/development/map-container.pure.js +8 -8
  24. package/development/mini-calendar.pure.js +1 -1
  25. package/development/notification.pure.js +12 -9
  26. package/development/option.pure.js +11 -11
  27. package/development/paginator.pure.js +18 -18
  28. package/development/signet.pure.js +17 -17
  29. package/development/stepper/step/step.component.d.ts +0 -2
  30. package/development/stepper/stepper/stepper.component.d.ts +2 -2
  31. package/development/stepper.pure.js +24 -17
  32. package/development/tabs.pure.js +4 -4
  33. package/development/teaser.pure.js +1 -1
  34. package/development/time-input.pure.js +10 -6
  35. package/development/timetable-form.pure.js +3 -3
  36. package/development/timetable-occupancy.pure.js +22 -22
  37. package/development/toast.pure.js +6 -6
  38. package/development/tooltip.pure.js +4 -2
  39. package/development/train.pure.js +29 -29
  40. package/development/visual-checkbox.pure.js +13 -13
  41. package/expansion-panel.pure.js +6 -6
  42. package/file-selector.pure.js +2 -2
  43. package/image.pure.js +8 -8
  44. package/lean-off-brand-theme.css +39 -1
  45. package/lean-safety-theme.css +39 -1
  46. package/lean-theme.css +39 -1
  47. package/map-container.pure.js +8 -8
  48. package/mini-calendar.pure.js +1 -1
  49. package/notification.pure.js +12 -9
  50. package/off-brand-theme.css +39 -1
  51. package/option.pure.js +11 -11
  52. package/package.json +1 -1
  53. package/paginator.pure.js +18 -18
  54. package/safety-theme.css +39 -1
  55. package/signet.pure.js +17 -17
  56. package/standard-theme.css +39 -1
  57. package/stepper.pure.js +3 -3
  58. package/table/_table.global.scss +46 -1
  59. package/tabs.pure.js +4 -4
  60. package/teaser/_teaser.global.scss +4 -0
  61. package/teaser.pure.js +1 -1
  62. package/time-input.pure.js +1 -1
  63. package/timetable-form.pure.js +3 -3
  64. package/timetable-occupancy.pure.js +22 -22
  65. package/toast.pure.js +6 -6
  66. package/tooltip.pure.js +3 -3
  67. package/train.pure.js +29 -29
  68. package/visual-checkbox.pure.js +13 -13
@@ -47,7 +47,7 @@ var SbbStepLabelElement = class extends SbbIconNameMixin(SbbDisabledMixin(SbbBut
47
47
  this._previousSize = null;
48
48
  this.addEventListener?.("click", () => {
49
49
  const stepper = this.stepper;
50
- if (stepper && this.step && this._isNotDeactivatedByLinearMode(this.step)) stepper.selected = this.step;
50
+ if (stepper && this.step && this._isNotDeactivatedByLinearMode(this.step) && !this.disabled) stepper.selected = this.step;
51
51
  });
52
52
  this.addController(new SbbPropertyWatcherController(this, () => this.stepper, {
53
53
  orientation: (s) => {
@@ -246,14 +246,8 @@ var SbbStepElement = class extends SbbElement {
246
246
  /** Watches for clicked elements with `sbb-stepper-next` or `sbb-stepper-previous` attributes. */
247
247
  _handleClick(event) {
248
248
  const composedPathElements = event.composedPath().filter((el) => el instanceof window.HTMLElement);
249
- if (composedPathElements.some((el) => this._isGoNextElement(el))) this.stepper?.next();
250
- else if (composedPathElements.some((el) => this._isGoPreviousElement(el))) this.stepper?.previous();
251
- }
252
- _isGoNextElement(element) {
253
- return element.hasAttribute("sbb-stepper-next") && !element.hasAttribute("disabled");
254
- }
255
- _isGoPreviousElement(element) {
256
- return element.hasAttribute("sbb-stepper-previous") && !element.hasAttribute("disabled");
249
+ if (composedPathElements.some((el) => el.hasAttribute("sbb-stepper-next"))) this.stepper?.next();
250
+ else if (composedPathElements.some((el) => el.hasAttribute("sbb-stepper-previous"))) this.stepper?.previous();
257
251
  }
258
252
  _onStepElementResize() {
259
253
  if (!this.matches(":is(:state(selected),[state--selected])")) return;
@@ -572,13 +566,25 @@ let SbbStepperElement = (() => {
572
566
  this.addEventListener?.("keydown", (e) => this._handleKeyDown(e));
573
567
  this.addEventListener?.("resizechange", (e) => this._onSelectedStepResize(e));
574
568
  }
575
- /** Selects the next step. */
569
+ /** Selects the next enabled step. If no available step is found, it simply exits. */
576
570
  next() {
577
- if (this.selectedIndex !== null) this._select(this.steps[this.selectedIndex + 1]);
571
+ if (this.selectedIndex !== null) for (let i = this.selectedIndex + 1; i < this.steps.length; i++) {
572
+ const step = this.steps[i];
573
+ if (this._isSelectable(step)) {
574
+ this._select(step);
575
+ return;
576
+ }
577
+ }
578
578
  }
579
- /** Selects the previous step. */
579
+ /** Selects the previous enabled step. If no available step is found, it simply exits. */
580
580
  previous() {
581
- if (this.selectedIndex !== null) this._select(this.steps[this.selectedIndex - 1]);
581
+ if (this.selectedIndex !== null) for (let i = this.selectedIndex - 1; i >= 0; i--) {
582
+ const step = this.steps[i];
583
+ if (this._isSelectable(step)) {
584
+ this._select(step);
585
+ return;
586
+ }
587
+ }
582
588
  }
583
589
  /** Resets the form in which the stepper is nested or every form of each step, if any. */
584
590
  reset() {
@@ -599,17 +605,18 @@ let SbbStepperElement = (() => {
599
605
  } else return false;
600
606
  }
601
607
  _select(step) {
602
- if (!this._isSelectable(step) || step === this.selected) return;
608
+ if (!step || step === this.selected) return;
603
609
  const currentIndex = this.selectedIndex;
604
610
  const currentStep = this.selected;
611
+ const stepIndex = this.steps.indexOf(step);
605
612
  const validatePayload = {
606
613
  currentIndex,
607
614
  currentStep,
608
- nextIndex: this.selectedIndex !== null ? this.selectedIndex + 1 : null,
609
- nextStep: this.selectedIndex !== null ? this.steps[this.selectedIndex + 1] : null
615
+ nextIndex: stepIndex >= 0 ? stepIndex : null,
616
+ nextStep: step
610
617
  };
611
618
  if (this.selected && !this.selected["validate"](validatePayload)) return;
612
- this.selected?.["deselect"]();
619
+ currentStep?.["deselect"]();
613
620
  step["select"]();
614
621
  /** @internal only to provide double entry in docs. It is a public event! */
615
622
  this.dispatchEvent(new SbbStepChangeEvent({
@@ -299,10 +299,10 @@ let SbbTabGroupElement = (() => {
299
299
  <slot name="tab-bar" @slotchange=${this._onLabelSlotChange}></slot>
300
300
  </div>
301
301
  ${!this.fixedHeight ? html`
302
- <div class="sbb-tab-group-content">
303
- <slot @slotchange=${this._onContentSlotChange}></slot>
304
- </div>
305
- ` : html`<slot @slotchange=${this._onContentSlotChange}></slot>`}
302
+ <div class="sbb-tab-group-content">
303
+ <slot @slotchange=${this._onContentSlotChange}></slot>
304
+ </div>
305
+ ` : html`<slot @slotchange=${this._onContentSlotChange}></slot>`}
306
306
  `;
307
307
  }
308
308
  };
@@ -5,7 +5,7 @@ import { html } from "lit/static-html.js";
5
5
  import { SbbLinkBaseElement, screenReaderOnlyStyles } from "./core.js";
6
6
 
7
7
  //#region src/elements/teaser/teaser.scss?inline
8
- var teaser_default = "@charset \"UTF-8\";\n:host {\n --_sbb-teaser-forced-colors-inset: calc(-1 * var(--sbb-focus-outline-offset));\n --_sbb-teaser-forced-colors-outline-offset: calc(2 * var(--sbb-focus-outline-offset));\n --_sbb-teaser-forced-colors-border-radius: calc(\n var(--sbb-teaser-border-radius) + var(--sbb-focus-outline-offset)\n );\n display: inline-block;\n outline: none !important;\n}\n@media (forced-colors: active) {\n :host {\n --sbb-teaser-description-color: LinkText;\n --sbb-title-color: LinkText !important;\n }\n}\n\n:host([alignment=after]) {\n --sbb-teaser-align-items: start;\n}\n\n:host([alignment=below]) {\n --sbb-teaser-flex-direction: column;\n --sbb-teaser-align-items: baseline;\n --sbb-teaser-gap: var(--sbb-spacing-fixed-3x);\n}\n\n@media (any-hover: hover) {\n :host(:hover) {\n --sbb-teaser-scale: var(--sbb-teaser-scale-hover);\n }\n}\n.sbb-teaser__wrapper {\n display: flex;\n position: relative;\n cursor: var(--sbb-cursor-pointer);\n}\n.sbb-teaser__wrapper::before {\n content: \"​\";\n user-select: none;\n width: 0;\n height: 0;\n}\n\n.sbb-teaser {\n text-decoration: none;\n position: absolute;\n inset: 0;\n}\n.sbb-teaser:focus-visible {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n border-radius: var(--sbb-teaser-border-radius);\n}\n@media (forced-colors: active) {\n .sbb-teaser:focus-visible {\n outline-offset: var(--_sbb-teaser-forced-colors-outline-offset);\n }\n}\n@media (forced-colors: active) {\n .sbb-teaser::before {\n content: \"\";\n position: absolute;\n inset: var(--_sbb-teaser-forced-colors-inset);\n pointer-events: none;\n border-radius: var(--_sbb-teaser-forced-colors-border-radius);\n border: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n\n.sbb-teaser__container {\n display: flex;\n flex-flow: var(--sbb-teaser-flex-direction) nowrap;\n align-items: var(--sbb-teaser-align-items);\n gap: var(--sbb-teaser-gap);\n max-width: 100%;\n width: 100%;\n pointer-events: none;\n}\n\n.sbb-teaser__text {\n color: var(--sbb-teaser-description-color);\n font-size: var(--sbb-teaser-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n overflow: hidden;\n max-width: 100%;\n}\n\n::slotted([slot=image]) {\n display: block;\n width: var(--sbb-teaser-image-width);\n}\n\n.sbb-teaser__image-wrapper {\n flex-shrink: 0;\n overflow: hidden;\n border-radius: var(--sbb-teaser-border-radius);\n transition: box-shadow var(--sbb-teaser-image-animation-duration) var(--sbb-animation-easing);\n}\n:host(:not(:is(:state(slotted-image),[state--slotted-image]))) .sbb-teaser__image-wrapper {\n display: none;\n}\n@media (any-hover: hover) {\n :host(:hover) .sbb-teaser__image-wrapper {\n box-shadow: var(--sbb-box-shadow-level-9-hard);\n }\n}\n\n.sbb-teaser__description {\n display: inline-block;\n margin: 0;\n padding: 0;\n}\n\n::slotted(sbb-chip-label) {\n display: flex;\n width: fit-content;\n max-width: 100%;\n margin-block-end: var(--sbb-spacing-fixed-1x);\n}\n\n::slotted(sbb-title) {\n margin-block: 0;\n}\n";
8
+ var teaser_default = "@charset \"UTF-8\";\n:host {\n --_sbb-teaser-forced-colors-inset: calc(-1 * var(--sbb-focus-outline-offset));\n --_sbb-teaser-forced-colors-outline-offset: calc(2 * var(--sbb-focus-outline-offset));\n --_sbb-teaser-forced-colors-border-radius: calc(\n var(--sbb-teaser-border-radius) + var(--sbb-focus-outline-offset)\n );\n display: inline-block;\n outline: none !important;\n}\n@media (forced-colors: active) {\n :host {\n --sbb-teaser-description-color: LinkText;\n --sbb-title-color: LinkText !important;\n }\n}\n\n:host([alignment=after]) {\n --sbb-teaser-align-items: start;\n}\n\n:host([alignment=below]) {\n --sbb-teaser-flex-direction: column;\n --sbb-teaser-align-items: baseline;\n --sbb-teaser-gap: var(--sbb-spacing-fixed-3x);\n}\n\n@media (any-hover: hover) {\n :host(:hover) {\n --sbb-teaser-scale: var(--sbb-teaser-scale-hover);\n }\n}\n.sbb-teaser__wrapper {\n display: flex;\n position: relative;\n cursor: var(--sbb-cursor-pointer);\n}\n.sbb-teaser__wrapper::before {\n content: \"​\";\n user-select: none;\n width: 0;\n height: 0;\n}\n\n.sbb-teaser {\n text-decoration: none;\n position: absolute;\n inset: 0;\n}\n.sbb-teaser:focus-visible {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n border-radius: var(--sbb-teaser-border-radius);\n}\n@media (forced-colors: active) {\n .sbb-teaser:focus-visible {\n outline-offset: var(--_sbb-teaser-forced-colors-outline-offset);\n }\n}\n@media (forced-colors: active) {\n .sbb-teaser::before {\n content: \"\";\n position: absolute;\n inset: var(--_sbb-teaser-forced-colors-inset);\n pointer-events: none;\n border-radius: var(--_sbb-teaser-forced-colors-border-radius);\n border: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n\n.sbb-teaser__container {\n display: flex;\n flex-flow: var(--sbb-teaser-flex-direction) nowrap;\n align-items: var(--sbb-teaser-align-items);\n gap: var(--sbb-teaser-gap);\n max-width: 100%;\n width: 100%;\n pointer-events: none;\n}\n\n.sbb-teaser__text {\n color: var(--sbb-teaser-description-color);\n font-size: var(--sbb-teaser-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n overflow: hidden;\n max-width: 100%;\n}\n\n::slotted([slot=image]) {\n display: block;\n width: var(--sbb-teaser-image-width);\n}\n\n.sbb-teaser__image-wrapper {\n flex-shrink: 0;\n overflow: hidden;\n border-radius: var(--sbb-teaser-border-radius);\n transition: box-shadow var(--sbb-teaser-image-animation-duration) var(--sbb-animation-easing);\n max-width: 100%;\n}\n:host(:not(:is(:state(slotted-image),[state--slotted-image]))) .sbb-teaser__image-wrapper {\n display: none;\n}\n@media (any-hover: hover) {\n :host(:hover) .sbb-teaser__image-wrapper {\n box-shadow: var(--sbb-box-shadow-level-9-hard);\n }\n}\n\n.sbb-teaser__description {\n display: inline-block;\n margin: 0;\n padding: 0;\n}\n\n::slotted(sbb-chip-label) {\n display: flex;\n width: fit-content;\n max-width: 100%;\n margin-block-end: var(--sbb-spacing-fixed-1x);\n}\n\n::slotted(sbb-title) {\n margin-block: 0;\n}\n";
9
9
 
10
10
  //#endregion
11
11
  //#region src/elements/teaser/teaser.component.ts
@@ -154,12 +154,16 @@ let SbbTimeInputElement = (() => {
154
154
  validate() {
155
155
  super.validate();
156
156
  if (!this.value) this._removeValidityErrors();
157
- else if (!this._valueAsTime) this.setValidityFlag("badInput", i18nTimeInvalid[this.language.current]);
158
- else if (!this._isTimeValid(this._valueAsTime)) this.setValidityFlag("rangeOverflow", i18nTimeMax[this.language.current]);
159
- else this._removeValidityErrors();
160
- }
161
- _removeValidityErrors() {
162
- ["badInput", "rangeOverflow"].forEach((f) => this.removeValidityFlag(f));
157
+ else if (!this._valueAsTime) {
158
+ this._removeValidityErrors("badInput");
159
+ this.setValidityFlag("badInput", i18nTimeInvalid[this.language.current]);
160
+ } else if (!this._isTimeValid(this._valueAsTime)) {
161
+ this._removeValidityErrors("rangeOverflow");
162
+ this.setValidityFlag("rangeOverflow", i18nTimeMax[this.language.current]);
163
+ } else this._removeValidityErrors();
164
+ }
165
+ _removeValidityErrors(except) {
166
+ ["badInput", "rangeOverflow"].filter((v) => v !== except).forEach((f) => this.removeValidityFlag(f));
163
167
  }
164
168
  /** Checks if values of hours and minutes are possible, to avoid non-existent times. */
165
169
  _isTimeValid(time) {
@@ -60,9 +60,9 @@ var SbbTimetableFormFieldElement = class extends SbbFormFieldElement {
60
60
  render() {
61
61
  return html`
62
62
  ${this._routeIcon ? html` <sbb-icon
63
- name="route-circle-start-small"
64
- class="sbb-timetable-form-field__start-route-icon"
65
- ></sbb-icon>` : html` <span class="sbb-timetable-form-field__via-route-icon"></span> `}
63
+ name="route-circle-start-small"
64
+ class="sbb-timetable-form-field__start-route-icon"
65
+ ></sbb-icon>` : html` <span class="sbb-timetable-form-field__via-route-icon"></span> `}
66
66
  ${super.render()}
67
67
  `;
68
68
  }
@@ -97,28 +97,28 @@ let SbbTimetableOccupancyElement = (() => {
97
97
  }
98
98
  render() {
99
99
  return html` ${(this.firstClassOccupancy || this.secondClassOccupancy) && html`
100
- <ul
101
- class="sbb-timetable-occupancy__list"
102
- role=${!this.firstClassOccupancy || !this.secondClassOccupancy ? "presentation" : nothing}
103
- >
104
- ${[this.firstClassOccupancy, this.secondClassOccupancy].map((occupancy, index) => occupancy && html`
105
- <li class="sbb-timetable-occupancy__list-item">
106
- <span class="sbb-timetable-occupancy__list-item-class" aria-hidden="true">
107
- ${this.firstClassOccupancy && index === 0 ? "1" : "2"}.
108
- </span>
109
- <span class="sbb-screen-reader-only">
110
- ${`${i18nClass[this.firstClassOccupancy && index === 0 ? "first" : "second"][this._language.current]}.`}
111
- </span>
112
- <sbb-timetable-occupancy-icon
113
- class="sbb-timetable-occupancy__list-item-icon"
114
- ?negative=${this.negative}
115
- .occupancy=${occupancy}
116
- >
117
- </sbb-timetable-occupancy-icon>
118
- </li>
119
- `)}
120
- </ul>
121
- `}`;
100
+ <ul
101
+ class="sbb-timetable-occupancy__list"
102
+ role=${!this.firstClassOccupancy || !this.secondClassOccupancy ? "presentation" : nothing}
103
+ >
104
+ ${[this.firstClassOccupancy, this.secondClassOccupancy].map((occupancy, index) => occupancy && html`
105
+ <li class="sbb-timetable-occupancy__list-item">
106
+ <span class="sbb-timetable-occupancy__list-item-class" aria-hidden="true">
107
+ ${this.firstClassOccupancy && index === 0 ? "1" : "2"}.
108
+ </span>
109
+ <span class="sbb-screen-reader-only">
110
+ ${`${i18nClass[this.firstClassOccupancy && index === 0 ? "first" : "second"][this._language.current]}.`}
111
+ </span>
112
+ <sbb-timetable-occupancy-icon
113
+ class="sbb-timetable-occupancy__list-item-icon"
114
+ ?negative=${this.negative}
115
+ .occupancy=${occupancy}
116
+ >
117
+ </sbb-timetable-occupancy-icon>
118
+ </li>
119
+ `)}
120
+ </ul>
121
+ `}`;
122
122
  }
123
123
  };
124
124
  })();
@@ -250,12 +250,12 @@ let SbbToastElement = (() => {
250
250
  ?negative=${this._isLightMode()}
251
251
  ></sbb-divider>
252
252
  ${!this.readOnly ? html`<sbb-transparent-button
253
- class="sbb-toast__close-button"
254
- icon-name="cross-small"
255
- ?negative=${this._isLightMode()}
256
- aria-label=${i18nCloseAlert[this._language.current]}
257
- sbb-toast-close
258
- ></sbb-transparent-button>` : nothing}
253
+ class="sbb-toast__close-button"
254
+ icon-name="cross-small"
255
+ ?negative=${this._isLightMode()}
256
+ aria-label=${i18nCloseAlert[this._language.current]}
257
+ sbb-toast-close
258
+ ></sbb-transparent-button>` : nothing}
259
259
  </div>
260
260
  </div>
261
261
  </div>
@@ -1,7 +1,7 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { html, isServer, unsafeCSS } from "lit";
3
3
  import { property } from "lit/decorators.js";
4
- import { SbbDisabledMixin, SbbEscapableOverlayController, SbbOpenCloseBaseElement, SbbOverlayPositionController, appendAriaElements, idReference, isAndroid, isIOS, isZeroAnimationDuration, popoverResetStyles, queueDomContentLoaded, readConfig, removeAriaElements, sbbOverlayOutsidePointerEventListener } from "./core.js";
4
+ import { SbbDisabledMixin, SbbEscapableOverlayController, SbbOpenCloseBaseElement, SbbOverlayPositionController, appendAriaElements, idReference, isAndroid, isIOS, isZeroAnimationDuration, popoverResetStyles, queueDomContentLoaded, readConfig, removeAriaElements, sbbInputModalityDetector, sbbOverlayOutsidePointerEventListener } from "./core.js";
5
5
 
6
6
  //#region src/elements/tooltip/tooltip.scss?inline
7
7
  var tooltip_default = ":host {\n --sbb-tooltip-max-width: min(\n 25rem,\n calc(100vw - var(--sbb-spacing-fixed-2x))\n );\n --sbb-tooltip-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n position-area: var(--sbb-overlay-position-area);\n position-try-fallbacks: var(--sbb-overlay-position-try-fallbacks);\n display: none;\n position: fixed;\n pointer-events: var(--sbb-tooltip-pointer-events, all);\n z-index: var(--sbb-tooltip-z-index, var(--sbb-overlay-default-z-index));\n animation-name: var(--sbb-tooltip-animation-name);\n animation-duration: var(--sbb-tooltip-animation-duration);\n animation-timing-function: var(--sbb-tooltip-animation-easing);\n font-size: var(--sbb-tooltip-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n line-height: var(--sbb-typo-line-height-text);\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) {\n --sbb-tooltip-animation-name: open;\n display: block;\n}\n\n:host(:is(:state(state-closing),[state--state-closing])) {\n --sbb-tooltip-animation-name: close;\n --sbb-tooltip-pointer-events: none;\n}\n\n:host(:is([data-position~=block-end], [data-position~=bottom], [data-position^=end])) {\n padding-block-start: var(--sbb-tooltip-gap);\n}\n\n:host(:is([data-position~=block-start], [data-position~=top], [data-position^=start])) {\n padding-block-end: var(--sbb-tooltip-gap);\n}\n\n:host(:is([data-position~=inline-start],\n[data-position~=inline-end],\n[data-position~=left],\n[data-position~=right],\n[data-position$=\" start\"],\n[data-position$=\" end\"])) {\n padding-inline: var(--sbb-tooltip-gap);\n}\n\n.sbb-tooltip {\n box-shadow: var(--sbb-box-shadow-level-5-soft);\n border: var(--sbb-border-width-1x) solid var(--sbb-tooltip-border-color);\n border-radius: var(--sbb-tooltip-border-radius);\n padding: var(--sbb-tooltip-padding);\n color: var(--sbb-tooltip-color);\n background-color: var(--sbb-tooltip-background-color);\n min-width: var(--sbb-tooltip-min-width);\n max-width: var(--sbb-tooltip-max-width);\n}\n\n@keyframes open {\n from {\n opacity: 0;\n translate: var(--sbb-tooltip-animation-translate);\n }\n to {\n opacity: 1;\n translate: 0;\n }\n}\n@keyframes close {\n from {\n opacity: 1;\n translate: 0;\n }\n to {\n opacity: 0;\n translate: var(--sbb-tooltip-animation-translate);\n }\n}\n";
@@ -334,7 +334,9 @@ let SbbTooltipElement = (() => {
334
334
  if (!newTarget || newTarget !== this) this._delayedClose();
335
335
  }, options);
336
336
  trigger.addEventListener("blur", () => this.close(), options);
337
- trigger.addEventListener("focus", () => this._delayedOpen(), options);
337
+ trigger.addEventListener("focus", () => {
338
+ if (sbbInputModalityDetector.mostRecentModality === "keyboard") this._delayedOpen();
339
+ }, options);
338
340
  }
339
341
  trigger.addEventListener("touchstart", () => {
340
342
  clearTimeout(this._longPressOpenTimeout);
@@ -243,18 +243,18 @@ let SbbTrainFormationElement = (() => {
243
243
  render() {
244
244
  return html`
245
245
  ${this._sectors.length && this._sectors[0].label !== void 0 ? html`<div class="sbb-train-formation__sectors" aria-hidden="true">
246
- ${this._sectors.map((aggregatedSector) => html`<span
247
- class="sbb-train-formation__sector"
248
- style=${styleMap({
246
+ ${this._sectors.map((aggregatedSector) => html`<span
247
+ class="sbb-train-formation__sector"
248
+ style=${styleMap({
249
249
  "--sbb-train-formation-wagon-count": aggregatedSector.wagonCount,
250
250
  "--sbb-train-formation-wagon-blocked-passage-count": aggregatedSector.blockedPassageCount
251
251
  })}
252
- >
253
- <span class="sbb-train-formation__sector-sticky-wrapper">
254
- ${`${aggregatedSector.wagonCount === 1 && aggregatedSector.label ? i18nSectorShort[this._language.current] : i18nSector[this._language.current]} ${aggregatedSector.label ? aggregatedSector.label : ""}`}
255
- </span>
256
- </span>`)}
257
- </div>` : nothing}
252
+ >
253
+ <span class="sbb-train-formation__sector-sticky-wrapper">
254
+ ${`${aggregatedSector.wagonCount === 1 && aggregatedSector.label ? i18nSectorShort[this._language.current] : i18nSector[this._language.current]} ${aggregatedSector.label ? aggregatedSector.label : ""}`}
255
+ </span>
256
+ </span>`)}
257
+ </div>` : nothing}
258
258
 
259
259
  <div class="sbb-train-formation__trains">
260
260
  ${this.renderList({
@@ -636,13 +636,13 @@ const SbbTrainWagonMixin = (superClass) => {
636
636
  ${this.label ? html$1`<li class="sbb-screen-reader-only">${labelString}</li>` : nothing}
637
637
  ${this.wagonClass && this.wagonType !== "closed" ? html$1`<li class="sbb-train-wagon__class">${wagonClassContent}</li>` : nothing}
638
638
  ${this.occupancy && this.wagonType !== "closed" ? html$1`<sbb-timetable-occupancy-icon
639
- class="sbb-train-wagon__occupancy"
640
- role="listitem"
641
- occupancy=${this.occupancy}
642
- ></sbb-timetable-occupancy-icon>` : nothing}
639
+ class="sbb-train-wagon__occupancy"
640
+ role="listitem"
641
+ occupancy=${this.occupancy}
642
+ ></sbb-timetable-occupancy-icon>` : nothing}
643
643
  ${hasBlockedPassageEntry ? html$1`<li class="sbb-screen-reader-only">
644
- ${i18nBlockedPassage[blockedPassage][this._language.current]}
645
- </li>` : nothing}
644
+ ${i18nBlockedPassage[blockedPassage][this._language.current]}
645
+ </li>` : nothing}
646
646
  </ul>`, () => html$1`<div class="sbb-train-wagon__compartment">
647
647
  <span class="sbb-screen-reader-only">
648
648
  ${`${this._wagonTypeLabel()}${this.sector ? `, ${sectorString}` : ""}`}
@@ -650,17 +650,17 @@ const SbbTrainWagonMixin = (superClass) => {
650
650
  ${this.label ? html$1`<span class="sbb-screen-reader-only">${labelString}</span>` : nothing}
651
651
  ${this.wagonClass && this.wagonType !== "closed" ? html$1`<span class="sbb-train-wagon__class">${wagonClassContent}</span>` : nothing}
652
652
  ${this.occupancy && this.wagonType !== "closed" ? html$1`<sbb-timetable-occupancy-icon
653
- class="sbb-train-wagon__occupancy"
654
- occupancy=${this.occupancy}
655
- ></sbb-timetable-occupancy-icon>` : nothing}
653
+ class="sbb-train-wagon__occupancy"
654
+ occupancy=${this.occupancy}
655
+ ></sbb-timetable-occupancy-icon>` : nothing}
656
656
  ${hasBlockedPassageEntry ? html$1`<span class="sbb-screen-reader-only">
657
- ${i18nBlockedPassage[blockedPassage][this._language.current]}
658
- </span>` : nothing}
657
+ ${i18nBlockedPassage[blockedPassage][this._language.current]}
658
+ </span>` : nothing}
659
659
  </div> `)}
660
660
  ${wagonTypeToIconMap[this.wagonType] ? html$1`<sbb-icon
661
- name=${wagonTypeToIconMap[this.wagonType]}
662
- class="sbb-train-wagon__main-icon"
663
- ></sbb-icon>` : nothing}
661
+ name=${wagonTypeToIconMap[this.wagonType]}
662
+ class="sbb-train-wagon__main-icon"
663
+ ></sbb-icon>` : nothing}
664
664
  <svg class="sbb-train-wagon__shape" viewBox="0 0 84 36" aria-hidden="true">
665
665
  <path d=${path}></path>
666
666
  <path
@@ -673,18 +673,18 @@ const SbbTrainWagonMixin = (superClass) => {
673
673
  ></path>
674
674
  </svg>
675
675
  ${this.additionalAccessibilityText ? html$1`<span class="sbb-screen-reader-only"
676
- >, ${this.additionalAccessibilityText}</span
677
- >` : nothing}
676
+ >, ${this.additionalAccessibilityText}</span
677
+ >` : nothing}
678
678
  <span
679
679
  class="sbb-train-wagon__information-wrapper"
680
680
  ?hidden=${!this.listChildren.length && !this.label}
681
681
  >
682
682
  ${this.label ? html$1`<span aria-hidden="true" class="sbb-train-wagon__label">${this.label}</span>` : nothing}
683
683
  ${this.label && this.listChildren.length ? html$1`<sbb-divider
684
- orientation=${this.orientation === "vertical" ? "horizontal" : "vertical"}
685
- aria-hidden="true"
686
- class="sbb-train-wagon__label-divider"
687
- ></sbb-divider>` : nothing}
684
+ orientation=${this.orientation === "vertical" ? "horizontal" : "vertical"}
685
+ aria-hidden="true"
686
+ class="sbb-train-wagon__label-divider"
687
+ ></sbb-divider>` : nothing}
688
688
  ${this.renderList({
689
689
  class: "sbb-train-wagon__attribute-icon-list",
690
690
  ariaLabel: i18nAdditionalWagonInformationHeading[this._language.current]
@@ -118,19 +118,19 @@ let SbbVisualCheckboxElement = (() => {
118
118
  render() {
119
119
  return html`
120
120
  ${this.checked || this.indeterminate ? html`<svg
121
- viewBox="0 0 24 24"
122
- xmlns="http://www.w3.org/2000/svg"
123
- width="100%"
124
- height="100%"
125
- >
126
- <path
127
- fill="none"
128
- d=${this.indeterminate ? "M9 12H15" : "M8 12.3304L10.4615 15L16 9"}
129
- stroke-width="2"
130
- stroke-linecap="round"
131
- stroke-linejoin="round"
132
- />
133
- </svg>` : nothing}
121
+ viewBox="0 0 24 24"
122
+ xmlns="http://www.w3.org/2000/svg"
123
+ width="100%"
124
+ height="100%"
125
+ >
126
+ <path
127
+ fill="none"
128
+ d=${this.indeterminate ? "M9 12H15" : "M8 12.3304L10.4615 15L16 9"}
129
+ stroke-width="2"
130
+ stroke-linecap="round"
131
+ stroke-linejoin="round"
132
+ />
133
+ </svg>` : nothing}
134
134
  `;
135
135
  }
136
136
  constructor() {
@@ -6,12 +6,12 @@ import{html as e,nothing as t,unsafeCSS as n}from"lit";import{SbbButtonBaseEleme
6
6
  <slot></slot>
7
7
  </span>
8
8
  ${this.disabled?t:e`<span class="sbb-expansion-panel-header__toggle">
9
- <sbb-icon
10
- name="chevron-small-down-medium"
11
- class="sbb-expansion-panel-header__toggle-icon"
12
- >
13
- </sbb-icon>
14
- </span>`}
9
+ <sbb-icon
10
+ name="chevron-small-down-medium"
11
+ class="sbb-expansion-panel-header__toggle-icon"
12
+ >
13
+ </sbb-icon>
14
+ </span>`}
15
15
  `}},b=`:host{--sbb-expansion-panel-animation-duration:var(--sbb-disable-animation-duration,var(--sbb-animation-duration-4x));--sbb-expansion-panel-border-color:var(--sbb-border-color-4-inverted);--sbb-expansion-panel-border-width:var(--sbb-border-width-1x);--sbb-expansion-panel-border-block-start-color:var(--sbb-expansion-panel-border-color);--sbb-expansion-panel-border-block-start-width:var(--sbb-expansion-panel-border-width);--sbb-expansion-panel-start-end-radius:var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-start-start-radius:var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-end-end-radius:var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-end-start-radius:var(--sbb-expansion-panel-border-radius);background-color:var(--sbb-expansion-panel-background-color);border:var(--sbb-expansion-panel-border-width) solid var(--sbb-expansion-panel-border-color);border-block-start-color:var(--sbb-expansion-panel-border-block-start-color);border-block-start-width:var(--sbb-expansion-panel-border-block-start-width);border-radius:var(--sbb-expansion-panel-start-start-radius) var(--sbb-expansion-panel-start-end-radius) var(--sbb-expansion-panel-end-end-radius) var(--sbb-expansion-panel-end-start-radius);background-clip:padding-box;display:block}:host([size=s]){--sbb-expansion-panel-title-gap:var(--sbb-expansion-panel-title-gap-s)}:host([size=l]){--sbb-expansion-panel-title-gap:var(--sbb-expansion-panel-title-gap-l)}:host(:not([size])){--sbb-expansion-panel-title-gap:var(--sbb-expansion-panel-title-gap-default)}@media (forced-colors:active){:host([disabled]){--sbb-expansion-panel-border-color:GrayText;--sbb-expansion-panel-border-block-start-color:GrayText}}:host([expanded]){--_sbb-expansion-panel-display-expanded:grid}:host(:is(:state(accordion),[state--accordion]):is(:state(accordion-first),[state--accordion-first])){--sbb-expansion-panel-start-end-radius:var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-start-start-radius:var(--sbb-expansion-panel-border-radius)}:host(:is(:state(accordion),[state--accordion]):not(:is(:state(accordion-first),[state--accordion-first]))){--sbb-expansion-panel-border-block-start-width:0;--sbb-expansion-panel-border-block-start-color:transparent;--sbb-expansion-panel-start-end-radius:0;--sbb-expansion-panel-start-start-radius:0}:host(:is(:state(accordion),[state--accordion]):is(:state(accordion-last),[state--accordion-last])){--sbb-expansion-panel-end-end-radius:var(--sbb-expansion-panel-border-radius);--sbb-expansion-panel-end-start-radius:var(--sbb-expansion-panel-border-radius)}:host(:is(:state(accordion),[state--accordion]):not(:is(:state(accordion-last),[state--accordion-last]))){--sbb-expansion-panel-end-end-radius:0;--sbb-expansion-panel-end-start-radius:0}:host([color=white]){--sbb-expansion-panel-background-color:var(--sbb-background-color-1);--sbb-expansion-panel-background-color-hover:var(--sbb-background-color-3)}:host([color=milk]){--sbb-expansion-panel-background-color:var(--sbb-background-color-3);--sbb-expansion-panel-background-color-hover:var(--sbb-background-color-1)}:host([borderless]){--sbb-expansion-panel-border-width:0;--sbb-expansion-panel-border-color:transparent;--sbb-expansion-panel-border-block-start-width:0;--sbb-expansion-panel-border-block-start-color:transparent}@media (forced-colors:active){:host([borderless]){--sbb-expansion-panel-border-width:var(--sbb-border-width-1x);--sbb-expansion-panel-border-block-start-width:var(--sbb-expansion-panel-border-width)}}:host([borderless]:is(:state(accordion),[state--accordion]):not(:is(:state(accordion-first),[state--accordion-first]))){--sbb-expansion-panel-border-block-start-width:var(--sbb-spacing-fixed-1x)}@media (forced-colors:active){:host([borderless]:is(:state(accordion),[state--accordion]):not(:is(:state(accordion-first),[state--accordion-first]))){--sbb-expansion-panel-border-block-start-width:0}}:host(:not([disabled]):is(:state(toggle-hover),[state--toggle-hover])){background-color:var(--sbb-expansion-panel-background-color-hover)}@media (forced-colors:active){:host(:not([disabled]):is(:state(toggle-hover),[state--toggle-hover])){--sbb-expansion-panel-border-color:Highlight;--sbb-expansion-panel-border-block-start-color:Highlight}}.sbb-expansion-panel__header{margin:0}.sbb-expansion-panel__content-wrapper{display:var(--_sbb-expansion-panel-display-expanded,none);opacity:0;grid-template-rows:0fr}:host(:is(:state(state-opened),[state--state-opened])) .sbb-expansion-panel__content-wrapper{opacity:1;grid-template-rows:1fr}:host(:is(:state(state-opening),[state--state-opening])) .sbb-expansion-panel__content-wrapper{animation-name:open,open-opacity;animation-fill-mode:forwards;animation-duration:var(--sbb-expansion-panel-animation-duration);animation-timing-function:var(--sbb-animation-easing);animation-delay:0s, var(--sbb-expansion-panel-animation-duration)}:host(:is(:state(state-closing),[state--state-closing])) .sbb-expansion-panel__content-wrapper{visibility:hidden;animation-name:close;animation-duration:var(--sbb-expansion-panel-animation-duration);animation-timing-function:var(--sbb-animation-easing);display:grid}.sbb-expansion-panel__content{min-width:0;min-height:0}@keyframes open{0%{grid-template-rows:0fr}to{grid-template-rows:1fr}}@keyframes open-opacity{0%{opacity:0}to{opacity:1}}@keyframes close{0%{opacity:1;grid-template-rows:1fr}to{opacity:0;grid-template-rows:0fr}}
16
16
  `;let x=0,S=(()=>{let r=a,i=[],o,s=[],c=[],f,g=[],_=[],v,y,S,C=[],w=[],T,E=[],D=[];return class extends r{static{let e=typeof Symbol==`function`&&Symbol.metadata?Object.create(r[Symbol.metadata]??null):void 0;o=[h({attribute:`title-level`})],f=[h({reflect:!0})],v=[h({reflect:!0,type:Boolean})],y=[h({reflect:!0,type:Boolean})],S=[l(),h({reflect:!0,type:Boolean})],T=[h({reflect:!0})],p(this,null,o,{kind:`accessor`,name:`titleLevel`,static:!1,private:!1,access:{has:e=>`titleLevel`in e,get:e=>e.titleLevel,set:(e,t)=>{e.titleLevel=t}},metadata:e},s,c),p(this,null,f,{kind:`accessor`,name:`color`,static:!1,private:!1,access:{has:e=>`color`in e,get:e=>e.color,set:(e,t)=>{e.color=t}},metadata:e},g,_),p(this,null,v,{kind:`setter`,name:`expanded`,static:!1,private:!1,access:{has:e=>`expanded`in e,set:(e,t)=>{e.expanded=t}},metadata:e},null,i),p(this,null,y,{kind:`setter`,name:`disabled`,static:!1,private:!1,access:{has:e=>`disabled`in e,set:(e,t)=>{e.disabled=t}},metadata:e},null,i),p(this,null,S,{kind:`accessor`,name:`borderless`,static:!1,private:!1,access:{has:e=>`borderless`in e,get:e=>e.borderless,set:(e,t)=>{e.borderless=t}},metadata:e},C,w),p(this,null,T,{kind:`accessor`,name:`size`,static:!1,private:!1,access:{has:e=>`size`in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:e},E,D),e&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})}static{this.elementName=`sbb-expansion-panel`}static{this.styles=[n(b)]}static{this.events={beforeopen:`beforeopen`,open:`open`,beforeclose:`beforeclose`,close:`close`}}#e;get titleLevel(){return this.#e}set titleLevel(e){this.#e=e}#t;get color(){return this.#t}set color(e){this.#t=e}set expanded(e){this._expanded=e,this._onExpandedChange()}get expanded(){return this._expanded}set disabled(e){this._disabled=e,this._updateDisabledOnHeader(this._disabled)}get disabled(){return this._disabled}#n;get borderless(){return this.#n}set borderless(e){this.#n=e}#r;get size(){return this.#r}set size(e){this.#r=e}set _state(e){this._stateInternal&&this.internals.states.delete(`state-${this._stateInternal}`),this._stateInternal=e,this._stateInternal&&this.internals.states.add(`state-${this._stateInternal}`)}get _state(){return this._stateInternal}constructor(){super(),this.#e=(m(this,i),m(this,s,null)),this.#t=(m(this,c),m(this,g,`white`)),this._expanded=(m(this,_),!1),this._disabled=!1,this.#n=m(this,C,!1),this.#r=(m(this,w),m(this,E,null)),this._stateInternal=m(this,D),this._progressiveId=`-${++x}`,this._state=`closed`,this.addEventListener?.(`toggleexpanded`,e=>{e.target===this._headerRef&&this._toggleExpanded()})}connectedCallback(){super.connectedCallback(),this.toggleState(`accordion`,!!this.closest?.(`sbb-accordion`))}disconnectedCallback(){super.disconnectedCallback(),this.internals.states.delete(`accordion`)}_toggleExpanded(){this.expanded=!this.expanded}_onExpandedChange(){this._headerRef?.setAttribute(`aria-expanded`,String(this.expanded)),this._contentRef?.setAttribute(`aria-hidden`,String(!this.expanded)),this.expanded?this._open():this._state===`opened`&&this._close()}_open(){this._state=`opening`,this.dispatchEvent(new Event(`beforeopen`)),(!this.hasUpdated||this._isZeroAnimationDuration())&&this._handleOpening()}_close(){this._state=`closing`,this.dispatchEvent(new Event(`beforeclose`)),this._isZeroAnimationDuration()&&this._handleClosing()}_isZeroAnimationDuration(){return u(this,`--sbb-expansion-panel-animation-duration`)}_handleOpening(){this._state=`opened`,this.dispatchEvent(new Event(`open`))}_handleClosing(){this._state=`closed`,this.dispatchEvent(new Event(`close`))}_updateDisabledOnHeader(e){this._headerRef&&(this._headerRef.disabled=e)}_handleSlotchange(){let e=Array.from(this.children??[]),t=e.find(e=>e.localName===`sbb-expansion-panel-header`),n=e.find(e=>e.localName===`sbb-expansion-panel-content`);this._headerRef===t&&this._contentRef===n||(t&&this._headerRef!==t&&(t.id||=`sbb-expansion-panel-header${this._progressiveId}`,t.setAttribute(`aria-expanded`,String(this.expanded)),t.toggleAttribute(`disabled`,this.disabled)),n&&this._contentRef!==n&&(n.id||=`sbb-expansion-panel-content${this._progressiveId}`,n.setAttribute(`aria-hidden`,String(!this.expanded))),this._headerRef=t,this._contentRef=n,this._headerRef&&this._contentRef&&(this._headerRef.setAttribute(`aria-controls`,this._contentRef.id),this._contentRef.setAttribute(`aria-labelledby`,this._headerRef.id),d(this._contentRef).toggle(`icon-space`,d(this._headerRef).has(`icon`))))}_onAnimationEnd(e){e.animationName===`open-opacity`&&this._state===`opening`?this._handleOpening():e.animationName===`close`&&this._state===`closing`&&this._handleClosing()}render(){return e`
17
17
  <div
@@ -1,5 +1,5 @@
1
1
  import{__esDecorate as e,__runInitializers as t}from"tslib";import{nothing as n,unsafeCSS as r}from"lit";import{property as i}from"lit/decorators.js";import{ref as a}from"lit/directives/ref.js";import{html as o,unsafeStatic as s}from"lit/static-html.js";import{SbbSecondaryButtonElement as c,SbbSecondaryButtonStaticElement as l}from"./button.pure.js";import{SbbDisabledMixin as u,SbbElement as d,SbbFormAssociatedMixin as f,SbbLanguageController as p,forceType as m,forwardEvent as h,i18nFileSelectorButtonLabel as g,i18nFileSelectorButtonLabelMultiple as _,i18nFileSelectorCurrentlySelected as v,i18nFileSelectorDeleteFile as y,i18nFileSelectorSubtitleLabel as b,i18nFileSelectorSubtitleLabelMultiple as x,sbbInputModalityDetector as S,screenReaderOnlyStyles as C,ɵstateController as w}from"./core.js";import{SbbIconElement as T}from"./icon.pure.js";var E=`:host{--sbb-file-selector-transition-duration:var(--sbb-disable-animation-duration,var(--sbb-animation-duration-2x));width:20rem;display:block}@media (forced-colors:active){:host(:disabled){--sbb-file-selector-color:GrayText;--sbb-file-selector-subtitle-color:GrayText;--sbb-file-selector-border-color:GrayText}}:host(:is(:state(active),[state--active])){--sbb-file-selector-background-color:var(--sbb-background-color-3);--sbb-file-selector-border-color:light-dark(var(--sbb-color-storm),var(--sbb-color-anthracite))}@media (forced-colors:active){:host(:is(:state(active),[state--active])){--sbb-file-selector-border-color:Highlight}}.sbb-file-selector__input-container{-webkit-tap-highlight-color:transparent;flex-direction:column;display:flex}.sbb-file-selector__file-list{row-gap:var(--sbb-spacing-fixed-3x);padding-inline:0;padding-block:var(--sbb-spacing-fixed-6x) var(--sbb-spacing-fixed-1x);flex-direction:column;margin-block:0;display:flex}.sbb-file-selector__file{gap:var(--sbb-spacing-fixed-4x);line-height:var(--sbb-typo-line-height-text);letter-spacing:var(--sbb-typo-letter-spacing-text);font-size:var(--sbb-text-font-size-s);justify-content:space-between;align-items:center;display:flex}.sbb-file-selector__file-details{justify-content:space-between;gap:var(--sbb-spacing-fixed-4x);flex:1;display:flex;overflow:auto}.sbb-file-selector__file-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sbb-file-selector__file-size{white-space:nowrap;color:light-dark(var(--sbb-color-metal),var(--sbb-color-smoke))}:host(:not(:is(:state(slotted-error),[state--slotted-error]))) .sbb-file-selector__error{display:none}
2
- `,D=class extends Event{get files(){return this._files}constructor(e){super(`filechanged`,{bubbles:!0,composed:!0}),this._files=Object.freeze(e||[])}};const O=l=>(()=>{let d=u(f(l)),b=[],x,T=[],O=[],k,A=[],j=[],M,N=[],P=[],F,I=[],L=[],R,z=[],B=[],V,H;return class extends d{constructor(){super(...arguments),this.#e=(t(this,b),t(this,T,null)),this.#t=(t(this,O),t(this,A,!1)),this.#n=(t(this,j),t(this,N,`default`)),this.#r=(t(this,P),t(this,I,``)),this.#i=(t(this,L),t(this,z,``)),this._files=(t(this,B),[]),this._suffixes=[`B`,`kB`,`MB`,`GB`,`TB`],this.language=new p(this),this._counter=0}static{let t=typeof Symbol==`function`&&Symbol.metadata?Object.create(d[Symbol.metadata]??null):void 0;x=[i({reflect:!0})],k=[m(),i({type:Boolean})],M=[i({attribute:`multiple-mode`})],F=[m(),i()],R=[m(),i({attribute:`accessibility-label`})],V=[i({attribute:!1})],H=[i({attribute:!1})],e(this,null,x,{kind:`accessor`,name:`size`,static:!1,private:!1,access:{has:e=>`size`in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:t},T,O),e(this,null,k,{kind:`accessor`,name:`multiple`,static:!1,private:!1,access:{has:e=>`multiple`in e,get:e=>e.multiple,set:(e,t)=>{e.multiple=t}},metadata:t},A,j),e(this,null,M,{kind:`accessor`,name:`multipleMode`,static:!1,private:!1,access:{has:e=>`multipleMode`in e,get:e=>e.multipleMode,set:(e,t)=>{e.multipleMode=t}},metadata:t},N,P),e(this,null,F,{kind:`accessor`,name:`accept`,static:!1,private:!1,access:{has:e=>`accept`in e,get:e=>e.accept,set:(e,t)=>{e.accept=t}},metadata:t},I,L),e(this,null,R,{kind:`accessor`,name:`accessibilityLabel`,static:!1,private:!1,access:{has:e=>`accessibilityLabel`in e,get:e=>e.accessibilityLabel,set:(e,t)=>{e.accessibilityLabel=t}},metadata:t},z,B),e(this,null,V,{kind:`setter`,name:`value`,static:!1,private:!1,access:{has:e=>`value`in e,set:(e,t)=>{e.value=t}},metadata:t},null,b),e(this,null,H,{kind:`setter`,name:`files`,static:!1,private:!1,access:{has:e=>`files`in e,set:(e,t)=>{e.files=t}},metadata:t},null,b),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}static{this.elementDependencies=[c]}static{this.events={filechanged:`filechanged`}}static{this.styles=[C,r(E)]}#e;get size(){return this.#e}set size(e){this.#e=e}#t;get multiple(){return this.#t}set multiple(e){this.#t=e}#n;get multipleMode(){return this.#n}set multipleMode(e){this.#n=e}#r;get accept(){return this.#r}set accept(e){this.#r=e}#i;get accessibilityLabel(){return this.#i}set accessibilityLabel(e){this.#i=e}set value(e){this._hiddenInput.value=e??``,e||(this.files=[])}get value(){return this._hiddenInput?.value}set files(e){this._files=e??[];let t=new DataTransfer;this.files.forEach(e=>t.items.add(e)),this._hiddenInput.files=t.files,this.updateFormValue()}get files(){return this._files}get type(){return`file`}formResetCallback(){this.files=[]}formStateRestoreCallback(e,t){e&&(this.files=e.getAll(this.name))}updateFormValue(){let e=new FormData;this.files.forEach(t=>e.append(this.name,t)),this.internals.setFormValue(e)}_checkFileEquality(e,t){return e.name===t.name&&e.size===t.size&&e.lastModified===t.lastModified}_onFocus(){S.mostRecentModality===`keyboard`&&w(this.loadButton).add(`focus-visible`)}_onBlur(){w(this.loadButton).delete(`focus-visible`)}_readFiles(e){let t=e.target;t.files&&this.createFileList(t.files),h(e,this)}createFileList(e){let t=Array.from(e);!this.multiple&&e.length>1||this.accept&&t.some(e=>!this.accept.split(`,`).some(t=>e.name.endsWith(t.trim())))||(!this.multiple||this.multipleMode!==`persistent`||this.files.length===0?this.files=t:this.files=t.filter(e=>this.files.findIndex(t=>this._checkFileEquality(e,t))===-1).concat(this.files),this._updateA11yLiveRegion(),this._dispatchFileChangedEvent())}getButtonLabel(){return this.multiple?_[this.language.current]:g[this.language.current]}_removeFile(e){this.files=this.files.filter(t=>!this._checkFileEquality(e,t)),this._updateA11yLiveRegion(),this.dispatchEvent(new InputEvent(`input`,{bubbles:!0,composed:!0})),this.dispatchEvent(new Event(`change`,{bubbles:!0})),this._dispatchFileChangedEvent()}_dispatchFileChangedEvent(){let e=this.files;this.dispatchEvent(new D(e))}_formatFileSize(e){let t=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**t).toFixed(0)} ${this._suffixes[t]}`}_updateA11yLiveRegion(){this._liveRegion.innerText=v(this.files.map(e=>e.name))[this.language.current]}_renderFileList(){let e=this.files.length>1?{WRAPPER:`ul`,ELEMENT:`li`}:{WRAPPER:`div`,ELEMENT:`span`};return o`
2
+ `,D=class extends Event{get files(){return this._files}constructor(e){super(`filechanged`,{bubbles:!0,composed:!0}),this._files=Object.freeze(e||[])}};const O=l=>(()=>{let d=u(f(l)),b=[],x,T=[],O=[],k,A=[],j=[],M,N=[],P=[],F,I=[],L=[],R,z=[],B=[],V,H;return class extends d{constructor(){super(...arguments),this.#e=(t(this,b),t(this,T,null)),this.#t=(t(this,O),t(this,A,!1)),this.#n=(t(this,j),t(this,N,`default`)),this.#r=(t(this,P),t(this,I,``)),this.#i=(t(this,L),t(this,z,``)),this._files=(t(this,B),[]),this._suffixes=[`B`,`kB`,`MB`,`GB`,`TB`],this.language=new p(this),this._counter=0}static{let t=typeof Symbol==`function`&&Symbol.metadata?Object.create(d[Symbol.metadata]??null):void 0;x=[i({reflect:!0})],k=[m(),i({type:Boolean})],M=[i({attribute:`multiple-mode`})],F=[m(),i()],R=[m(),i({attribute:`accessibility-label`})],V=[i({attribute:!1})],H=[i({attribute:!1})],e(this,null,x,{kind:`accessor`,name:`size`,static:!1,private:!1,access:{has:e=>`size`in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:t},T,O),e(this,null,k,{kind:`accessor`,name:`multiple`,static:!1,private:!1,access:{has:e=>`multiple`in e,get:e=>e.multiple,set:(e,t)=>{e.multiple=t}},metadata:t},A,j),e(this,null,M,{kind:`accessor`,name:`multipleMode`,static:!1,private:!1,access:{has:e=>`multipleMode`in e,get:e=>e.multipleMode,set:(e,t)=>{e.multipleMode=t}},metadata:t},N,P),e(this,null,F,{kind:`accessor`,name:`accept`,static:!1,private:!1,access:{has:e=>`accept`in e,get:e=>e.accept,set:(e,t)=>{e.accept=t}},metadata:t},I,L),e(this,null,R,{kind:`accessor`,name:`accessibilityLabel`,static:!1,private:!1,access:{has:e=>`accessibilityLabel`in e,get:e=>e.accessibilityLabel,set:(e,t)=>{e.accessibilityLabel=t}},metadata:t},z,B),e(this,null,V,{kind:`setter`,name:`value`,static:!1,private:!1,access:{has:e=>`value`in e,set:(e,t)=>{e.value=t}},metadata:t},null,b),e(this,null,H,{kind:`setter`,name:`files`,static:!1,private:!1,access:{has:e=>`files`in e,set:(e,t)=>{e.files=t}},metadata:t},null,b),t&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:t})}static{this.elementDependencies=[c]}static{this.events={filechanged:`filechanged`}}static{this.styles=[C,r(E)]}#e;get size(){return this.#e}set size(e){this.#e=e}#t;get multiple(){return this.#t}set multiple(e){this.#t=e}#n;get multipleMode(){return this.#n}set multipleMode(e){this.#n=e}#r;get accept(){return this.#r}set accept(e){this.#r=e}#i;get accessibilityLabel(){return this.#i}set accessibilityLabel(e){this.#i=e}set value(e){this._hiddenInput.value=e??``,e||(this.files=[])}get value(){return this._hiddenInput?.value}set files(e){this._files=e??[];let t=new DataTransfer;this.files.forEach(e=>t.items.add(e)),this._hiddenInput.files=t.files,this.updateFormValue()}get files(){return this._files}get type(){return`file`}formResetCallback(){this.files=[]}formStateRestoreCallback(e,t){e&&(this.files=e.getAll(this.name))}updateFormValue(){let e=new FormData;this.files.forEach(t=>e.append(this.name,t)),this.internals.setFormValue(e)}_checkFileEquality(e,t){return e.name===t.name&&e.size===t.size&&e.lastModified===t.lastModified}_onFocus(){S.mostRecentModality===`keyboard`&&w(this.loadButton).add(`focus-visible`)}_onBlur(){w(this.loadButton).delete(`focus-visible`)}_readFiles(e){let t=e.target;t.files&&this.createFileList(t.files),h(e,this)}createFileList(e,t=!1){let n=Array.from(e);!this.multiple&&e.length>1||this.accept&&n.some(e=>!this.accept.split(`,`).some(t=>e.name.endsWith(t.trim())))||(!this.multiple||this.multipleMode!==`persistent`||this.files.length===0?this.files=n:this.files=n.filter(e=>this.files.findIndex(t=>this._checkFileEquality(e,t))===-1).concat(this.files),this._updateA11yLiveRegion(),this._dispatchFileChangedEvent(),t&&this._dispatchNativeEvents())}getButtonLabel(){return this.multiple?_[this.language.current]:g[this.language.current]}_removeFile(e){this.files=this.files.filter(t=>!this._checkFileEquality(e,t)),this._updateA11yLiveRegion(),this._dispatchNativeEvents(),this._dispatchFileChangedEvent()}_dispatchNativeEvents(){this.dispatchEvent(new InputEvent(`input`,{bubbles:!0,composed:!0})),this.dispatchEvent(new Event(`change`,{bubbles:!0}))}_dispatchFileChangedEvent(){let e=this.files;this.dispatchEvent(new D(e))}_formatFileSize(e){let t=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**t).toFixed(0)} ${this._suffixes[t]}`}_updateA11yLiveRegion(){this._liveRegion.innerText=v(this.files.map(e=>e.name))[this.language.current]}_renderFileList(){let e=this.files.length>1?{WRAPPER:`ul`,ELEMENT:`li`}:{WRAPPER:`div`,ELEMENT:`span`};return o`
3
3
  <${s(e.WRAPPER)} class="sbb-file-selector__file-list">
4
4
  ${this.files.map(t=>o`
5
5
  <${s(e.ELEMENT)} class="sbb-file-selector__file">
@@ -15,7 +15,7 @@ import{__esDecorate as e,__runInitializers as t}from"tslib";import{nothing as n,
15
15
  ></sbb-secondary-button>
16
16
  </${s(e.ELEMENT)}>`)}
17
17
  </${s(e.WRAPPER)}>
18
- `}_onDragEnter(e){this._counter++,!this.disabled&&!this.formDisabled&&(this._setDragState(e.target,!0),this._blockEvent(e))}_onDragLeave(e){this._counter--,!this.disabled&&!this.formDisabled&&e.target===this._dragTarget&&this._counter===0&&(this._setDragState(),this._blockEvent(e))}_onFileDrop(e){this._counter=0,!this.disabled&&!this.formDisabled&&(this._setDragState(),this._blockEvent(e),this.createFileList(e.dataTransfer.files))}_blockEvent(e){e.stopPropagation(),e.preventDefault()}_setDragState(e=void 0,t=!1){this._dragTarget=e,this.toggleState(`active`,t),w(this.loadButton).toggle(`active`,t)}render(){let e=this.accessibilityLabel?`${this.getButtonLabel()} - ${this.accessibilityLabel}`:void 0;return o`
18
+ `}_onDragEnter(e){this._counter++,!this.disabled&&!this.formDisabled&&(this._setDragState(e.target,!0),this._blockEvent(e))}_onDragLeave(e){this._counter--,!this.disabled&&!this.formDisabled&&e.target===this._dragTarget&&this._counter===0&&(this._setDragState(),this._blockEvent(e))}_onFileDrop(e){this._counter=0,!this.disabled&&!this.formDisabled&&(this._setDragState(),this._blockEvent(e),this.createFileList(e.dataTransfer.files,!0))}_blockEvent(e){e.stopPropagation(),e.preventDefault()}_setDragState(e=void 0,t=!1){this._dragTarget=e,this.toggleState(`active`,t),w(this.loadButton).toggle(`active`,t)}render(){let e=this.accessibilityLabel?`${this.getButtonLabel()} - ${this.accessibilityLabel}`:void 0;return o`
19
19
  <div
20
20
  class="sbb-file-selector__input-container"
21
21
  @dragenter=${this._onDragEnter}
package/image.pure.js CHANGED
@@ -53,14 +53,14 @@ import{__esDecorate as e,__runInitializers as t}from"tslib";import{html as n,not
53
53
  }`,u(e)}_createMediaQueryString(e){let t=``;return e.forEach(e=>{let n=e.conditionFeature,r;r=e.conditionFeatureValue.lyneDesignToken?f[e.conditionFeatureValue.value]??``:e.conditionFeatureValue.value;let i=e.conditionOperator?` ${e.conditionOperator} `:``;t+=`(${n}: ${r})${i}`}),t}_imageLoaded(){this._logPerformanceMarks(),this.internals.states.add(`loaded`),this.dispatchEvent(new Event(`load`))}render(){let e=this._prepareImageUrl(this.imageSrc,!0),t=this._prepareImageUrl(this.imageSrc,!1);this.loading===`lazy`&&(this.decoding=`async`,this.importance=`low`);let i=this._preparePictureSizeConfigs();return n`
54
54
  <div class="sbb-image__wrapper">
55
55
  ${this.skipLqip?r:n`<img
56
- alt=""
57
- class="sbb-image__blurred"
58
- src=${e}
59
- width="1000"
60
- height="562"
61
- loading=${this.loading??r}
62
- decoding=${this.decoding??r}
63
- />`}
56
+ alt=""
57
+ class="sbb-image__blurred"
58
+ src=${e}
59
+ width="1000"
60
+ height="562"
61
+ loading=${this.loading??r}
62
+ decoding=${this.decoding??r}
63
+ />`}
64
64
 
65
65
  <picture>
66
66
  <!-- render picture element sources -->
@@ -1720,7 +1720,15 @@ summary {
1720
1720
  --sbb-stepper-marker-color: var(--sbb-color-3);
1721
1721
  --sbb-table-border-color: var(--sbb-color-cloud);
1722
1722
  --sbb-table-border-color: light-dark(var(--sbb-color-cloud), var(--sbb-color-anthracite));
1723
+ --sbb-table-border-color-hover: var(--sbb-color-aluminium);
1724
+ --sbb-table-border-color-hover: light-dark(
1725
+ var(--sbb-color-aluminium),
1726
+ var(--sbb-table-border-color)
1727
+ );
1728
+ --sbb-table-border-color-selected: var(--sbb-background-color-4-inverted);
1729
+ --sbb-table-border-width: var(--sbb-border-width-1x);
1723
1730
  --sbb-table-background-color: var(--sbb-background-color-1);
1731
+ --sbb-table-background-color-hover: var(--sbb-background-color-4);
1724
1732
  --sbb-table-row-striped-color: var(--sbb-background-color-3);
1725
1733
  --sbb-table-color: var(--sbb-color-1);
1726
1734
  --sbb-table-caption-color: var(--sbb-color-granite);
@@ -2248,6 +2256,10 @@ sbb-card .sbb-action {
2248
2256
  pointer-events: all;
2249
2257
  }
2250
2258
 
2259
+ sbb-carousel-item sbb-image {
2260
+ border-radius: unset;
2261
+ }
2262
+
2251
2263
  sbb-container > [slot=image]:is(sbb-image, img),
2252
2264
  sbb-container > [slot=image] :is(sbb-image, img):not(.sbb-figure-overlap-image) {
2253
2265
  --sbb-image-object-fit: cover;
@@ -2546,7 +2558,7 @@ sbb-sidebar-container:is(:has(> sbb-sidebar:not([position=end]):is(:is(:state(st
2546
2558
  }
2547
2559
 
2548
2560
  :is(.sbb-table, .sbb-table-m, .sbb-table-s, .sbb-table-xs) {
2549
- --sbb-table-border: var(--sbb-border-width-1x) solid var(--sbb-table-border-color);
2561
+ --sbb-table-border: var(--sbb-table-border-width) solid var(--sbb-table-border-color);
2550
2562
  --sbb-table-sticky-shadow-transition-duration: var(
2551
2563
  --sbb-disable-animation-duration,
2552
2564
  var(--sbb-animation-duration-6x)
@@ -2630,7 +2642,10 @@ sbb-sidebar-container:is(:has(> sbb-sidebar:not([position=end]):is(:is(:state(st
2630
2642
  sbb-table-wrapper[negative] .sbb-table,
2631
2643
  .sbb-table--negative {
2632
2644
  --sbb-table-border-color: var(--sbb-color-anthracite);
2645
+ --sbb-table-border-color-hover: var(--sbb-table-border-color);
2646
+ --sbb-table-border-color-selected: var(--sbb-color-cloud);
2633
2647
  --sbb-table-background-color: var(--sbb-background-color-1-negative);
2648
+ --sbb-table-background-color-hover: var(--sbb-background-color-4-negative);
2634
2649
  --sbb-table-color: var(--sbb-color-1-negative);
2635
2650
  --sbb-table-row-striped-color: var(--sbb-background-color-3-negative);
2636
2651
  --sbb-table-caption-color: var(--sbb-color-cement);
@@ -2644,6 +2659,26 @@ sbb-table-wrapper[negative] .sbb-table,
2644
2659
  background-color: var(--sbb-table-background-color);
2645
2660
  }
2646
2661
 
2662
+ .sbb-table--hover tbody tr:hover :is(th, td) {
2663
+ background-color: var(--sbb-table-background-color-hover);
2664
+ border-color: var(--sbb-table-border-color-hover);
2665
+ }
2666
+ .sbb-table--hover :is(thead:has(+ tbody tr:first-of-type:hover) tr:last-of-type :is(th, td),
2667
+ tbody tr:has(+ tr:hover) :is(th, td)) {
2668
+ border-block-end-color: var(--sbb-table-border-color-hover);
2669
+ }
2670
+
2671
+ tr.sbb-table--selected :is(th, td) {
2672
+ position: relative;
2673
+ }
2674
+ tr.sbb-table--selected :is(th, td)::after {
2675
+ content: "";
2676
+ position: absolute;
2677
+ inset: 0 0 calc(-1 * var(--sbb-table-border-width));
2678
+ pointer-events: none;
2679
+ border-block-end: var(--sbb-table-border-width) solid var(--sbb-table-border-color-selected);
2680
+ }
2681
+
2647
2682
  .sbb-table--theme-iron {
2648
2683
  --sbb-table-cell-color: var(--sbb-color-4);
2649
2684
  }
@@ -2766,6 +2801,9 @@ sbb-tab-nav-bar .sbb-tab-amount {
2766
2801
  filter: brightness(var(--sbb-teaser-image-brightness, 1));
2767
2802
  transition: filter, scale var(--sbb-teaser-image-animation-duration) var(--sbb-teaser-image-animation-easing);
2768
2803
  }
2804
+ :is(sbb-teaser, sbb-teaser-hero, sbb-teaser-product) .sbb-figure {
2805
+ max-width: 100%;
2806
+ }
2769
2807
 
2770
2808
  sbb-teaser :is(sbb-image, img):not(.sbb-figure-overlap-image) {
2771
2809
  --sbb-image-object-fit: cover;