@sbb-esta/lyne-elements-dev 5.0.0-next.1-dev.1777366078 → 5.0.0-next.1-dev.1777448509
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/card/card/card.component.js +1 -1
- package/card.component-BcHiYB03.js +61 -0
- package/card.js +1 -1
- package/card.pure.js +1 -1
- package/core/styles/core.scss +8 -33
- package/core/styles/mixins/card.scss +5 -3
- package/core/styles/mixins/typo.scss +13 -31
- package/core.css +3 -22
- package/custom-elements.json +1466 -1466
- package/development/card/card/card.component.js +1 -1
- package/development/{card.component-B2cQYSCD.js → card.component-CpOdKJJ0.js} +2 -2
- package/development/card.js +1 -1
- package/development/card.pure.js +1 -1
- package/development/dialog/dialog-title/dialog-title.component.js +1 -1
- package/development/dialog-title.component-CnIk_xMF.js +29 -0
- package/development/dialog.js +1 -1
- package/development/dialog.pure.js +1 -1
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/development/{file-selector-dropzone.component-DMNom2OW.js → file-selector-dropzone.component-DvIIHINv.js} +2 -2
- package/development/file-selector.js +1 -1
- package/development/file-selector.pure.js +1 -1
- package/development/journey-header/journey-header.component.js +1 -1
- package/development/journey-header.component-Dvqw7fug.js +150 -0
- package/development/journey-header.js +1 -1
- package/development/journey-header.pure.js +1 -1
- package/development/navigation/navigation-section/navigation-section.component.js +1 -1
- package/development/navigation-section.component-DBINlaTX.js +346 -0
- package/development/navigation.js +1 -1
- package/development/navigation.pure.js +1 -1
- package/development/teaser/teaser.component.js +1 -1
- package/development/teaser-product/common/teaser-product-common.js +1 -1
- package/development/teaser-product/teaser-product/teaser-product.component.js +1 -1
- package/development/teaser-product-common-Q9KK6514.js +78 -0
- package/development/teaser-product.component-C5wV0a_c.js +44 -0
- package/development/teaser-product.js +2 -2
- package/development/teaser-product.pure.js +2 -2
- package/development/teaser.component-8cqR7wx4.js +116 -0
- package/development/teaser.js +1 -1
- package/development/teaser.pure.js +1 -1
- package/development/title/title-base.js +1 -1
- package/development/title/title.component.js +1 -1
- package/development/title-base-QBLTDdVa.js +102 -0
- package/development/title.component-DeSXwF7P.js +71 -0
- package/development/title.js +2 -2
- package/development/title.pure.js +2 -2
- package/development/toast/toast.component.js +1 -1
- package/development/toast.component-CrjaQMNl.js +268 -0
- package/development/toast.js +1 -1
- package/development/toast.pure.js +1 -1
- package/dialog/dialog-title/dialog-title.component.js +1 -1
- package/dialog-title.component-Cm-QxTF7.js +17 -0
- package/dialog.js +1 -1
- package/dialog.pure.js +1 -1
- package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/{file-selector-dropzone.component-CWwpvAVD.js → file-selector-dropzone.component-DYLTIaiE.js} +1 -1
- package/file-selector.js +1 -1
- package/file-selector.pure.js +1 -1
- package/journey-header/journey-header.component.js +1 -1
- package/{journey-header.component-DU09Hyme.js → journey-header.component-DPqv2v3z.js} +1 -1
- package/journey-header.js +1 -1
- package/journey-header.pure.js +1 -1
- package/navigation/navigation-section/navigation-section.component.js +1 -1
- package/{navigation-section.component-K4Pa53K7.js → navigation-section.component-BkhBZ4vH.js} +1 -1
- package/navigation.js +1 -1
- package/navigation.pure.js +1 -1
- package/off-brand-theme.css +3 -22
- package/package.json +2 -2
- package/safety-theme.css +3 -22
- package/standard-theme.css +3 -22
- package/teaser/teaser.component.js +1 -1
- package/teaser-product/common/teaser-product-common.js +1 -1
- package/teaser-product/teaser-product/teaser-product.component.js +1 -1
- package/{teaser-product-common-Kz3ApcVE.js → teaser-product-common-DvenwiUs.js} +1 -1
- package/{teaser-product.component-C7KoSqcP.js → teaser-product.component-tut8eGiy.js} +1 -1
- package/teaser-product.js +2 -2
- package/teaser-product.pure.js +2 -2
- package/{teaser.component-B2y2AlAx.js → teaser.component-Bf74T58g.js} +1 -1
- package/teaser.js +1 -1
- package/teaser.pure.js +1 -1
- package/title/title-base.js +1 -1
- package/title/title.component.js +1 -1
- package/{title-base-B43-Q_7r.js → title-base-CBTQR0xw.js} +1 -1
- package/{title.component-DXJHJ6p6.js → title.component-DzmgLLrE.js} +2 -2
- package/title.js +2 -2
- package/title.pure.js +2 -2
- package/toast/toast.component.js +1 -1
- package/{toast.component-2hmfUgsX.js → toast.component-dNIDSiAM.js} +1 -1
- package/toast.js +1 -1
- package/toast.pure.js +1 -1
- package/card.component-DZrNg3sQ.js +0 -61
- package/development/dialog-title.component-CNMzIUB2.js +0 -29
- package/development/journey-header.component-D8o3F1Su.js +0 -150
- package/development/navigation-section.component-t36xyaq4.js +0 -346
- package/development/teaser-product-common-DasV_SDa.js +0 -78
- package/development/teaser-product.component-CB6fOX7T.js +0 -44
- package/development/teaser.component-C7uXEaPK.js +0 -116
- package/development/title-base-DKVyL7TQ.js +0 -102
- package/development/title.component-BEEzA9cF.js +0 -71
- package/development/toast.component-DvVY7zpe.js +0 -268
- package/dialog-title.component-CRGqiwZu.js +0 -17
|
@@ -1,346 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { html, isServer, nothing, unsafeCSS } from "lit";
|
|
3
|
-
import { property } from "lit/decorators.js";
|
|
4
|
-
import { IS_FOCUSABLE_QUERY, SbbFocusTrapController, SbbLanguageController, SbbMediaMatcherController, SbbMediaQueryBreakpointSmallAndBelow, SbbOpenCloseBaseElement, SbbUpdateSchedulerMixin, boxSizingStyles, forceType, i18nGoBack, idReference, isZeroAnimationDuration, omitEmptyConverter, removeAriaOverlayTriggerProperties, sbbInputModalityDetector, setAriaOverlayTriggerProperties, ɵstateController } from "./core.js";
|
|
5
|
-
import { SbbTransparentButtonElement } from "./button.pure.js";
|
|
6
|
-
//#region src/elements/navigation/navigation-section/navigation-section.scss?inline
|
|
7
|
-
var navigation_section_default = ":host {\n --sbb-navigation-section-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-3x)\n );\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n display: var(--sbb-navigation-section-display, none);\n position: var(--sbb-navigation-section-position);\n grid-column: var(--sbb-navigation-section-column);\n inset-inline-start: 0;\n inset-block-start: 0;\n width: var(--sbb-navigation-section-width);\n height: var(--sbb-navigation-section-height);\n z-index: var(--sbb-navigation-z-index, var(--sbb-overlay-default-z-index));\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-navigation-section-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n --sbb-navigation-section-width: calc(\n 100% + var(--sbb-layout-base-offset-responsive) + var(--sbb-grid-base-gutter-responsive)\n );\n translate: calc(var(--sbb-grid-base-gutter-responsive) * -1) 0;\n }\n}\n\n:host(:is(:state(state-opened),[state--state-opened])) {\n --sbb-navigation-section-pointer-events: all;\n}\n\n:host(:is(:state(state-opening),[state--state-opening])) {\n --sbb-navigation-section-position: absolute;\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-closing),[state--state-closing]))) {\n --sbb-navigation-section-pointer-events: none;\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-navigation-section-display: block;\n}\n\n::slotted(*) {\n padding-inline-start: var(--sbb-navigation-section-content-padding-inline-start);\n}\n\n::slotted(:is(:state(sbb-button),[state--sbb-button])) {\n grid-column-start: 1;\n}\n\n.sbb-navigation-section__container {\n pointer-events: var(--sbb-navigation-section-pointer-events);\n height: var(--sbb-navigation-section-height);\n}\n\n.sbb-navigation-section {\n display: none;\n border: none;\n margin: 0;\n width: 100%;\n height: 100%;\n color: var(--sbb-navigation-color, var(--sbb-color-1-negative));\n background-color: transparent;\n padding: 0;\n overflow: hidden;\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-navigation-section {\n display: block;\n animation-name: open;\n animation-duration: var(--sbb-navigation-section-animation-duration);\n animation-timing-function: var(--sbb-navigation-section-animation-easing);\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-navigation-section {\n animation-name: close;\n}\n@media (forced-colors: active) {\n .sbb-navigation-section {\n outline: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n\n.sbb-navigation-section__wrapper {\n --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);\n --sbb-scrollbar-thumb-width: 0.125rem;\n --sbb-scrollbar-thumb-width-hover: 0.25rem;\n --sbb-scrollbar-width-firefox: thin;\n --sbb-scrollbar-color: color-mix(in srgb, var(--sbb-color-white) 30%, transparent);\n --sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-white) 60%, transparent);\n --sbb-scrollbar-track-color: transparent;\n}\n.sbb-navigation-section__wrapper::-webkit-scrollbar {\n width: var(--sbb-scrollbar-width);\n height: var(--sbb-scrollbar-width);\n background-color: var(--sbb-scrollbar-track-color, transparent);\n}\n.sbb-navigation-section__wrapper::-webkit-scrollbar-corner {\n background-color: var(--sbb-scrollbar-track-color, transparent);\n}\n.sbb-navigation-section__wrapper::-webkit-scrollbar-thumb {\n background-color: var(--sbb-scrollbar-color, currentcolor);\n border: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;\n border-radius: var(--sbb-border-radius-4x);\n background-clip: padding-box;\n}\n.sbb-navigation-section__wrapper::-webkit-scrollbar-thumb:hover {\n background-color: var(--sbb-scrollbar-color-hover, currentcolor);\n border-width: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)));\n}\n.sbb-navigation-section__wrapper::-webkit-scrollbar-button, .sbb-navigation-section__wrapper::-webkit-scrollbar-corner {\n display: none;\n}\n@supports not selector(::-webkit-scrollbar) {\n .sbb-navigation-section__wrapper {\n scrollbar-width: var(--sbb-scrollbar-width-firefox);\n scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);\n }\n}\n.sbb-navigation-section__wrapper {\n height: 100%;\n padding-block: var(--sbb-navigation-section-padding-block);\n outline: none;\n overflow-y: auto;\n}\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-closing),[state--state-closing]))) .sbb-navigation-section__wrapper {\n --sbb-scrollbar-color: transparent;\n scrollbar-color: transparent transparent;\n}\n\n.sbb-navigation-section__header {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--sbb-spacing-fixed-1x);\n margin-block-start: var(--sbb-spacing-responsive-xxl);\n padding-inline-start: var(--sbb-navigation-section-content-padding-inline-start);\n}\n@media (min-width: calc(64rem)) {\n .sbb-navigation-section__header {\n margin-block-start: 0;\n padding-inline-start: 0;\n }\n}\n@media (min-width: calc(90rem)) {\n .sbb-navigation-section__header {\n grid-column: 1/4;\n }\n}\n\n.sbb-navigation-section__back {\n position: absolute;\n translate: calc((100% + var(--sbb-spacing-fixed-1x)) * -1) 0;\n}\n@media (min-width: calc(64rem)) {\n .sbb-navigation-section__back {\n display: none;\n }\n}\n\n.sbb-navigation-section__title {\n margin-block: var(--sbb-title-margin-block, 0);\n margin-inline: 0;\n font-family: var(--sbb-typo-font-family);\n font-weight: bold;\n font-size: var(--sbb-title-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-heading);\n line-height: var(--sbb-title-line-height, var(--sbb-typo-line-height-heading));\n font-size: var(--sbb-navigation-section-font-size);\n}\n\n.sbb-navigation-section__content {\n display: grid;\n grid-template-columns: 1fr;\n gap: var(--sbb-spacing-responsive-l) var(--sbb-grid-base-gutter-responsive);\n padding-inline: var(--sbb-navigation-section-padding-inline);\n}\n@media (min-width: calc(64rem)) {\n .sbb-navigation-section__content {\n opacity: 0;\n translate: 0 var(--sbb-spacing-fixed-3x);\n transition-duration: var(--sbb-navigation-section-animation-duration);\n transition-delay: var(--sbb-navigation-section-animation-duration);\n transition-timing-function: var(--sbb-navigation-section-animation-easing);\n transition-property: opacity, translate;\n }\n :host(:is(:state(state-opened),[state--state-opened])) .sbb-navigation-section__content {\n opacity: 1;\n translate: 0 0;\n }\n}\n@media (min-width: calc(90rem)) {\n .sbb-navigation-section__content {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-navigation-section__content {\n transition-delay: 0s;\n}\n\n@keyframes open {\n from {\n translate: var(--sbb-navigation-section-translate) 0;\n }\n to {\n translate: 0 0;\n }\n}\n@keyframes close {\n from {\n translate: 0 0;\n }\n to {\n translate: var(--sbb-navigation-section-translate) 0;\n }\n}";
|
|
8
|
-
//#endregion
|
|
9
|
-
//#region src/elements/navigation/navigation-section/navigation-section.component.ts
|
|
10
|
-
/**
|
|
11
|
-
* It can be used as a container for `sbb-navigation-list` within a `sbb-navigation`.
|
|
12
|
-
*
|
|
13
|
-
* @slot - Use the unnamed slot to add content into the `sbb-navigation-section`.
|
|
14
|
-
*/
|
|
15
|
-
var SbbNavigationSectionElement = (() => {
|
|
16
|
-
let _classSuper = SbbUpdateSchedulerMixin(SbbOpenCloseBaseElement);
|
|
17
|
-
let _titleContent_decorators;
|
|
18
|
-
let _titleContent_initializers = [];
|
|
19
|
-
let _titleContent_extraInitializers = [];
|
|
20
|
-
let _trigger_decorators;
|
|
21
|
-
let _trigger_initializers = [];
|
|
22
|
-
let _trigger_extraInitializers = [];
|
|
23
|
-
let _accessibilityLabel_decorators;
|
|
24
|
-
let _accessibilityLabel_initializers = [];
|
|
25
|
-
let _accessibilityLabel_extraInitializers = [];
|
|
26
|
-
let _accessibilityBackLabel_decorators;
|
|
27
|
-
let _accessibilityBackLabel_initializers = [];
|
|
28
|
-
let _accessibilityBackLabel_extraInitializers = [];
|
|
29
|
-
return class SbbNavigationSectionElement extends _classSuper {
|
|
30
|
-
static {
|
|
31
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
32
|
-
_titleContent_decorators = [forceType(), property({
|
|
33
|
-
attribute: "title-content",
|
|
34
|
-
reflect: true,
|
|
35
|
-
converter: omitEmptyConverter
|
|
36
|
-
})];
|
|
37
|
-
_trigger_decorators = [idReference(), property()];
|
|
38
|
-
_accessibilityLabel_decorators = [forceType(), property({ attribute: "accessibility-label" })];
|
|
39
|
-
_accessibilityBackLabel_decorators = [forceType(), property({ attribute: "accessibility-back-label" })];
|
|
40
|
-
__esDecorate(this, null, _titleContent_decorators, {
|
|
41
|
-
kind: "accessor",
|
|
42
|
-
name: "titleContent",
|
|
43
|
-
static: false,
|
|
44
|
-
private: false,
|
|
45
|
-
access: {
|
|
46
|
-
has: (obj) => "titleContent" in obj,
|
|
47
|
-
get: (obj) => obj.titleContent,
|
|
48
|
-
set: (obj, value) => {
|
|
49
|
-
obj.titleContent = value;
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
metadata: _metadata
|
|
53
|
-
}, _titleContent_initializers, _titleContent_extraInitializers);
|
|
54
|
-
__esDecorate(this, null, _trigger_decorators, {
|
|
55
|
-
kind: "accessor",
|
|
56
|
-
name: "trigger",
|
|
57
|
-
static: false,
|
|
58
|
-
private: false,
|
|
59
|
-
access: {
|
|
60
|
-
has: (obj) => "trigger" in obj,
|
|
61
|
-
get: (obj) => obj.trigger,
|
|
62
|
-
set: (obj, value) => {
|
|
63
|
-
obj.trigger = value;
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
metadata: _metadata
|
|
67
|
-
}, _trigger_initializers, _trigger_extraInitializers);
|
|
68
|
-
__esDecorate(this, null, _accessibilityLabel_decorators, {
|
|
69
|
-
kind: "accessor",
|
|
70
|
-
name: "accessibilityLabel",
|
|
71
|
-
static: false,
|
|
72
|
-
private: false,
|
|
73
|
-
access: {
|
|
74
|
-
has: (obj) => "accessibilityLabel" in obj,
|
|
75
|
-
get: (obj) => obj.accessibilityLabel,
|
|
76
|
-
set: (obj, value) => {
|
|
77
|
-
obj.accessibilityLabel = value;
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
metadata: _metadata
|
|
81
|
-
}, _accessibilityLabel_initializers, _accessibilityLabel_extraInitializers);
|
|
82
|
-
__esDecorate(this, null, _accessibilityBackLabel_decorators, {
|
|
83
|
-
kind: "accessor",
|
|
84
|
-
name: "accessibilityBackLabel",
|
|
85
|
-
static: false,
|
|
86
|
-
private: false,
|
|
87
|
-
access: {
|
|
88
|
-
has: (obj) => "accessibilityBackLabel" in obj,
|
|
89
|
-
get: (obj) => obj.accessibilityBackLabel,
|
|
90
|
-
set: (obj, value) => {
|
|
91
|
-
obj.accessibilityBackLabel = value;
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
metadata: _metadata
|
|
95
|
-
}, _accessibilityBackLabel_initializers, _accessibilityBackLabel_extraInitializers);
|
|
96
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
97
|
-
enumerable: true,
|
|
98
|
-
configurable: true,
|
|
99
|
-
writable: true,
|
|
100
|
-
value: _metadata
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
static {
|
|
104
|
-
this.elementName = "sbb-navigation-section";
|
|
105
|
-
}
|
|
106
|
-
static {
|
|
107
|
-
this.elementDependencies = [SbbTransparentButtonElement];
|
|
108
|
-
}
|
|
109
|
-
static {
|
|
110
|
-
this.styles = [boxSizingStyles, unsafeCSS(navigation_section_default)];
|
|
111
|
-
}
|
|
112
|
-
#titleContent_accessor_storage;
|
|
113
|
-
/**
|
|
114
|
-
* The label to be shown before the action list.
|
|
115
|
-
*/
|
|
116
|
-
get titleContent() {
|
|
117
|
-
return this.#titleContent_accessor_storage;
|
|
118
|
-
}
|
|
119
|
-
set titleContent(value) {
|
|
120
|
-
this.#titleContent_accessor_storage = value;
|
|
121
|
-
}
|
|
122
|
-
#trigger_accessor_storage;
|
|
123
|
-
/**
|
|
124
|
-
* The element that will trigger the navigation section.
|
|
125
|
-
*
|
|
126
|
-
* For attribute usage, provide an id reference.
|
|
127
|
-
*/
|
|
128
|
-
get trigger() {
|
|
129
|
-
return this.#trigger_accessor_storage;
|
|
130
|
-
}
|
|
131
|
-
set trigger(value) {
|
|
132
|
-
this.#trigger_accessor_storage = value;
|
|
133
|
-
}
|
|
134
|
-
#accessibilityLabel_accessor_storage;
|
|
135
|
-
/**
|
|
136
|
-
* This will be forwarded as aria-label to the nav element and is read as a title of the navigation-section.
|
|
137
|
-
*/
|
|
138
|
-
get accessibilityLabel() {
|
|
139
|
-
return this.#accessibilityLabel_accessor_storage;
|
|
140
|
-
}
|
|
141
|
-
set accessibilityLabel(value) {
|
|
142
|
-
this.#accessibilityLabel_accessor_storage = value;
|
|
143
|
-
}
|
|
144
|
-
#accessibilityBackLabel_accessor_storage;
|
|
145
|
-
/**
|
|
146
|
-
* This will be forwarded as aria-label to the back button element.
|
|
147
|
-
*/
|
|
148
|
-
get accessibilityBackLabel() {
|
|
149
|
-
return this.#accessibilityBackLabel_accessor_storage;
|
|
150
|
-
}
|
|
151
|
-
set accessibilityBackLabel(value) {
|
|
152
|
-
this.#accessibilityBackLabel_accessor_storage = value;
|
|
153
|
-
}
|
|
154
|
-
/** The state of the component. */
|
|
155
|
-
set state(state) {
|
|
156
|
-
super.state = state;
|
|
157
|
-
this.internals.ariaHidden = this.state !== "opened" ? "true" : null;
|
|
158
|
-
}
|
|
159
|
-
get state() {
|
|
160
|
-
return super.state;
|
|
161
|
-
}
|
|
162
|
-
constructor() {
|
|
163
|
-
super();
|
|
164
|
-
this.#titleContent_accessor_storage = __runInitializers(this, _titleContent_initializers, "");
|
|
165
|
-
this.#trigger_accessor_storage = (__runInitializers(this, _titleContent_extraInitializers), __runInitializers(this, _trigger_initializers, null));
|
|
166
|
-
this.#accessibilityLabel_accessor_storage = (__runInitializers(this, _trigger_extraInitializers), __runInitializers(this, _accessibilityLabel_initializers, ""));
|
|
167
|
-
this.#accessibilityBackLabel_accessor_storage = (__runInitializers(this, _accessibilityLabel_extraInitializers), __runInitializers(this, _accessibilityBackLabel_initializers, ""));
|
|
168
|
-
this._firstLevelNavigation = (__runInitializers(this, _accessibilityBackLabel_extraInitializers), null);
|
|
169
|
-
this._triggerElement = null;
|
|
170
|
-
this._language = new SbbLanguageController(this);
|
|
171
|
-
this._focusTrapController = new SbbFocusTrapController(this);
|
|
172
|
-
this._lastKeydownEvent = null;
|
|
173
|
-
this._mediaMatcherController = new SbbMediaMatcherController(this, { [SbbMediaQueryBreakpointSmallAndBelow]: (matches) => {
|
|
174
|
-
if (this.state !== "closed") this._setNavigationInert(matches);
|
|
175
|
-
} });
|
|
176
|
-
this._handleNavigationSectionClose = (event) => {
|
|
177
|
-
if (event.composedPath().filter((el) => el instanceof HTMLElement).some((el) => this._isCloseElement(el))) this.close();
|
|
178
|
-
};
|
|
179
|
-
this.addEventListener?.("keydown", (e) => {
|
|
180
|
-
this._lastKeydownEvent = e;
|
|
181
|
-
});
|
|
182
|
-
this.addEventListener?.("focusout", (e) => {
|
|
183
|
-
if (e.relatedTarget instanceof HTMLElement && !this.contains(e.relatedTarget) && sbbInputModalityDetector.mostRecentModality === "keyboard" && this._lastKeydownEvent?.key === "Tab" && this._triggerElement) {
|
|
184
|
-
const navigationElement = this.closest("sbb-navigation");
|
|
185
|
-
const focusableElements = Array.from(navigationElement?.querySelectorAll(IS_FOCUSABLE_QUERY) ?? []).filter((e) => !this.contains(e));
|
|
186
|
-
if (this._lastKeydownEvent.shiftKey || !focusableElements.length) this._triggerElement?.focus();
|
|
187
|
-
else (focusableElements[focusableElements.indexOf(this._triggerElement) + 1] ?? navigationElement.closeButton)?.focus();
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Opens the navigation section on trigger click.
|
|
193
|
-
*/
|
|
194
|
-
open() {
|
|
195
|
-
if (this.state !== "closed" || !this.hasUpdated || !this.dispatchBeforeOpenEvent()) return;
|
|
196
|
-
if (this._isNavigationButton(this._triggerElement)) this._triggerElement?.marker?.select(this._triggerElement);
|
|
197
|
-
this._closePreviousNavigationSection();
|
|
198
|
-
this.state = "opening";
|
|
199
|
-
/** @internal */
|
|
200
|
-
this.dispatchEvent(new Event("ɵnavigationsectionopening"));
|
|
201
|
-
this.startUpdate();
|
|
202
|
-
this.inert = true;
|
|
203
|
-
if (this._triggerElement) this._triggerElement.ariaExpanded = "true";
|
|
204
|
-
if (this._isZeroAnimationDuration()) this._handleOpening();
|
|
205
|
-
}
|
|
206
|
-
_isZeroAnimationDuration() {
|
|
207
|
-
return isZeroAnimationDuration(this, "--sbb-navigation-section-animation-duration");
|
|
208
|
-
}
|
|
209
|
-
_handleOpening() {
|
|
210
|
-
this.state = "opened";
|
|
211
|
-
this.inert = false;
|
|
212
|
-
this._attachWindowEvents();
|
|
213
|
-
this._setNavigationInert();
|
|
214
|
-
this._focusTrapController.focusInitialElement();
|
|
215
|
-
this._checkActiveAction();
|
|
216
|
-
this.completeUpdate();
|
|
217
|
-
this.dispatchOpenEvent();
|
|
218
|
-
}
|
|
219
|
-
_handleClosing() {
|
|
220
|
-
this.state = "closed";
|
|
221
|
-
this.shadowRoot?.querySelector(".sbb-navigation-section__container")?.scrollTo(0, 0);
|
|
222
|
-
this._windowEventsController?.abort();
|
|
223
|
-
this._resetLists();
|
|
224
|
-
this._setNavigationInert();
|
|
225
|
-
if (this._isBelowLarge() && this._triggerElement) this._triggerElement.focus();
|
|
226
|
-
this.completeUpdate();
|
|
227
|
-
this.dispatchCloseEvent();
|
|
228
|
-
}
|
|
229
|
-
_closePreviousNavigationSection() {
|
|
230
|
-
this._firstLevelNavigation?.activeNavigationSection?.close();
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Closes the navigation section.
|
|
234
|
-
*/
|
|
235
|
-
close() {
|
|
236
|
-
if (this.state !== "opened" || !this.dispatchBeforeCloseEvent()) return;
|
|
237
|
-
/** @internal */
|
|
238
|
-
this.dispatchEvent(new Event("ɵnavigationsectionclosing"));
|
|
239
|
-
this.state = "closing";
|
|
240
|
-
this.startUpdate();
|
|
241
|
-
this.inert = true;
|
|
242
|
-
if (this._triggerElement) this._triggerElement.ariaExpanded = "false";
|
|
243
|
-
if (this._isZeroAnimationDuration()) this._handleClosing();
|
|
244
|
-
}
|
|
245
|
-
_configureTrigger() {
|
|
246
|
-
if (this.trigger === this._triggerElement) return;
|
|
247
|
-
this._triggerAbortController?.abort();
|
|
248
|
-
removeAriaOverlayTriggerProperties(this._triggerElement);
|
|
249
|
-
this._triggerElement = this.trigger;
|
|
250
|
-
if (!this._triggerElement) return;
|
|
251
|
-
setAriaOverlayTriggerProperties(this, this._triggerElement, "menu", this.state);
|
|
252
|
-
this._triggerAbortController = new AbortController();
|
|
253
|
-
if (this._isNavigationButton(this._triggerElement)) this._triggerElement.connectedSection = this;
|
|
254
|
-
this._triggerElement.addEventListener("click", () => this.open(), { signal: this._triggerAbortController.signal });
|
|
255
|
-
this._firstLevelNavigation = this._triggerElement?.closest?.("sbb-navigation");
|
|
256
|
-
}
|
|
257
|
-
_isNavigationButton(trigger) {
|
|
258
|
-
return trigger?.localName === "sbb-navigation-button";
|
|
259
|
-
}
|
|
260
|
-
_setNavigationInert(isBelowLarge = this._isBelowLarge()) {
|
|
261
|
-
const navigationContent = this._firstLevelNavigation?.navigationContent;
|
|
262
|
-
if (navigationContent) navigationContent.inert = isBelowLarge && this.state !== "closed";
|
|
263
|
-
}
|
|
264
|
-
_onAnimationEnd(event) {
|
|
265
|
-
if (event.animationName === "open" && this.state === "opening") this._handleOpening();
|
|
266
|
-
else if (event.animationName === "close" && this.state === "closing") this._handleClosing();
|
|
267
|
-
}
|
|
268
|
-
_resetLists() {
|
|
269
|
-
Array.from(this.querySelectorAll(":is(:state(section-action),[state--section-action]):is(:state(action-active),[state--action-active])") ?? []).forEach((action) => ɵstateController(action).delete("action-active"));
|
|
270
|
-
}
|
|
271
|
-
_attachWindowEvents() {
|
|
272
|
-
this._windowEventsController = new AbortController();
|
|
273
|
-
window.addEventListener("keydown", (event) => this._onKeydownEvent(event), { signal: this._windowEventsController.signal });
|
|
274
|
-
window.addEventListener("click", this._handleNavigationSectionClose, { signal: this._windowEventsController.signal });
|
|
275
|
-
}
|
|
276
|
-
_isCloseElement(element) {
|
|
277
|
-
return element.nodeName === "A" || !element.hasAttribute("disabled") && (element.hasAttribute("sbb-navigation-close") || element.hasAttribute("sbb-navigation-section-close"));
|
|
278
|
-
}
|
|
279
|
-
_isBelowLarge() {
|
|
280
|
-
return this._mediaMatcherController.matches(SbbMediaQueryBreakpointSmallAndBelow) ?? false;
|
|
281
|
-
}
|
|
282
|
-
_onKeydownEvent(event) {
|
|
283
|
-
if (this.state === "opened" && event.key === "Escape") this.close();
|
|
284
|
-
}
|
|
285
|
-
_checkActiveAction() {
|
|
286
|
-
ɵstateController(this.querySelector(":is(sbb-navigation-button, sbb-navigation-link).sbb-active"))?.toggle("action-active", true);
|
|
287
|
-
}
|
|
288
|
-
connectedCallback() {
|
|
289
|
-
super.connectedCallback();
|
|
290
|
-
this.slot ||= "navigation-section";
|
|
291
|
-
if (this.hasUpdated) this._configureTrigger();
|
|
292
|
-
}
|
|
293
|
-
disconnectedCallback() {
|
|
294
|
-
super.disconnectedCallback();
|
|
295
|
-
this._triggerElement = null;
|
|
296
|
-
this._triggerAbortController?.abort();
|
|
297
|
-
this._windowEventsController?.abort();
|
|
298
|
-
}
|
|
299
|
-
requestUpdate(name, oldValue, options) {
|
|
300
|
-
super.requestUpdate(name, oldValue, options);
|
|
301
|
-
if (!isServer && (!name || name === "trigger") && this.hasUpdated) this._configureTrigger();
|
|
302
|
-
}
|
|
303
|
-
firstUpdated(changedProperties) {
|
|
304
|
-
super.firstUpdated(changedProperties);
|
|
305
|
-
this._configureTrigger();
|
|
306
|
-
}
|
|
307
|
-
render() {
|
|
308
|
-
return html`
|
|
309
|
-
<div class="sbb-navigation-section__container">
|
|
310
|
-
<nav
|
|
311
|
-
@animationend=${this._onAnimationEnd}
|
|
312
|
-
class="sbb-navigation-section"
|
|
313
|
-
aria-labelledby=${!this.accessibilityLabel ? "title" : nothing}
|
|
314
|
-
aria-label=${this.accessibilityLabel ? this.accessibilityLabel : nothing}
|
|
315
|
-
>
|
|
316
|
-
<div class="sbb-navigation-section__wrapper">
|
|
317
|
-
<div class="sbb-navigation-section__content">
|
|
318
|
-
<div class="sbb-navigation-section__header">
|
|
319
|
-
<!-- Back button -->
|
|
320
|
-
<sbb-transparent-button
|
|
321
|
-
id="sbb-navigation-section-back-button"
|
|
322
|
-
class="sbb-navigation-section__back"
|
|
323
|
-
aria-label=${this.accessibilityBackLabel || i18nGoBack[this._language.current]}
|
|
324
|
-
negative
|
|
325
|
-
size="m"
|
|
326
|
-
icon-name="chevron-small-left-small"
|
|
327
|
-
sbb-navigation-section-close
|
|
328
|
-
></sbb-transparent-button>
|
|
329
|
-
|
|
330
|
-
<span class="sbb-navigation-section__title" id="title">
|
|
331
|
-
<slot name="title">${this.titleContent}</slot>
|
|
332
|
-
</span>
|
|
333
|
-
</div>
|
|
334
|
-
<slot></slot>
|
|
335
|
-
</div>
|
|
336
|
-
</div>
|
|
337
|
-
</nav>
|
|
338
|
-
</div>
|
|
339
|
-
`;
|
|
340
|
-
}
|
|
341
|
-
};
|
|
342
|
-
})();
|
|
343
|
-
//#endregion
|
|
344
|
-
export { SbbNavigationSectionElement as t };
|
|
345
|
-
|
|
346
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zZWN0aW9uLmNvbXBvbmVudC10MzZ4eWFxNC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLXNlY3Rpb24vbmF2aWdhdGlvbi1zZWN0aW9uLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL25hdmlnYXRpb24vbmF2aWdhdGlvbi1zZWN0aW9uL25hdmlnYXRpb24tc2VjdGlvbi5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLXNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0zeClcbiAgKTtcbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3ItZGFyayk7XG5cbiAgLy8gV2UgaGF2ZSB0byBwbGFjZSB0aGUgc3R5bGVzIG9uIHRoZSBob3N0IGFzIGl0IGhhcyB0byBiZSBhbGlnbmVkIG9uIHRoZSBncmlkIG9mIHRoZSBuYXZpZ2F0aW9uXG4gIGRpc3BsYXk6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tZGlzcGxheSwgbm9uZSk7XG4gIHBvc2l0aW9uOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1zZWN0aW9uLXBvc2l0aW9uKTtcbiAgZ3JpZC1jb2x1bW46IHZhcigtLXNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tY29sdW1uKTtcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgd2lkdGg6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24td2lkdGgpO1xuICBoZWlnaHQ6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24taGVpZ2h0KTtcbiAgei1pbmRleDogdmFyKC0tc2JiLW5hdmlnYXRpb24tei1pbmRleCwgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KSk7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi00eClcbiAgICApO1xuICAgIC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi13aWR0aDogY2FsYyhcbiAgICAgIDEwMCUgKyB2YXIoLS1zYmItbGF5b3V0LWJhc2Utb2Zmc2V0LXJlc3BvbnNpdmUpICsgdmFyKC0tc2JiLWdyaWQtYmFzZS1ndXR0ZXItcmVzcG9uc2l2ZSlcbiAgICApO1xuXG4gICAgdHJhbnNsYXRlOiBjYWxjKHZhcigtLXNiYi1ncmlkLWJhc2UtZ3V0dGVyLXJlc3BvbnNpdmUpICogLTEpIDA7XG4gIH1cbn1cblxuOmhvc3QoOnN0YXRlKHN0YXRlLW9wZW5lZCkpIHtcbiAgLS1zYmItbmF2aWdhdGlvbi1zZWN0aW9uLXBvaW50ZXItZXZlbnRzOiBhbGw7XG59XG5cbjpob3N0KDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSkge1xuICAtLXNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tcG9zaXRpb246IGFic29sdXRlO1xufVxuXG46aG9zdCg6aXMoOnN0YXRlKHN0YXRlLW9wZW5pbmcpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSB7XG4gIC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1wb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCksIDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkpIHtcbiAgLS1zYmItbmF2aWdhdGlvbi1zZWN0aW9uLWRpc3BsYXk6IGJsb2NrO1xufVxuXG46OnNsb3R0ZWQoKikge1xuICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1jb250ZW50LXBhZGRpbmctaW5saW5lLXN0YXJ0KTtcbn1cblxuLy8gQWx3YXlzIHBsYWNlIHRoZSBzYmItYnV0dG9uIG9uIGEgbmV3IHJvd1xuOjpzbG90dGVkKDpzdGF0ZShzYmItYnV0dG9uKSkge1xuICBncmlkLWNvbHVtbi1zdGFydDogMTtcbn1cblxuLnNiYi1uYXZpZ2F0aW9uLXNlY3Rpb25fX2NvbnRhaW5lciB7XG4gIHBvaW50ZXItZXZlbnRzOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1zZWN0aW9uLXBvaW50ZXItZXZlbnRzKTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItbmF2aWdhdGlvbi1zZWN0aW9uLWhlaWdodCk7XG59XG5cbi5zYmItbmF2aWdhdGlvbi1zZWN0aW9uIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGNvbG9yOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1jb2xvciwgdmFyKC0tc2JiLWNvbG9yLTEtbmVnYXRpdmUpKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCksIDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkpICYge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgYW5pbWF0aW9uOiB7XG4gICAgICBuYW1lOiBvcGVuO1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1hbmltYXRpb24tZWFzaW5nKTtcbiAgICB9XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2luZykpICYge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBjbG9zZTtcbiAgfVxuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICBvdXRsaW5lOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSBzb2xpZCBDYW52YXNUZXh0O1xuICB9XG59XG5cbi5zYmItbmF2aWdhdGlvbi1zZWN0aW9uX193cmFwcGVyIHtcbiAgQGluY2x1ZGUgc2JiLnNjcm9sbGJhcigkbmVnYXRpdmU6IHRydWUpO1xuXG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1wYWRkaW5nLWJsb2NrKTtcbiAgb3V0bGluZTogbm9uZTtcbiAgb3ZlcmZsb3cteTogYXV0bztcblxuICA6aG9zdCg6aXMoOnN0YXRlKHN0YXRlLW9wZW5pbmcpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICAtLXNiYi1zY3JvbGxiYXItY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgc2Nyb2xsYmFyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4uc2JiLW5hdmlnYXRpb24tc2VjdGlvbl9faGVhZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTF4KTtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4bCk7XG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItbmF2aWdhdGlvbi1zZWN0aW9uLWNvbnRlbnQtcGFkZGluZy1pbmxpbmUtc3RhcnQpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7XG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IHVsdHJhKSB7XG4gICAgZ3JpZC1jb2x1bW46IDEgLyA0O1xuICB9XG59XG5cbi5zYmItbmF2aWdhdGlvbi1zZWN0aW9uX19iYWNrIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2xhdGU6IGNhbGMoKDEwMCUgKyB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCkpICogLTEpIDA7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLnNiYi1uYXZpZ2F0aW9uLXNlY3Rpb25fX3RpdGxlIHtcbiAgQGluY2x1ZGUgc2JiLnRpdGxlLXJ1bGVzO1xuXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1mb250LXNpemUpO1xufVxuXG4uc2JiLW5hdmlnYXRpb24tc2VjdGlvbl9fY29udGVudCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICBnYXA6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUtbCkgdmFyKC0tc2JiLWdyaWQtYmFzZS1ndXR0ZXItcmVzcG9uc2l2ZSk7XG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1zZWN0aW9uLXBhZGRpbmctaW5saW5lKTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2xhdGU6IDAgdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtM3gpO1xuICAgIHRyYW5zaXRpb246IHtcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1zZWN0aW9uLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICBkZWxheTogdmFyKC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1zZWN0aW9uLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgICAgcHJvcGVydHk6IG9wYWNpdHksIHRyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICA6aG9zdCg6c3RhdGUoc3RhdGUtb3BlbmVkKSkgJiB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgdHJhbnNsYXRlOiAwIDA7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiB1bHRyYSkge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2luZykpICYge1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgb3BlbiB7XG4gIGZyb20ge1xuICAgIHRyYW5zbGF0ZTogdmFyKC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi10cmFuc2xhdGUpIDA7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNsYXRlOiAwIDA7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBjbG9zZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zbGF0ZTogMCAwO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zbGF0ZTogdmFyKC0tc2JiLW5hdmlnYXRpb24tc2VjdGlvbi10cmFuc2xhdGUpIDA7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJUcmFuc3BhcmVudEJ1dHRvbkVsZW1lbnQgfSBmcm9tICcuLi8uLi9idXR0b24ucHVyZS50cyc7XG5pbXBvcnQge1xuICBib3hTaXppbmdTdHlsZXMsXG4gIGZvcmNlVHlwZSxcbiAgaTE4bkdvQmFjayxcbiAgaWRSZWZlcmVuY2UsXG4gIElTX0ZPQ1VTQUJMRV9RVUVSWSxcbiAgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24sXG4gIG9taXRFbXB0eUNvbnZlcnRlcixcbiAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyUHJvcGVydGllcyxcbiAgdHlwZSBTYmJFbGVtZW50VHlwZSxcbiAgU2JiRm9jdXNUcmFwQ29udHJvbGxlcixcbiAgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLFxuICBTYmJMYW5ndWFnZUNvbnRyb2xsZXIsXG4gIFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIsXG4gIFNiYk1lZGlhUXVlcnlCcmVha3BvaW50U21hbGxBbmRCZWxvdyxcbiAgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQsXG4gIHR5cGUgU2JiT3BlbmVkQ2xvc2VkU3RhdGUsXG4gIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluLFxuICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJQcm9wZXJ0aWVzLFxuICDJtXN0YXRlQ29udHJvbGxlcixcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk5hdmlnYXRpb25FbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1idXR0b24vbmF2aWdhdGlvbi1idXR0b24uY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiTmF2aWdhdGlvbkxpbmtFbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1saW5rL25hdmlnYXRpb24tbGluay5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9uYXZpZ2F0aW9uLXNlY3Rpb24uc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIEl0IGNhbiBiZSB1c2VkIGFzIGEgY29udGFpbmVyIGZvciBgc2JiLW5hdmlnYXRpb24tbGlzdGAgd2l0aGluIGEgYHNiYi1uYXZpZ2F0aW9uYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IGludG8gdGhlIGBzYmItbmF2aWdhdGlvbi1zZWN0aW9uYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYk5hdmlnYXRpb25TZWN0aW9uRWxlbWVudCBleHRlbmRzIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItbmF2aWdhdGlvbi1zZWN0aW9uJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBlbGVtZW50RGVwZW5kZW5jaWVzOiBTYmJFbGVtZW50VHlwZVtdID0gW1NiYlRyYW5zcGFyZW50QnV0dG9uRWxlbWVudF07XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgdG8gYmUgc2hvd24gYmVmb3JlIHRoZSBhY3Rpb24gbGlzdC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICd0aXRsZS1jb250ZW50JywgcmVmbGVjdDogdHJ1ZSwgY29udmVydGVyOiBvbWl0RW1wdHlDb252ZXJ0ZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIHRpdGxlQ29udGVudDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBuYXZpZ2F0aW9uIHNlY3Rpb24uXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgbmF2IGVsZW1lbnQgYW5kIGlzIHJlYWQgYXMgYSB0aXRsZSBvZiB0aGUgbmF2aWdhdGlvbi1zZWN0aW9uLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktbGFiZWwnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5TGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGJhY2sgYnV0dG9uIGVsZW1lbnQuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1iYWNrLWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUJhY2tMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqIFRoZSBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LiAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2V0IHN0YXRlKHN0YXRlOiBTYmJPcGVuZWRDbG9zZWRTdGF0ZSkge1xuICAgIHN1cGVyLnN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYUhpZGRlbiA9IHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnID8gJ3RydWUnIDogbnVsbDtcbiAgfVxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0IHN0YXRlKCk6IFNiYk9wZW5lZENsb3NlZFN0YXRlIHtcbiAgICByZXR1cm4gc3VwZXIuc3RhdGU7XG4gIH1cblxuICBwcml2YXRlIF9maXJzdExldmVsTmF2aWdhdGlvbj86IFNiYk5hdmlnYXRpb25FbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmlnZ2VyQWJvcnRDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF93aW5kb3dFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2ZvY3VzVHJhcENvbnRyb2xsZXIgPSBuZXcgU2JiRm9jdXNUcmFwQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfbGFzdEtleWRvd25FdmVudDogS2V5Ym9hcmRFdmVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9tZWRpYU1hdGNoZXJDb250cm9sbGVyID0gbmV3IFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIodGhpcywge1xuICAgIFtTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3ddOiAobWF0Y2hlcykgPT4ge1xuICAgICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICAgIHRoaXMuX3NldE5hdmlnYXRpb25JbmVydChtYXRjaGVzKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHtcbiAgICAgIHRoaXMuX2xhc3RLZXlkb3duRXZlbnQgPSBlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2ZvY3Vzb3V0JywgKGUpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZS5yZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgIXRoaXMuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KSAmJlxuICAgICAgICBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5ID09PSAna2V5Ym9hcmQnICYmXG4gICAgICAgIHRoaXMuX2xhc3RLZXlkb3duRXZlbnQ/LmtleSA9PT0gJ1RhYicgJiZcbiAgICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uRWxlbWVudCA9IHRoaXMuY2xvc2VzdDxTYmJOYXZpZ2F0aW9uRWxlbWVudD4oJ3NiYi1uYXZpZ2F0aW9uJyk7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICBuYXZpZ2F0aW9uRWxlbWVudD8ucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oSVNfRk9DVVNBQkxFX1FVRVJZKSA/PyBbXSxcbiAgICAgICAgKS5maWx0ZXIoKGUpID0+ICF0aGlzLmNvbnRhaW5zKGUpKTtcblxuICAgICAgICBpZiAodGhpcy5fbGFzdEtleWRvd25FdmVudC5zaGlmdEtleSB8fCAhZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdHJpZ2dlckluZGV4ID0gZm9jdXNhYmxlRWxlbWVudHMuaW5kZXhPZih0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG4gICAgICAgICAgKGZvY3VzYWJsZUVsZW1lbnRzW3RyaWdnZXJJbmRleCArIDFdID8/IG5hdmlnYXRpb25FbGVtZW50IS5jbG9zZUJ1dHRvbik/LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgbmF2aWdhdGlvbiBzZWN0aW9uIG9uIHRyaWdnZXIgY2xpY2suXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHwgIXRoaXMuaGFzVXBkYXRlZCB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzTmF2aWdhdGlvbkJ1dHRvbih0aGlzLl90cmlnZ2VyRWxlbWVudCkpIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50Py5tYXJrZXI/LnNlbGVjdCh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvc2VQcmV2aW91c05hdmlnYXRpb25TZWN0aW9uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICAvKiogQGludGVybmFsICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnybVuYXZpZ2F0aW9uc2VjdGlvbm9wZW5pbmcnKSk7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuICAgIHRoaXMuaW5lcnQgPSB0cnVlO1xuICAgIGlmICh0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYXJpYUV4cGFuZGVkID0gJ3RydWUnO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKHRoaXMsICctLXNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLmluZXJ0ID0gZmFsc2U7XG4gICAgdGhpcy5fYXR0YWNoV2luZG93RXZlbnRzKCk7XG4gICAgdGhpcy5fc2V0TmF2aWdhdGlvbkluZXJ0KCk7XG4gICAgdGhpcy5fZm9jdXNUcmFwQ29udHJvbGxlci5mb2N1c0luaXRpYWxFbGVtZW50KCk7XG4gICAgdGhpcy5fY2hlY2tBY3RpdmVBY3Rpb24oKTtcbiAgICB0aGlzLmNvbXBsZXRlVXBkYXRlKCk7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCcuc2JiLW5hdmlnYXRpb24tc2VjdGlvbl9fY29udGFpbmVyJyk/LnNjcm9sbFRvKDAsIDApO1xuICAgIHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fcmVzZXRMaXN0cygpO1xuICAgIHRoaXMuX3NldE5hdmlnYXRpb25JbmVydCgpO1xuICAgIGlmICh0aGlzLl9pc0JlbG93TGFyZ2UoKSAmJiB0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5jb21wbGV0ZVVwZGF0ZSgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZVByZXZpb3VzTmF2aWdhdGlvblNlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZmlyc3RMZXZlbE5hdmlnYXRpb24/LmFjdGl2ZU5hdmlnYXRpb25TZWN0aW9uPy5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgbmF2aWdhdGlvbiBzZWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCfJtW5hdmlnYXRpb25zZWN0aW9uY2xvc2luZycpKTtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NpbmcnO1xuICAgIHRoaXMuc3RhcnRVcGRhdGUoKTtcbiAgICB0aGlzLmluZXJ0ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmFyaWFFeHBhbmRlZCA9ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgdHJpZ2dlciBpcyB2YWxpZCBhbmQgYXR0YWNoIGNsaWNrIGV2ZW50IGxpc3RlbmVycy5cbiAgcHJpdmF0ZSBfY29uZmlndXJlVHJpZ2dlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyID09PSB0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyUHJvcGVydGllcyh0aGlzLl90cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0aGlzLnRyaWdnZXI7XG5cbiAgICBpZiAoIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0QXJpYU92ZXJsYXlUcmlnZ2VyUHJvcGVydGllcyh0aGlzLCB0aGlzLl90cmlnZ2VyRWxlbWVudCwgJ21lbnUnLCB0aGlzLnN0YXRlKTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGlmICh0aGlzLl9pc05hdmlnYXRpb25CdXR0b24odGhpcy5fdHJpZ2dlckVsZW1lbnQpKSB7XG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5jb25uZWN0ZWRTZWN0aW9uID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLl9maXJzdExldmVsTmF2aWdhdGlvbiA9IHRoaXMuX3RyaWdnZXJFbGVtZW50Py5jbG9zZXN0Py4oJ3NiYi1uYXZpZ2F0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9pc05hdmlnYXRpb25CdXR0b24odHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsKTogdHJpZ2dlciBpcyBTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudCB7XG4gICAgcmV0dXJuIHRyaWdnZXI/LmxvY2FsTmFtZSA9PT0gJ3NiYi1uYXZpZ2F0aW9uLWJ1dHRvbic7XG4gIH1cblxuICBwcml2YXRlIF9zZXROYXZpZ2F0aW9uSW5lcnQoaXNCZWxvd0xhcmdlOiBib29sZWFuID0gdGhpcy5faXNCZWxvd0xhcmdlKCkpOiB2b2lkIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uQ29udGVudCA9IHRoaXMuX2ZpcnN0TGV2ZWxOYXZpZ2F0aW9uPy5uYXZpZ2F0aW9uQ29udGVudDtcbiAgICBpZiAobmF2aWdhdGlvbkNvbnRlbnQpIHtcbiAgICAgIG5hdmlnYXRpb25Db250ZW50LmluZXJ0ID0gaXNCZWxvd0xhcmdlICYmIHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnO1xuICAgIH1cbiAgfVxuXG4gIC8vIEluIHJhcmUgY2FzZXMgaXQgY2FuIGJlIHRoYXQgdGhlIGFuaW1hdGlvbkVuZCBldmVudCBpcyB0cmlnZ2VyZWQgdHdpY2UuXG4gIC8vIFRvIGF2b2lkIGVudGVyaW5nIGEgY29ycnVwdCBzdGF0ZSwgZXhpdCB3aGVuIHN0YXRlIGlzIG5vdCBleHBlY3RlZC5cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRMaXN0cygpOiB2b2lkIHtcbiAgICBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IHwgU2JiTmF2aWdhdGlvbkxpbmtFbGVtZW50PihcbiAgICAgICAgJzpzdGF0ZShzZWN0aW9uLWFjdGlvbik6c3RhdGUoYWN0aW9uLWFjdGl2ZSknLFxuICAgICAgKSA/PyBbXSxcbiAgICApLmZvckVhY2goKGFjdGlvbikgPT4gybVzdGF0ZUNvbnRyb2xsZXIoYWN0aW9uKS5kZWxldGUoJ2FjdGlvbi1hY3RpdmUnKSk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93RXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5fb25LZXlkb3duRXZlbnQoZXZlbnQpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgbmF2aWdhdGlvbiBzZWN0aW9uIG9uIGFjdGlvbiBjbGljayBvciBzYmItbmF2aWdhdGlvbi1zZWN0aW9uLWNsb3NlIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5faGFuZGxlTmF2aWdhdGlvblNlY3Rpb25DbG9zZSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl93aW5kb3dFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBjbGljayB3YXMgdHJpZ2dlcmVkIG9uIGFuIGVsZW1lbnQgdGhhdCBzaG91bGQgY2xvc2UgdGhlIHNlY3Rpb24uXG4gIHByaXZhdGUgX2hhbmRsZU5hdmlnYXRpb25TZWN0aW9uQ2xvc2UgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKFxuICAgICAgZXZlbnRcbiAgICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAgIC5maWx0ZXIoKGVsKSA9PiBlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KVxuICAgICAgICAuc29tZSgoZWwpID0+IHRoaXMuX2lzQ2xvc2VFbGVtZW50KGVsKSlcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfaXNDbG9zZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0EnIHx8XG4gICAgICAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpICYmXG4gICAgICAgIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLW5hdmlnYXRpb24tY2xvc2UnKSB8fFxuICAgICAgICAgIGVsZW1lbnQuaGFzQXR0cmlidXRlKCdzYmItbmF2aWdhdGlvbi1zZWN0aW9uLWNsb3NlJykpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pc0JlbG93TGFyZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhTWF0Y2hlckNvbnRyb2xsZXIubWF0Y2hlcyhTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3cpID8/IGZhbHNlO1xuICB9XG5cbiAgLy8gQ2xvc2VzIHRoZSBuYXZpZ2F0aW9uIG9uIFwiRXNjXCIga2V5IHByZXNzZWQuXG4gIHByaXZhdGUgX29uS2V5ZG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FjdGl2ZUFjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yPFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IHwgU2JiTmF2aWdhdGlvbkxpbmtFbGVtZW50PihcbiAgICAgICc6aXMoc2JiLW5hdmlnYXRpb24tYnV0dG9uLCBzYmItbmF2aWdhdGlvbi1saW5rKS5zYmItYWN0aXZlJyxcbiAgICApO1xuICAgIMm1c3RhdGVDb250cm9sbGVyKGVsZW1lbnQpPy50b2dnbGUoJ2FjdGlvbi1hY3RpdmUnLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuc2xvdCB8fD0gJ25hdmlnYXRpb24tc2VjdGlvbic7XG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3dpbmRvd0V2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmICghaXNTZXJ2ZXIgJiYgKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uLXNlY3Rpb25fX2NvbnRhaW5lclwiPlxuICAgICAgICA8bmF2XG4gICAgICAgICAgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uQW5pbWF0aW9uRW5kfVxuICAgICAgICAgIGNsYXNzPVwic2JiLW5hdmlnYXRpb24tc2VjdGlvblwiXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PSR7IXRoaXMuYWNjZXNzaWJpbGl0eUxhYmVsID8gJ3RpdGxlJyA6IG5vdGhpbmd9XG4gICAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eUxhYmVsID8gdGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWwgOiBub3RoaW5nfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uLXNlY3Rpb25fX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uX19jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIEJhY2sgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgIDxzYmItdHJhbnNwYXJlbnQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBpZD1cInNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24tYmFjay1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvbi1zZWN0aW9uX19iYWNrXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9JHt0aGlzLmFjY2Vzc2liaWxpdHlCYWNrTGFiZWwgfHwgaTE4bkdvQmFja1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlXG4gICAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgICBpY29uLW5hbWU9XCJjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2JiLW5hdmlnYXRpb24tc2VjdGlvbi1jbG9zZVxuICAgICAgICAgICAgICAgID48L3NiYi10cmFuc3BhcmVudC1idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1uYXZpZ2F0aW9uLXNlY3Rpb25fX3RpdGxlXCIgaWQ9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInRpdGxlXCI+JHt0aGlzLnRpdGxlQ29udGVudH08L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW5hdmlnYXRpb24tc2VjdGlvbic6IFNiYk5hdmlnYXRpb25TZWN0aW9uRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQzZDYSxxQ0FBMkI7bUJBQVMsd0JBQXdCLHdCQUF3Qjs7Ozs7Ozs7Ozs7OztjQUFwRixvQ0FBb0MsWUFBZ0Q7OzsrQkFROUYsV0FBVyxFQUNYLFNBQVM7SUFBRSxXQUFXO0lBQWlCLFNBQVM7SUFBTSxXQUFXO0lBQW9CLENBQUMsQ0FBQTswQkFRdEYsYUFBYSxFQUNiLFVBQVUsQ0FBQTtx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
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { html, unsafeCSS } from "lit";
|
|
3
|
-
import { property } from "lit/decorators.js";
|
|
4
|
-
import { SbbNegativeMixin } from "./core.js";
|
|
5
|
-
//#endregion
|
|
6
|
-
//#region src/elements/teaser-product/common/teaser-product-common.ts
|
|
7
|
-
var teaserProductCommonStyle = unsafeCSS(":host {\n --sbb-teaser-product-background: var(--sbb-teaser-product-background-color);\n display: block;\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-teaser-product-content-min-height: calc(\n var(--sbb-teaser-product-min-height) - 2 * var(--sbb-teaser-product-container-spacing)\n );\n --sbb-teaser-product-background: linear-gradient(\n var(--sbb-teaser-product-background-gradient-direction),\n var(--sbb-teaser-product-background-color) var(--sbb-teaser-product-background-gradient-start),\n transparent var(--sbb-teaser-product-background-gradient-end)\n );\n }\n}\n\n:host([negative]) {\n --sbb-teaser-product-background-color: var(--sbb-background-color-1-negative);\n --sbb-teaser-product-content-color: var(--sbb-color-4-negative);\n --sbb-teaser-product-footer-color: var(--sbb-color-4-negative);\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n --sbb-title-text-color-normal-override: var(--sbb-color-3-negative);\n}\n\n:host([image-alignment=before]) {\n --sbb-teaser-product-background-gradient-direction: to left;\n}\n\n:host(:not(:is(:state(slotted-footnote),[state--slotted-footnote]))) {\n --sbb-teaser-product-footer-padding-block-start: 0;\n}\n\n.sbb-teaser-product__image-container {\n overflow: hidden;\n border-radius: var(--sbb-teaser-product-border-radius) var(--sbb-teaser-product-border-radius) 0 0;\n}\n@media (min-width: calc(64rem)) {\n .sbb-teaser-product__image-container {\n position: absolute;\n inset: 0;\n border-radius: var(--sbb-teaser-product-border-radius);\n }\n}\n\n::slotted(p.sbb-teaser-product--spacing) {\n margin: 0;\n}\n\n::slotted(sbb-title.sbb-teaser-product--spacing) {\n margin-block-start: 0;\n}\n\n::slotted(:is(sbb-action-group, :is(:state(action),[state--action])).sbb-teaser-product--spacing) {\n margin-block-start: var(--sbb-spacing-responsive-xxs);\n}\n\n::slotted([slot=image]) {\n display: flex;\n width: 100%;\n height: 100%;\n}\n\n@media (forced-colors: active) {\n .sbb-teaser-product__root::after {\n content: \"\";\n position: absolute;\n display: block;\n inset: 0;\n pointer-events: none;\n border: var(--sbb-border-width-2x) solid CanvasText;\n border-radius: var(--sbb-teaser-product-border-radius);\n }\n}\n\n.sbb-action-base {\n display: block;\n position: relative;\n text-decoration: none;\n}\n\n.sbb-teaser-product__container {\n background: var(--sbb-teaser-product-background);\n border-radius: 0 0 var(--sbb-teaser-product-border-radius) var(--sbb-teaser-product-border-radius);\n padding-block: var(--sbb-teaser-product-container-padding-block);\n padding-inline: var(--sbb-teaser-product-container-padding-inline);\n}\n@media (min-width: calc(64rem)) {\n .sbb-teaser-product__container {\n display: grid;\n grid: \"content .\" 1fr \"footnote .\" auto/1fr 1fr;\n column-gap: var(--sbb-spacing-responsive-xxl);\n border-radius: var(--sbb-teaser-product-border-radius);\n position: relative;\n }\n :host([image-alignment=before]) .sbb-teaser-product__container {\n grid-template-areas: \". content\" \". footnote\";\n }\n}\n\n.sbb-teaser-product__content {\n grid-area: content;\n align-self: center;\n margin: 0;\n color: var(--sbb-teaser-product-content-color);\n min-height: var(--sbb-teaser-product-content-min-height, 0);\n align-content: var(--sbb-teaser-product-content-align-content, normal);\n}\n\n.sbb-teaser-product__footnote {\n grid-area: footnote;\n padding-block: var(--sbb-teaser-product-footer-padding-block-start) var(--sbb-teaser-product-footer-padding-block-end);\n color: var(--sbb-teaser-product-footer-color);\n font-size: var(--sbb-teaser-product-footer-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n min-height: var(--sbb-teaser-product-footer-min-height, 0);\n}");
|
|
8
|
-
var SbbTeaserProductCommonElementMixin = (superClass) => {
|
|
9
|
-
return (() => {
|
|
10
|
-
let _classSuper = SbbNegativeMixin(superClass);
|
|
11
|
-
let _imageAlignment_decorators;
|
|
12
|
-
let _imageAlignment_initializers = [];
|
|
13
|
-
let _imageAlignment_extraInitializers = [];
|
|
14
|
-
return class SbbTeaserProductCommonElement extends _classSuper {
|
|
15
|
-
static {
|
|
16
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
17
|
-
_imageAlignment_decorators = [property({
|
|
18
|
-
attribute: "image-alignment",
|
|
19
|
-
reflect: true
|
|
20
|
-
})];
|
|
21
|
-
__esDecorate(this, null, _imageAlignment_decorators, {
|
|
22
|
-
kind: "accessor",
|
|
23
|
-
name: "imageAlignment",
|
|
24
|
-
static: false,
|
|
25
|
-
private: false,
|
|
26
|
-
access: {
|
|
27
|
-
has: (obj) => "imageAlignment" in obj,
|
|
28
|
-
get: (obj) => obj.imageAlignment,
|
|
29
|
-
set: (obj, value) => {
|
|
30
|
-
obj.imageAlignment = value;
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
metadata: _metadata
|
|
34
|
-
}, _imageAlignment_initializers, _imageAlignment_extraInitializers);
|
|
35
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
36
|
-
enumerable: true,
|
|
37
|
-
configurable: true,
|
|
38
|
-
writable: true,
|
|
39
|
-
value: _metadata
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
#imageAlignment_accessor_storage = __runInitializers(this, _imageAlignment_initializers, "after");
|
|
43
|
-
/**
|
|
44
|
-
* Whether the fully visible part of the image is aligned 'before' or 'after' the content.
|
|
45
|
-
* Only relevant starting from large breakpoint.
|
|
46
|
-
*/
|
|
47
|
-
get imageAlignment() {
|
|
48
|
-
return this.#imageAlignment_accessor_storage;
|
|
49
|
-
}
|
|
50
|
-
set imageAlignment(value) {
|
|
51
|
-
this.#imageAlignment_accessor_storage = value;
|
|
52
|
-
}
|
|
53
|
-
renderTemplate() {
|
|
54
|
-
return html`
|
|
55
|
-
<div class="sbb-teaser-product__root">
|
|
56
|
-
<div class="sbb-teaser-product__image-container"><slot name="image"></slot></div>
|
|
57
|
-
<div class="sbb-teaser-product__container">
|
|
58
|
-
<span class="sbb-teaser-product__content">
|
|
59
|
-
<slot></slot>
|
|
60
|
-
</span>
|
|
61
|
-
<div class="sbb-teaser-product__footnote">
|
|
62
|
-
<slot name="footnote"></slot>
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
`;
|
|
67
|
-
}
|
|
68
|
-
constructor() {
|
|
69
|
-
super(...arguments);
|
|
70
|
-
__runInitializers(this, _imageAlignment_extraInitializers);
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
})();
|
|
74
|
-
};
|
|
75
|
-
//#endregion
|
|
76
|
-
export { teaserProductCommonStyle as n, SbbTeaserProductCommonElementMixin as t };
|
|
77
|
-
|
|
78
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhc2VyLXByb2R1Y3QtY29tbW9uLURhc1ZfU0RhLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90ZWFzZXItcHJvZHVjdC9jb21tb24vdGVhc2VyLXByb2R1Y3QtY29tbW9uLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RlYXNlci1wcm9kdWN0L2NvbW1vbi90ZWFzZXItcHJvZHVjdC1jb21tb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLXNiYi10ZWFzZXItcHJvZHVjdC1iYWNrZ3JvdW5kOiB2YXIoLS1zYmItdGVhc2VyLXByb2R1Y3QtYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tc2JiLXRlYXNlci1wcm9kdWN0LWNvbnRlbnQtbWluLWhlaWdodDogY2FsYyhcbiAgICAgIHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1taW4taGVpZ2h0KSAtIDIgKiB2YXIoLS1zYmItdGVhc2VyLXByb2R1Y3QtY29udGFpbmVyLXNwYWNpbmcpXG4gICAgKTtcbiAgICAtLXNiYi10ZWFzZXItcHJvZHVjdC1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICB2YXIoLS1zYmItdGVhc2VyLXByb2R1Y3QtYmFja2dyb3VuZC1ncmFkaWVudC1kaXJlY3Rpb24pLFxuICAgICAgdmFyKC0tc2JiLXRlYXNlci1wcm9kdWN0LWJhY2tncm91bmQtY29sb3IpIHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1iYWNrZ3JvdW5kLWdyYWRpZW50LXN0YXJ0KSxcbiAgICAgIHRyYW5zcGFyZW50IHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1iYWNrZ3JvdW5kLWdyYWRpZW50LWVuZClcbiAgICApO1xuICB9XG59XG5cbjpob3N0KFtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItdGVhc2VyLXByb2R1Y3QtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMS1uZWdhdGl2ZSk7XG4gIC0tc2JiLXRlYXNlci1wcm9kdWN0LWNvbnRlbnQtY29sb3I6IHZhcigtLXNiYi1jb2xvci00LW5lZ2F0aXZlKTtcbiAgLS1zYmItdGVhc2VyLXByb2R1Y3QtZm9vdGVyLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNC1uZWdhdGl2ZSk7XG4gIC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3I6IHZhcigtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yLWRhcmspO1xuICAtLXNiYi10aXRsZS10ZXh0LWNvbG9yLW5vcm1hbC1vdmVycmlkZTogdmFyKC0tc2JiLWNvbG9yLTMtbmVnYXRpdmUpO1xufVxuXG46aG9zdChbaW1hZ2UtYWxpZ25tZW50PSdiZWZvcmUnXSkge1xuICAtLXNiYi10ZWFzZXItcHJvZHVjdC1iYWNrZ3JvdW5kLWdyYWRpZW50LWRpcmVjdGlvbjogdG8gbGVmdDtcbn1cblxuOmhvc3QoOm5vdCg6c3RhdGUoc2xvdHRlZC1mb290bm90ZSkpKSB7XG4gIC0tc2JiLXRlYXNlci1wcm9kdWN0LWZvb3Rlci1wYWRkaW5nLWJsb2NrLXN0YXJ0OiAwO1xufVxuXG4uc2JiLXRlYXNlci1wcm9kdWN0X19pbWFnZS1jb250YWluZXIge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8vIFdlIGhhdmUgdG8gcmVtb3ZlIHRoZSBpbWFnZSBib3R0b20gYm9yZGVyLXJhZGl1cyB3aGVuIHN0YWNrZWRcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLXRlYXNlci1wcm9kdWN0LWJvcmRlci1yYWRpdXMpIHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1ib3JkZXItcmFkaXVzKSAwIDA7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItdGVhc2VyLXByb2R1Y3QtYm9yZGVyLXJhZGl1cyk7XG4gIH1cbn1cblxuOjpzbG90dGVkKHAuc2JiLXRlYXNlci1wcm9kdWN0LS1zcGFjaW5nKSB7XG4gIG1hcmdpbjogMDtcbn1cblxuOjpzbG90dGVkKHNiYi10aXRsZS5zYmItdGVhc2VyLXByb2R1Y3QtLXNwYWNpbmcpIHtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwO1xufVxuXG46OnNsb3R0ZWQoOmlzKHNiYi1hY3Rpb24tZ3JvdXAsIDpzdGF0ZShhY3Rpb24pKS5zYmItdGVhc2VyLXByb2R1Y3QtLXNwYWNpbmcpIHtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4cyk7XG59XG5cbjo6c2xvdHRlZChbc2xvdD0naW1hZ2UnXSkge1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uc2JiLXRlYXNlci1wcm9kdWN0X19yb290IHtcbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC8vIEFwcGx5IGEgdmlzdWFsIGJvcmRlciBmb3IgZm9yY2VkIGNvbG9yIG1vZGVcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgaW5zZXQ6IDA7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIGJvcmRlcjogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0yeCkgc29saWQgQ2FudmFzVGV4dDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cbn1cblxuLnNiYi1hY3Rpb24tYmFzZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLnNiYi10ZWFzZXItcHJvZHVjdF9fY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2JiLXRlYXNlci1wcm9kdWN0LWJhY2tncm91bmQpO1xuICBib3JkZXItcmFkaXVzOiAwIDAgdmFyKC0tc2JiLXRlYXNlci1wcm9kdWN0LWJvcmRlci1yYWRpdXMpIHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1ib3JkZXItcmFkaXVzKTtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLXRlYXNlci1wcm9kdWN0LWNvbnRhaW5lci1wYWRkaW5nLWJsb2NrKTtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1jb250YWluZXItcGFkZGluZy1pbmxpbmUpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQ6XG4gICAgICAnY29udGVudCAuJyAxZnJcbiAgICAgICdmb290bm90ZSAuJyBhdXRvIC8gMWZyIDFmcjtcbiAgICBjb2x1bW4tZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4bCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLXRlYXNlci1wcm9kdWN0LWJvcmRlci1yYWRpdXMpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIDpob3N0KFtpbWFnZS1hbGlnbm1lbnQ9J2JlZm9yZSddKSAmIHtcbiAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICcuIGNvbnRlbnQnXG4gICAgICAgICcuIGZvb3Rub3RlJztcbiAgICB9XG4gIH1cbn1cblxuLnNiYi10ZWFzZXItcHJvZHVjdF9fY29udGVudCB7XG4gIGdyaWQtYXJlYTogY29udGVudDtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xuICBtYXJnaW46IDA7XG4gIGNvbG9yOiB2YXIoLS1zYmItdGVhc2VyLXByb2R1Y3QtY29udGVudC1jb2xvcik7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1jb250ZW50LW1pbi1oZWlnaHQsIDApO1xuICBhbGlnbi1jb250ZW50OiB2YXIoLS1zYmItdGVhc2VyLXByb2R1Y3QtY29udGVudC1hbGlnbi1jb250ZW50LCBub3JtYWwpO1xufVxuXG4uc2JiLXRlYXNlci1wcm9kdWN0X19mb290bm90ZSB7XG4gIGdyaWQtYXJlYTogZm9vdG5vdGU7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1mb290ZXItcGFkZGluZy1ibG9jay1zdGFydClcbiAgICB2YXIoLS1zYmItdGVhc2VyLXByb2R1Y3QtZm9vdGVyLXBhZGRpbmctYmxvY2stZW5kKTtcbiAgY29sb3I6IHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1mb290ZXItY29sb3IpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1mb290ZXItZm9udC1zaXplKTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXNiYi10eXBvLWxldHRlci1zcGFjaW5nLXRleHQpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zYmItdGVhc2VyLXByb2R1Y3QtZm9vdGVyLW1pbi1oZWlnaHQsIDApO1xufVxuIiwiaW1wb3J0IHsgaHRtbCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyB0eXBlIEFic3RyYWN0Q29uc3RydWN0b3IsIFNiYkFjdGlvbkJhc2VFbGVtZW50LCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5cbmltcG9ydCB0ZWFzZXJQcm9kdWN0Q29tbW9uU3R5bGVTdHJpbmcgZnJvbSAnLi90ZWFzZXItcHJvZHVjdC1jb21tb24uc2Nzcz9pbmxpbmUnO1xuXG5leHBvcnQgY29uc3QgdGVhc2VyUHJvZHVjdENvbW1vblN0eWxlID0gdW5zYWZlQ1NTKHRlYXNlclByb2R1Y3RDb21tb25TdHlsZVN0cmluZyk7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYlRlYXNlclByb2R1Y3RDb21tb25FbGVtZW50TWl4aW5UeXBlIGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihcbiAgU2JiQWN0aW9uQmFzZUVsZW1lbnQsXG4pIHtcbiAgcHVibGljIGFjY2Vzc29yIGltYWdlQWxpZ25tZW50OiAnYWZ0ZXInIHwgJ2JlZm9yZSc7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJUZWFzZXJQcm9kdWN0Q29tbW9uRWxlbWVudE1peGluID0gPFxuICBUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJBY3Rpb25CYXNlRWxlbWVudD4sXG4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJUZWFzZXJQcm9kdWN0Q29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiVGVhc2VyUHJvZHVjdENvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFNiYlRlYXNlclByb2R1Y3RDb21tb25FbGVtZW50TWl4aW5UeXBlXG4gIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmdWxseSB2aXNpYmxlIHBhcnQgb2YgdGhlIGltYWdlIGlzIGFsaWduZWQgJ2JlZm9yZScgb3IgJ2FmdGVyJyB0aGUgY29udGVudC5cbiAgICAgKiBPbmx5IHJlbGV2YW50IHN0YXJ0aW5nIGZyb20gbGFyZ2UgYnJlYWtwb2ludC5cbiAgICAgKi9cbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdpbWFnZS1hbGlnbm1lbnQnLCByZWZsZWN0OiB0cnVlIH0pXG4gICAgcHVibGljIGFjY2Vzc29yIGltYWdlQWxpZ25tZW50OiAnYWZ0ZXInIHwgJ2JlZm9yZScgPSAnYWZ0ZXInO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXRlYXNlci1wcm9kdWN0X19yb290XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10ZWFzZXItcHJvZHVjdF9faW1hZ2UtY29udGFpbmVyXCI+PHNsb3QgbmFtZT1cImltYWdlXCI+PC9zbG90PjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGVhc2VyLXByb2R1Y3RfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdGVhc2VyLXByb2R1Y3RfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10ZWFzZXItcHJvZHVjdF9fZm9vdG5vdGVcIj5cbiAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rub3RlXCI+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYlRlYXNlclByb2R1Y3RDb21tb25FbGVtZW50IGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiVGVhc2VyUHJvZHVjdENvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FDT0EsSUFBYSwyQkFBMkIsVUFBVSxxd0hBQStCO0FBU2pGLElBQWEsc0NBR1gsZUFDbUU7QUE0Qm5FLGVBM0I0QztvQkFDbEMsaUJBQWlCLFdBQVc7Ozs7ZUFEdkIsc0NBQ0wsWUFBNEI7OztrQ0FPbkMsU0FBUztLQUFFLFdBQVc7S0FBbUIsU0FBUztLQUFNLENBQUMsQ0FBQTtBQUMxRCxpQkFBQSxNQUFBLE1BQUEsNEJBQUE7S0FBQSxNQUFBO0tBQUEsTUFBQTtLQUFBLFFBQUE7S0FBQSxTQUFBO0tBQUEsUUFBQTtNQUFBLE1BQUEsUUFBQSxvQkFBQTtNQUFBLE1BQUEsUUFBQSxJQUFnQjtNQUFjLE1BQUEsS0FBQSxVQUFBO0FBQUEsV0FBZCxpQkFBYzs7TUFBQTtLQUFBLFVBQUE7S0FBQSxFQUFBLDhCQUFBLGtDQUFBOzs7Ozs7OztHQUE5QixtQ0FBQSxrQkFBQSxNQUFBLDhCQUFxRCxRQUFPOzs7OztHQUE1RCxJQUFnQixpQkFBYztBQUFBLFdBQUEsTUFBQTs7R0FBOUIsSUFBZ0IsZUFBYyxPQUFBO0FBQUEsVUFBQSxrQ0FBQTs7R0FFWCxpQkFBYztBQUMvQixXQUFPLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FlUiJ9
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { unsafeCSS } from "lit";
|
|
2
|
-
import { SbbLinkBaseElement, SbbScreenReaderOnlyElement, boxSizingStyles } from "./core.js";
|
|
3
|
-
import { html as html$1 } from "lit/static-html.js";
|
|
4
|
-
import { SbbTeaserProductCommonElementMixin, teaserProductCommonStyle } from "./teaser-product/common/teaser-product-common.js";
|
|
5
|
-
//#region src/elements/teaser-product/teaser-product/teaser-product.scss?inline
|
|
6
|
-
var teaser_product_default = "@media (forced-colors: active) {\n :host {\n --sbb-title-text-color-normal-override: LinkText !important;\n --sbb-teaser-product-content-color: LinkText !important;\n --sbb-teaser-product-footer-color: LinkText !important;\n }\n}\n\n.sbb-teaser-product__wrapper {\n position: relative;\n}\n\n.sbb-teaser-product__root {\n pointer-events: none;\n}\n@media (forced-colors: active) {\n :host(:hover) .sbb-teaser-product__root::after {\n border-color: Highlight;\n }\n}\n\n.sbb-teaser-product {\n position: absolute;\n inset: 0;\n}\n.sbb-teaser-product: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-product-border-radius);\n}";
|
|
7
|
-
//#endregion
|
|
8
|
-
//#region src/elements/teaser-product/teaser-product/teaser-product.component.ts
|
|
9
|
-
/**
|
|
10
|
-
* Displays a text and a footnote, combined with an image, to tease a product
|
|
11
|
-
*
|
|
12
|
-
* @slot - Use this slot to provide the main content.
|
|
13
|
-
* @slot image - Use this slot to provide an image or a `sbb-image` as a background.
|
|
14
|
-
* @slot footnote - Use this slot to provide a footnote.
|
|
15
|
-
* @cssprop [--sbb-teaser-product-background-gradient-start=25%] - At which percentage the background should start getting transparent.
|
|
16
|
-
* @cssprop [--sbb-teaser-product-background-gradient-end=75%] - At which percentage the background should be fully transparent.
|
|
17
|
-
*/
|
|
18
|
-
var SbbTeaserProductElement = class extends SbbTeaserProductCommonElementMixin(SbbLinkBaseElement) {
|
|
19
|
-
static {
|
|
20
|
-
this.elementName = "sbb-teaser-product";
|
|
21
|
-
}
|
|
22
|
-
static {
|
|
23
|
-
this.elementDependencies = [SbbScreenReaderOnlyElement];
|
|
24
|
-
}
|
|
25
|
-
static {
|
|
26
|
-
this.styles = [
|
|
27
|
-
boxSizingStyles,
|
|
28
|
-
teaserProductCommonStyle,
|
|
29
|
-
unsafeCSS(teaser_product_default)
|
|
30
|
-
];
|
|
31
|
-
}
|
|
32
|
-
render() {
|
|
33
|
-
return html$1`
|
|
34
|
-
<div class="sbb-teaser-product__wrapper">
|
|
35
|
-
${this.renderLink(html$1`<sbb-screen-reader-only>${this.accessibilityLabel}</sbb-screen-reader-only>`)}
|
|
36
|
-
${this.renderTemplate()}
|
|
37
|
-
</div>
|
|
38
|
-
`;
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
//#endregion
|
|
42
|
-
export { SbbTeaserProductElement as t };
|
|
43
|
-
|
|
44
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhc2VyLXByb2R1Y3QuY29tcG9uZW50LUNCNmZPWDdULmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90ZWFzZXItcHJvZHVjdC90ZWFzZXItcHJvZHVjdC90ZWFzZXItcHJvZHVjdC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90ZWFzZXItcHJvZHVjdC90ZWFzZXItcHJvZHVjdC90ZWFzZXItcHJvZHVjdC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAvLyBTaW11bGF0ZSBsaW5rIGNvbG9yIG9wdGljYWxseVxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItdGl0bGUtdGV4dC1jb2xvci1ub3JtYWwtb3ZlcnJpZGU6IExpbmtUZXh0ICFpbXBvcnRhbnQ7XG4gICAgLS1zYmItdGVhc2VyLXByb2R1Y3QtY29udGVudC1jb2xvcjogTGlua1RleHQgIWltcG9ydGFudDtcbiAgICAtLXNiYi10ZWFzZXItcHJvZHVjdC1mb290ZXItY29sb3I6IExpbmtUZXh0ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLnNiYi10ZWFzZXItcHJvZHVjdF9fd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnNiYi10ZWFzZXItcHJvZHVjdF9fcm9vdCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAmOjphZnRlciB7XG4gICAgICA6aG9zdCg6aG92ZXIpICYge1xuICAgICAgICBib3JkZXItY29sb3I6IEhpZ2hsaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLnNiYi10ZWFzZXItcHJvZHVjdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG5cbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi10ZWFzZXItcHJvZHVjdC1ib3JkZXItcmFkaXVzKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQge1xuICBib3hTaXppbmdTdHlsZXMsXG4gIHR5cGUgU2JiRWxlbWVudFR5cGUsXG4gIFNiYkxpbmtCYXNlRWxlbWVudCxcbiAgU2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQsXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHtcbiAgU2JiVGVhc2VyUHJvZHVjdENvbW1vbkVsZW1lbnRNaXhpbixcbiAgdGVhc2VyUHJvZHVjdENvbW1vblN0eWxlLFxufSBmcm9tICcuLi9jb21tb24vdGVhc2VyLXByb2R1Y3QtY29tbW9uLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdGVhc2VyLXByb2R1Y3Quc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIERpc3BsYXlzIGEgdGV4dCBhbmQgYSBmb290bm90ZSwgY29tYmluZWQgd2l0aCBhbiBpbWFnZSwgdG8gdGVhc2UgYSBwcm9kdWN0XG4gKlxuICogQHNsb3QgLSBVc2UgdGhpcyBzbG90IHRvIHByb3ZpZGUgdGhlIG1haW4gY29udGVudC5cbiAqIEBzbG90IGltYWdlIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGltYWdlIG9yIGEgYHNiYi1pbWFnZWAgYXMgYSBiYWNrZ3JvdW5kLlxuICogQHNsb3QgZm9vdG5vdGUgLSBVc2UgdGhpcyBzbG90IHRvIHByb3ZpZGUgYSBmb290bm90ZS5cbiAqIEBjc3Nwcm9wIFstLXNiYi10ZWFzZXItcHJvZHVjdC1iYWNrZ3JvdW5kLWdyYWRpZW50LXN0YXJ0PTI1JV0gLSBBdCB3aGljaCBwZXJjZW50YWdlIHRoZSBiYWNrZ3JvdW5kIHNob3VsZCBzdGFydCBnZXR0aW5nIHRyYW5zcGFyZW50LlxuICogQGNzc3Byb3AgWy0tc2JiLXRlYXNlci1wcm9kdWN0LWJhY2tncm91bmQtZ3JhZGllbnQtZW5kPTc1JV0gLSBBdCB3aGljaCBwZXJjZW50YWdlIHRoZSBiYWNrZ3JvdW5kIHNob3VsZCBiZSBmdWxseSB0cmFuc3BhcmVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlRlYXNlclByb2R1Y3RFbGVtZW50IGV4dGVuZHMgU2JiVGVhc2VyUHJvZHVjdENvbW1vbkVsZW1lbnRNaXhpbihcbiAgU2JiTGlua0Jhc2VFbGVtZW50LFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItdGVhc2VyLXByb2R1Y3QnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbU2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnRdO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbXG4gICAgYm94U2l6aW5nU3R5bGVzLFxuICAgIHRlYXNlclByb2R1Y3RDb21tb25TdHlsZSxcbiAgICB1bnNhZmVDU1Moc3R5bGUpLFxuICBdO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIC8vIFdlIHJlbmRlciB0aGUgY29udGVudCBvdXRzaWRlIHRoZSBhbmNob3IgdGFnIHRvIGFsbG93IHNjcmVlbiByZWFkZXJzIHRvIG5hdmlnYXRlIHRocm91Z2ggaXRcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGVhc2VyLXByb2R1Y3RfX3dyYXBwZXJcIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlckxpbmsoXG4gICAgICAgICAgLy8gRm9yIFNFTywgd2UgYWRkIHRoZSBhY2Nlc3NpYmlsaXR5IGhpZGRlbiBhcyBoaWRkZW4gY29udGVudCBvZiB0aGUgbGlua1xuICAgICAgICAgIGh0bWxgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHt0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbH08L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+YCxcbiAgICAgICAgKX1cbiAgICAgICAgJHt0aGlzLnJlbmRlclRlbXBsYXRlKCl9XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGVhc2VyLXByb2R1Y3QnOiBTYmJUZWFzZXJQcm9kdWN0RWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3lCQSxJQUFhLDBCQUFiLGNBQTZDLG1DQUMzQyxtQkFDRCxDQUFBOztBQUNpQyxPQUFBLGNBQXNCOzs7QUFDL0IsT0FBQSxzQkFBd0MsQ0FBQywyQkFBMkI7OztBQUNwRSxPQUFBLFNBQXlCO0dBQzlDO0dBQ0E7R0FDQSxVQUFVLHVCQUFBO0dBQ1g7O0NBRWtCLFNBQU07QUFFdkIsU0FBTyxNQUFJOztVQUVMLEtBQUssV0FFTCxNQUFJLDJCQUEyQixLQUFLLG1CQUFrQiwyQkFDdkQsQ0FBQTtVQUNDLEtBQUssZ0JBQWdCLENBQUEifQ==
|