@sbb-esta/lyne-elements-dev 5.8.0-dev.1789370784 → 5.8.0-dev.1789399474
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core.js +20 -20
- package/custom-elements.json +2013 -154
- package/development/core/dom/scroll.d.ts +15 -2
- package/development/core.js +63 -9
- package/development/dialog.pure.js +3 -3
- package/development/header.pure.js +1 -1
- package/development/logo/common/logo-common.d.ts +7 -0
- package/development/logo/{logo.component.d.ts → logo/logo.component.d.ts} +3 -6
- package/development/logo/logo-cargo/logo-cargo.component.d.ts +20 -0
- package/development/logo/logo-cargo-international/logo-cargo-international.component.d.ts +20 -0
- package/development/logo/logo-elvetino/logo-elvetino.component.d.ts +20 -0
- package/development/logo.js +4 -1
- package/development/logo.pure.d.ts +4 -1
- package/development/logo.pure.js +664 -81
- package/dialog/_dialog.global.scss +7 -6
- package/dialog.pure.js +3 -3
- package/header.pure.js +1 -1
- package/index.d.ts +4 -1
- package/index.js +4 -1
- package/lean-off-brand-theme.css +12 -7
- package/lean-safety-theme.css +12 -7
- package/lean-theme.css +12 -7
- package/logo/_logo.global.scss +5 -1
- package/logo.js +1 -1
- package/logo.pure.js +52 -3
- package/off-brand-theme.css +12 -7
- package/package.json +2 -2
- package/safety-theme.css +12 -7
- package/standard-theme.css +12 -7
|
@@ -2,12 +2,25 @@ export declare function pageScrollDisabled(): boolean;
|
|
|
2
2
|
/**
|
|
3
3
|
* Handle the page scroll, allowing to disable/enable the window scroll avoiding a potential
|
|
4
4
|
* content shift caused by the disappearance/appearance of the scrollbar.
|
|
5
|
+
*
|
|
6
|
+
* The body is fixed in place (instead of just using `overflow: hidden`), which reliably prevents
|
|
7
|
+
* scrolling of the underlying page. The current scroll position is stored before
|
|
8
|
+
* fixing the body and restored again once the scroll is re-enabled, so the page doesn't jump
|
|
9
|
+
* and content that was previously scrolled out of view isn't hidden behind the fixed body.
|
|
10
|
+
*
|
|
11
|
+
* As an additional safety net for edge cases, `touchmove` events are intercepted and prevented,
|
|
12
|
+
* unless they originate from within a scrollable element that is not at its scroll boundary
|
|
13
|
+
* (e.g. an internal scrollable content of a dialog, navigation, sidebar, etc.).
|
|
5
14
|
*/
|
|
6
15
|
export declare class SbbScrollHandler {
|
|
7
|
-
private
|
|
16
|
+
private _scrollPosition;
|
|
8
17
|
private _position;
|
|
18
|
+
private _top;
|
|
19
|
+
private _insetInline;
|
|
9
20
|
private _overflow;
|
|
10
|
-
private
|
|
21
|
+
private _touchStartY;
|
|
22
|
+
private _touchStart;
|
|
23
|
+
private _touchMove;
|
|
11
24
|
disableScroll(): void;
|
|
12
25
|
enableScroll(): void;
|
|
13
26
|
}
|
package/development/core.js
CHANGED
|
@@ -4588,32 +4588,86 @@ function pageScrollDisabled() {
|
|
|
4588
4588
|
return document.body.hasAttribute("data-sbb-scroll-disabled");
|
|
4589
4589
|
}
|
|
4590
4590
|
/**
|
|
4591
|
+
* Checks whether the given element can be scrolled vertically
|
|
4592
|
+
* (i.e. it has an overflow of `auto`/`scroll` and its content overflows its box).
|
|
4593
|
+
*/
|
|
4594
|
+
function isVerticallyScrollable(element) {
|
|
4595
|
+
const overflowY = getComputedStyle(element).overflowY;
|
|
4596
|
+
return (overflowY === "auto" || overflowY === "scroll") && element.scrollHeight > element.clientHeight;
|
|
4597
|
+
}
|
|
4598
|
+
/**
|
|
4599
|
+
* Walks the event's composed path (to properly support shadow DOM) and returns the
|
|
4600
|
+
* closest scrollable ancestor, if any, stopping at `document.body`/`document.documentElement`.
|
|
4601
|
+
*/
|
|
4602
|
+
function findScrollableAncestor(path) {
|
|
4603
|
+
for (const target of path) {
|
|
4604
|
+
if (target === document.body || target === document.documentElement) break;
|
|
4605
|
+
if (target instanceof Element && isVerticallyScrollable(target)) return target;
|
|
4606
|
+
}
|
|
4607
|
+
return null;
|
|
4608
|
+
}
|
|
4609
|
+
/**
|
|
4591
4610
|
* Handle the page scroll, allowing to disable/enable the window scroll avoiding a potential
|
|
4592
4611
|
* content shift caused by the disappearance/appearance of the scrollbar.
|
|
4612
|
+
*
|
|
4613
|
+
* The body is fixed in place (instead of just using `overflow: hidden`), which reliably prevents
|
|
4614
|
+
* scrolling of the underlying page. The current scroll position is stored before
|
|
4615
|
+
* fixing the body and restored again once the scroll is re-enabled, so the page doesn't jump
|
|
4616
|
+
* and content that was previously scrolled out of view isn't hidden behind the fixed body.
|
|
4617
|
+
*
|
|
4618
|
+
* As an additional safety net for edge cases, `touchmove` events are intercepted and prevented,
|
|
4619
|
+
* unless they originate from within a scrollable element that is not at its scroll boundary
|
|
4620
|
+
* (e.g. an internal scrollable content of a dialog, navigation, sidebar, etc.).
|
|
4593
4621
|
*/
|
|
4594
4622
|
var SbbScrollHandler = class {
|
|
4623
|
+
constructor() {
|
|
4624
|
+
this._scrollPosition = 0;
|
|
4625
|
+
this._touchStartY = 0;
|
|
4626
|
+
this._touchStart = (event) => {
|
|
4627
|
+
this._touchStartY = event.touches[0]?.clientY ?? 0;
|
|
4628
|
+
};
|
|
4629
|
+
this._touchMove = (event) => {
|
|
4630
|
+
const touch = event.touches[0];
|
|
4631
|
+
if (!touch) return;
|
|
4632
|
+
const scrollable = findScrollableAncestor(event.composedPath());
|
|
4633
|
+
if (!scrollable) {
|
|
4634
|
+
event.preventDefault();
|
|
4635
|
+
return;
|
|
4636
|
+
}
|
|
4637
|
+
const deltaY = touch.clientY - this._touchStartY;
|
|
4638
|
+
const atTop = scrollable.scrollTop <= 0;
|
|
4639
|
+
const atBottom = scrollable.scrollTop + scrollable.clientHeight >= scrollable.scrollHeight;
|
|
4640
|
+
if (atTop && deltaY > 0 || atBottom && deltaY < 0) event.preventDefault();
|
|
4641
|
+
};
|
|
4642
|
+
}
|
|
4595
4643
|
disableScroll() {
|
|
4596
4644
|
if (pageScrollDisabled()) return;
|
|
4597
|
-
this.
|
|
4645
|
+
this._scrollPosition = window.scrollY || document.documentElement.scrollTop;
|
|
4598
4646
|
this._position = document.body.style.position;
|
|
4647
|
+
this._top = document.body.style.top;
|
|
4648
|
+
this._insetInline = document.body.style.insetInline;
|
|
4599
4649
|
this._overflow = document.body.style.overflow;
|
|
4600
|
-
this._marginInlineEnd = document.body.style.marginInlineEnd;
|
|
4601
4650
|
const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
|
|
4651
|
+
document.body.style.position = "fixed";
|
|
4652
|
+
document.body.style.top = `-${this._scrollPosition}px`;
|
|
4653
|
+
document.body.style.insetInline = `0 ${scrollbarWidth}px`;
|
|
4602
4654
|
document.body.style.overflow = "hidden";
|
|
4603
|
-
document.body.style.
|
|
4604
|
-
document.
|
|
4605
|
-
document.
|
|
4606
|
-
document.body.style.setProperty("--sbb-scrollbar-width", `${scrollbarWidth}px`);
|
|
4655
|
+
document.body.style.setProperty("--sbb-scrollbar-reserved-space", `${scrollbarWidth}px`);
|
|
4656
|
+
document.addEventListener("touchstart", this._touchStart, { passive: true });
|
|
4657
|
+
document.addEventListener("touchmove", this._touchMove, { passive: false });
|
|
4607
4658
|
document.body.toggleAttribute("data-sbb-scroll-disabled", true);
|
|
4608
4659
|
}
|
|
4609
4660
|
enableScroll() {
|
|
4610
4661
|
if (!pageScrollDisabled()) return;
|
|
4611
|
-
document.body.style.height = this._height || "";
|
|
4612
4662
|
document.body.style.position = this._position || "";
|
|
4663
|
+
document.body.style.top = this._top || "";
|
|
4664
|
+
document.body.style.insetInline = this._insetInline || "";
|
|
4613
4665
|
document.body.style.overflow = this._overflow || "";
|
|
4614
|
-
document.body.style.
|
|
4615
|
-
document.
|
|
4666
|
+
document.body.style.removeProperty("--sbb-scrollbar-reserved-space");
|
|
4667
|
+
document.removeEventListener("touchstart", this._touchStart);
|
|
4668
|
+
document.removeEventListener("touchmove", this._touchMove);
|
|
4616
4669
|
document.body.removeAttribute("data-sbb-scroll-disabled");
|
|
4670
|
+
window.scrollTo(0, this._scrollPosition);
|
|
4617
4671
|
}
|
|
4618
4672
|
};
|
|
4619
4673
|
|
|
@@ -11,7 +11,7 @@ import { html as html$1 } from "lit/static-html.js";
|
|
|
11
11
|
import { SbbOverlayBaseElement, SbbOverlayCloseEvent, SbbOverlayCloseEvent as SbbDialogCloseEvent, assignOverlayResult as assignDialogResult, overlayRefs } from "./overlay.pure.js";
|
|
12
12
|
|
|
13
13
|
//#region src/elements/dialog/dialog-actions/dialog-actions.scss?inline
|
|
14
|
-
var dialog_actions_default = ":host {\n grid-area: actions;\n padding-inline: var(--sbb-dialog-padding-inline);\n padding-block: var(--sbb-dialog-padding-block);\n margin-block-start: auto;\n background-color: var(--sbb-dialog-background-color);\n transition: box-shadow var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);\n box-shadow: var(--sbb-dialog-block-end-box-shadow, none);\n position: relative;\n}\n:host::before {\n content: \"\";\n display: block;\n position: absolute;\n align-self: start;\n border-block-start: var(--sbb-border-width-1x) solid var(--sbb-dialog-actions-border-color);\n transition: border-color var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);\n inset: 0 auto auto 0;\n width: 100%;\n}\n@media (forced-colors: active) {\n :host::before {\n border-color: CanvasText;\n }\n}\n";
|
|
14
|
+
var dialog_actions_default = ":host {\n grid-area: actions;\n padding-inline: var(--sbb-dialog-padding-inline);\n padding-block: var(--sbb-dialog-padding-block);\n margin-block-start: auto;\n background-color: var(--sbb-dialog-background-color);\n transition: box-shadow var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);\n box-shadow: var(--sbb-dialog-block-end-box-shadow, none);\n position: relative;\n clip-path: inset(-200% -200% 0 -200%);\n}\n:host::before {\n content: \"\";\n display: block;\n position: absolute;\n align-self: start;\n border-block-start: var(--sbb-border-width-1x) solid var(--sbb-dialog-actions-border-color);\n transition: border-color var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);\n inset: 0 auto auto 0;\n width: 100%;\n}\n@media (forced-colors: active) {\n :host::before {\n border-color: CanvasText;\n }\n}\n";
|
|
15
15
|
|
|
16
16
|
//#endregion
|
|
17
17
|
//#region src/elements/dialog/dialog-actions/dialog-actions.component.ts
|
|
@@ -105,7 +105,7 @@ var SbbDialogContentElement = class extends SbbElement {
|
|
|
105
105
|
|
|
106
106
|
//#endregion
|
|
107
107
|
//#region src/elements/dialog/dialog-title/dialog-title.scss?inline
|
|
108
|
-
var dialog_title_default = ":host {\n padding-block: var(--sbb-dialog-padding-block);\n padding-inline: var(--sbb-dialog-padding-inline);\n hyphens: auto;\n grid-area: title;\n position: relative;\n}\n\n:host([negative]) {\n --sbb-title-color: var(--sbb-color-3-negative);\n}\n\n:host::after {\n content: \"\";\n display: block;\n position: absolute;\n pointer-events: none;\n inset: 0 -10rem 0 0;\n transition: box-shadow var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);\n box-shadow: var(--sbb-dialog-block-start-box-shadow, none);\n}\n";
|
|
108
|
+
var dialog_title_default = ":host {\n padding-block: var(--sbb-dialog-padding-block);\n padding-inline: var(--sbb-dialog-padding-inline);\n hyphens: auto;\n grid-area: title;\n position: relative;\n}\n\n:host([negative]) {\n --sbb-title-color: var(--sbb-color-3-negative);\n}\n\n:host::after {\n content: \"\";\n display: block;\n position: absolute;\n pointer-events: none;\n inset: 0 -10rem 0 0;\n transition: box-shadow var(--sbb-animation-easing) var(--sbb-dialog-shadow-animation-duration);\n box-shadow: var(--sbb-dialog-block-start-box-shadow, none);\n clip-path: polygon(0% 50%, 0% 200%, 100% 200%, 100% 50%);\n}\n";
|
|
109
109
|
|
|
110
110
|
//#endregion
|
|
111
111
|
//#region src/elements/dialog/dialog-title/dialog-title.component.ts
|
|
@@ -130,7 +130,7 @@ var SbbDialogTitleElement = class extends SbbNegativeMixin(SbbTitleBase) {
|
|
|
130
130
|
|
|
131
131
|
//#endregion
|
|
132
132
|
//#region src/elements/dialog/dialog/dialog.scss?inline
|
|
133
|
-
var dialog_default = ":host {\n --sbb-dialog-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n --sbb-dialog-padding-block: var(--sbb-spacing-responsive-xs);\n --sbb-dialog-shadow-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n display: none;\n position: fixed;\n inset
|
|
133
|
+
var dialog_default = ":host {\n --sbb-dialog-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n --sbb-dialog-padding-block: var(--sbb-spacing-responsive-xs);\n --sbb-dialog-shadow-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n display: none;\n position: fixed;\n inset: 0;\n z-index: var(--sbb-dialog-z-index, var(--sbb-overlay-default-z-index));\n}\n\n:host(:is(:state(top-shadow),[state--top-shadow])) {\n --sbb-dialog-block-start-box-shadow: var(--_sbb-dialog-block-shadow);\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 display: block;\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]))) {\n --sbb-dialog-pointer-events: all;\n --sbb-dialog-backdrop-pointer-events: all;\n}\n\n:host(:not([negative])) {\n --_sbb-dialog-color: var(--sbb-dialog-color);\n --_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow);\n --sbb-dialog-actions-border-color: var(--sbb-background-color-4);\n --sbb-dialog-background-color: var(--sbb-background-color-1);\n}\n\n:host([negative]) {\n --_sbb-dialog-color: var(--sbb-dialog-color-negative);\n --_sbb-dialog-block-shadow: var(--sbb-dialog-block-shadow-negative);\n --sbb-dialog-background-color: var(--sbb-background-color-1-negative);\n --sbb-dialog-actions-border-color: var(--sbb-background-color-4-negative);\n --sbb-dialog-backdrop-color: var(--sbb-background-color-3-negative);\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n}\n\n:host([backdrop=translucent]) {\n --sbb-dialog-backdrop-color: color-mix(in srgb, var(--sbb-color-black) 50%, transparent);\n}\n\n:host(:is(:state(bottom-shadow),[state--bottom-shadow])) {\n --sbb-dialog-block-end-box-shadow: var(--_sbb-dialog-block-shadow);\n --sbb-dialog-actions-border-color: transparent;\n}\n\n:host(:is(:state(state-closing),[state--state-closing])) {\n --sbb-dialog-backdrop-animation-name: backdrop-close;\n}\n\n.sbb-dialog__container {\n pointer-events: var(--sbb-dialog-pointer-events);\n display: flex;\n justify-content: center;\n align-items: center;\n position: fixed;\n inset: 0;\n}\n.sbb-dialog__container::before {\n content: \"\";\n pointer-events: var(--sbb-dialog-backdrop-pointer-events);\n position: absolute;\n inset: 0;\n background-color: var(--sbb-dialog-backdrop-color, transparent);\n animation-name: var(--sbb-dialog-backdrop-animation-name, backdrop-open);\n animation-duration: var(--sbb-dialog-animation-duration);\n animation-timing-function: var(--sbb-dialog-animation-easing);\n animation-fill-mode: forwards;\n}\n\n.sbb-dialog {\n display: none;\n position: absolute;\n inset-inline: 0;\n inset-block: auto 0;\n border: none;\n border-radius: var(--sbb-dialog-border-radius) var(--sbb-dialog-border-radius) 0 0;\n max-width: var(--_sbb-dialog-max-width);\n max-height: var(--_sbb-dialog-max-height);\n color: var(--_sbb-dialog-color);\n background-color: var(--sbb-dialog-background-color);\n flex-direction: column;\n padding-block-end: env(safe-area-inset-bottom, 0);\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]))) .sbb-dialog {\n display: flex;\n animation-name: open;\n animation-duration: var(--sbb-dialog-animation-duration);\n animation-timing-function: ease;\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-dialog {\n pointer-events: none;\n animation-name: close;\n}\n@media (forced-colors: active) {\n .sbb-dialog {\n outline: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n@media (min-width: calc(37.5rem)) {\n .sbb-dialog {\n width: var(--sbb-dialog-width);\n height: var(--sbb-dialog-height);\n max-width: var(--sbb-dialog-max-width, var(--_sbb-dialog-max-width));\n max-height: var(--sbb-dialog-max-height, var(--_sbb-dialog-max-height));\n inset: unset;\n border-radius: var(--sbb-dialog-border-radius);\n overflow: hidden;\n }\n}\n\n:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),\n.sbb-dialog__wrapper {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 100%;\n}\n\n:host(:is(:state(has-intermediate-element),[state--has-intermediate-element])) ::slotted(:first-child),\n:host(:not(:is(:state(has-intermediate-element),[state--has-intermediate-element]))) .sbb-dialog__wrapper {\n display: grid;\n grid-template: \"title close-button\" auto \"content content\" 1fr \"actions actions\" auto/1fr auto;\n gap: 0;\n}\n\n@keyframes open {\n from {\n opacity: 0;\n translate: 0 var(--sbb-dialog-translate-y, 100%);\n }\n to {\n opacity: 1;\n translate: 0 0;\n }\n}\n@keyframes close {\n from {\n opacity: 1;\n translate: 0 0;\n }\n to {\n opacity: 0;\n translate: 0 var(--sbb-dialog-translate-y, 100%);\n }\n}\n@keyframes backdrop-open {\n from {\n background-color: transparent;\n visibility: visible;\n }\n}\n@keyframes backdrop-close {\n to {\n background-color: transparent;\n visibility: hidden;\n }\n}\n";
|
|
134
134
|
|
|
135
135
|
//#endregion
|
|
136
136
|
//#region src/elements/dialog/dialog/dialog.component.ts
|
|
@@ -162,7 +162,7 @@ var SbbHeaderLinkElement = class extends SbbHeaderActionCommonElementMixin(SbbLi
|
|
|
162
162
|
|
|
163
163
|
//#endregion
|
|
164
164
|
//#region src/elements/header/header/header.scss?inline
|
|
165
|
-
var header_default = ":host {\n --sbb-logo-height: 1rem;\n --sbb-signet-height: 1rem;\n --sbb-header-transition-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-logo-height: 1.25rem;\n --sbb-signet-height: 1.25rem;\n }\n}\n:host {\n display: block;\n height: var(--sbb-header-height);\n line-height: var(--sbb-typo-line-height-text);\n padding-block-start: calc(var(--sbb-header-height) + var(--sbb-header-padding-block-start));\n}\n\n:host([size=s]) {\n --sbb-header-height: var(--sbb-header-height-s);\n}\n\n:host([size=m]) {\n --sbb-header-height: var(--sbb-header-height-m);\n}\n\n:host([hide-on-scroll]) {\n --sbb-header-position: absolute;\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed])) {\n --sbb-header-position: fixed;\n --sbb-header-animation-name: hide;\n --sbb-header-transform: translate3d(0, -100%, 0);\n --sbb-header-inset-inline-end: var(--sbb-scrollbar-
|
|
165
|
+
var header_default = ":host {\n --sbb-logo-height: 1rem;\n --sbb-signet-height: 1rem;\n --sbb-header-transition-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-logo-height: 1.25rem;\n --sbb-signet-height: 1.25rem;\n }\n}\n:host {\n display: block;\n height: var(--sbb-header-height);\n line-height: var(--sbb-typo-line-height-text);\n padding-block-start: calc(var(--sbb-header-height) + var(--sbb-header-padding-block-start));\n}\n\n:host([size=s]) {\n --sbb-header-height: var(--sbb-header-height-s);\n}\n\n:host([size=m]) {\n --sbb-header-height: var(--sbb-header-height-m);\n}\n\n:host([hide-on-scroll]) {\n --sbb-header-position: absolute;\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed])) {\n --sbb-header-position: fixed;\n --sbb-header-animation-name: hide;\n --sbb-header-transform: translate3d(0, -100%, 0);\n --sbb-header-inset-inline-end: var(--sbb-scrollbar-reserved-space, 0);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(animated),[state--animated])) {\n --sbb-header-transition-timing: cubic-bezier(0.4, 0, 1, 1);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(visible),[state--visible])) {\n --sbb-header-animation-name: show;\n --sbb-header-transform: translate3d(0, 0, 0);\n --sbb-header-transition-timing: cubic-bezier(0, 0, 0.2, 1);\n}\n\n:host([hide-on-scroll]:is(:state(fixed),[state--fixed]):is(:state(has-visible-focus-within),[state--has-visible-focus-within])) {\n --sbb-header-transition-duration: 0;\n --sbb-header-transform: translate3d(0, 0, 0);\n}\n\n.sbb-header {\n position: var(--sbb-header-position);\n inset: 0 var(--sbb-header-inset-inline-end) auto 0;\n padding-block-start: var(--sbb-header-padding-block-start);\n background: var(--sbb-header-background);\n z-index: var(--sbb-header-z-index, 10);\n transform: var(--sbb-header-transform);\n transition-property: box-shadow;\n transition-duration: var(--sbb-header-transition-duration);\n transition-timing-function: var(--sbb-header-transition-timing);\n animation-name: var(--sbb-header-animation-name);\n animation-duration: var(--sbb-header-transition-duration);\n animation-timing-function: var(--sbb-header-transition-timing);\n}\n:host(:is(:is(:state(shadow),[state--shadow]), :is(:state(has-visible-focus-within),[state--has-visible-focus-within]):is(:state(fixed),[state--fixed]))) .sbb-header {\n box-shadow: var(--sbb-header-box-shadow);\n}\n@media (forced-colors: active) {\n .sbb-header {\n border-block-end: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n\n.sbb-header__wrapper {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n height: var(--sbb-header-height);\n}\n:host(:not([expanded])) .sbb-header__wrapper {\n padding-inline: var(--sbb-page-spacing-padding, var(--sbb-layout-base-offset-responsive));\n margin-inline: auto;\n width: 100%;\n}\n@media (min-width: calc(90rem)) {\n :host(:not([expanded])) .sbb-header__wrapper {\n max-width: var(--sbb-spacing-max-width, calc(var(--sbb-layout-base-page-max-width) + 2 * var(--sbb-layout-base-offset-responsive)));\n }\n}\n:host([expanded]) .sbb-header__wrapper {\n padding-inline: var(--sbb-page-spacing-padding, var(--sbb-spacing-responsive-xxs));\n}\n\n::slotted(:is(sbb-header-button, sbb-header-link):first-child) {\n margin-inline-start: var(--sbb-header-first-item-margin-inline-start);\n}\n\n::slotted(*) {\n flex: 0 0 auto;\n}\n\n::slotted(.sbb-header-shrinkable) {\n flex-shrink: 1;\n min-width: 0;\n}\n\n::slotted(.sbb-header-spacer) {\n flex-grow: 1;\n}\n\n::slotted(.sbb-header-logo) {\n margin-inline-start: var(--sbb-spacing-responsive-s);\n}\n\n::slotted(a.sbb-header-logo) {\n display: block;\n padding-block: var(--sbb-spacing-fixed-3x);\n position: relative;\n flex-basis: 0;\n outline: none !important;\n}\n\n::slotted(a.sbb-header-logo)::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: var(--sbb-spacing-fixed-3x) 0;\n}\n\n::slotted(a.sbb-header-logo:focus-visible)::before {\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 outline-offset: var(--sbb-spacing-fixed-3x);\n border-radius: 1px;\n}\n\n@keyframes show {\n from {\n transform: translate3d(0, -100%, 0);\n }\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n@keyframes hide {\n from {\n transform: translate3d(0, 0, 0);\n }\n to {\n transform: translate3d(0, -100%, 0);\n }\n}\n";
|
|
166
166
|
|
|
167
167
|
//#endregion
|
|
168
168
|
//#region src/elements/header/header/header.component.ts
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SbbElement, type SbbElementConstructor } from '../../core/base-elements/element.ts';
|
|
2
|
+
import type { AbstractConstructor } from '../../core/mixins/constructor.ts';
|
|
3
|
+
export declare abstract class SbbLogoCommonElementMixinType extends SbbElement {
|
|
4
|
+
accessor protectiveRoom: 'none' | 'minimal' | 'ideal';
|
|
5
|
+
accessor accessibilityLabel: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const SbbLogoCommonElementMixin: <T extends AbstractConstructor<SbbElement> & SbbElementConstructor>(superclass: T) => AbstractConstructor<SbbLogoCommonElementMixinType> & T;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type CSSResultGroup, type TemplateResult } from 'lit';
|
|
2
|
-
import { SbbElement } from '
|
|
3
|
-
declare const SbbLogoElement_base: import("
|
|
2
|
+
import { SbbElement } from '../../core.ts';
|
|
3
|
+
declare const SbbLogoElement_base: import("../../core.ts").AbstractConstructor<import("../common/logo-common.ts").SbbLogoCommonElementMixinType> & typeof SbbElement;
|
|
4
4
|
/**
|
|
5
5
|
* It displays the SBB logo.
|
|
6
6
|
*
|
|
@@ -9,10 +9,7 @@ declare const SbbLogoElement_base: import("../core.ts").AbstractConstructor<impo
|
|
|
9
9
|
export declare class SbbLogoElement extends SbbLogoElement_base {
|
|
10
10
|
static readonly elementName: string;
|
|
11
11
|
static styles: CSSResultGroup;
|
|
12
|
-
|
|
13
|
-
accessor protectiveRoom: 'none' | 'minimal' | 'ideal';
|
|
14
|
-
/** Accessibility label which will be forwarded to the SVG logo. */
|
|
15
|
-
accessor accessibilityLabel: string;
|
|
12
|
+
constructor();
|
|
16
13
|
protected render(): TemplateResult;
|
|
17
14
|
}
|
|
18
15
|
declare global {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type CSSResultGroup, type TemplateResult } from 'lit';
|
|
2
|
+
import { SbbElement } from '../../core.ts';
|
|
3
|
+
declare const SbbLogoCargoElement_base: import("../../core.ts").AbstractConstructor<import("../common/logo-common.ts").SbbLogoCommonElementMixinType> & typeof SbbElement;
|
|
4
|
+
/**
|
|
5
|
+
* It displays the SBB Cargo logo.
|
|
6
|
+
*
|
|
7
|
+
* @cssprop [--sbb-logo-height=auto] - Can be used to set the height of the logo.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SbbLogoCargoElement extends SbbLogoCargoElement_base {
|
|
10
|
+
static readonly elementName: string;
|
|
11
|
+
static styles: CSSResultGroup;
|
|
12
|
+
constructor();
|
|
13
|
+
protected render(): TemplateResult;
|
|
14
|
+
}
|
|
15
|
+
declare global {
|
|
16
|
+
interface HTMLElementTagNameMap {
|
|
17
|
+
'sbb-logo-cargo': SbbLogoCargoElement;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type CSSResultGroup, type TemplateResult } from 'lit';
|
|
2
|
+
import { SbbElement } from '../../core.ts';
|
|
3
|
+
declare const SbbLogoCargoInternationalElement_base: import("../../core.ts").AbstractConstructor<import("../common/logo-common.ts").SbbLogoCommonElementMixinType> & typeof SbbElement;
|
|
4
|
+
/**
|
|
5
|
+
* It displays the SBB Cargo International logo.
|
|
6
|
+
*
|
|
7
|
+
* @cssprop [--sbb-logo-height=auto] - Can be used to set the height of the logo.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SbbLogoCargoInternationalElement extends SbbLogoCargoInternationalElement_base {
|
|
10
|
+
static readonly elementName: string;
|
|
11
|
+
static styles: CSSResultGroup;
|
|
12
|
+
constructor();
|
|
13
|
+
protected render(): TemplateResult;
|
|
14
|
+
}
|
|
15
|
+
declare global {
|
|
16
|
+
interface HTMLElementTagNameMap {
|
|
17
|
+
'sbb-logo-cargo-international': SbbLogoCargoInternationalElement;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type CSSResultGroup, type TemplateResult } from 'lit';
|
|
2
|
+
import { SbbElement } from '../../core.ts';
|
|
3
|
+
declare const SbbLogoElvetinoElement_base: import("../../core.ts").AbstractConstructor<import("../common/logo-common.ts").SbbLogoCommonElementMixinType> & typeof SbbElement;
|
|
4
|
+
/**
|
|
5
|
+
* It displays the SBB Elvetino logo.
|
|
6
|
+
*
|
|
7
|
+
* @cssprop [--sbb-logo-height=auto] - Can be used to set the height of the logo.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SbbLogoElvetinoElement extends SbbLogoElvetinoElement_base {
|
|
10
|
+
static readonly elementName: string;
|
|
11
|
+
static styles: CSSResultGroup;
|
|
12
|
+
constructor();
|
|
13
|
+
protected render(): TemplateResult;
|
|
14
|
+
}
|
|
15
|
+
declare global {
|
|
16
|
+
interface HTMLElementTagNameMap {
|
|
17
|
+
'sbb-logo-elvetino': SbbLogoElvetinoElement;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export {};
|
package/development/logo.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { SbbLogoElement } from "./logo.pure.js";
|
|
1
|
+
import { SbbLogoCargoElement, SbbLogoCargoInternationalElement, SbbLogoElement, SbbLogoElvetinoElement } from "./logo.pure.js";
|
|
2
2
|
|
|
3
3
|
export * from "./logo.pure.js"
|
|
4
4
|
|
|
5
5
|
//#region src/elements/logo.ts
|
|
6
6
|
/** @entrypoint */
|
|
7
7
|
SbbLogoElement.define();
|
|
8
|
+
SbbLogoCargoElement.define();
|
|
9
|
+
SbbLogoCargoInternationalElement.define();
|
|
10
|
+
SbbLogoElvetinoElement.define();
|
|
8
11
|
|
|
9
12
|
//#endregion
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
/** @entrypoint */
|
|
2
|
-
export * from './logo/logo.component.ts';
|
|
2
|
+
export * from './logo/logo/logo.component.ts';
|
|
3
|
+
export * from './logo/logo-cargo-international/logo-cargo-international.component.ts';
|
|
4
|
+
export * from './logo/logo-cargo/logo-cargo.component.ts';
|
|
5
|
+
export * from './logo/logo-elvetino/logo-elvetino.component.ts';
|