@sbb-esta/lyne-elements-dev 4.9.0-dev.1775022513 → 4.9.0-dev.1775049532
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/styles/core.scss +9 -0
- package/core.css +22 -0
- package/custom-elements.json +561 -561
- package/development/step-label.component-D3wrRPQ7.js +265 -0
- package/development/step.component-ewujsOVD.js +212 -0
- package/development/stepper/step/step.component.js +1 -1
- package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
- package/development/stepper/step-label/step-label.component.js +1 -1
- package/development/stepper/step-label.js +1 -1
- package/development/stepper/step.js +1 -1
- package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
- package/development/stepper/stepper/stepper.component.js +1 -1
- package/development/stepper/stepper.js +1 -1
- package/development/stepper.component-BJC_4cep.js +497 -0
- package/development/stepper.js +3 -3
- package/development/stepper.pure.js +3 -3
- package/off-brand-theme.css +22 -0
- package/package.json +2 -2
- package/safety-theme.css +22 -0
- package/standard-theme.css +22 -0
- package/step-label.component-Cu_Hck4P.js +80 -0
- package/{step.component-CbfVfpi6.js → step.component-DY61vAFB.js} +1 -1
- package/stepper/step/step.component.js +1 -1
- package/stepper/step-label/step-label.component.js +1 -1
- package/stepper/step-label.js +1 -1
- package/stepper/step.js +1 -1
- package/stepper/stepper/stepper.component.js +1 -1
- package/stepper/stepper.js +1 -1
- package/{stepper.component-CrMknCZm.js → stepper.component-83cngpic.js} +6 -8
- package/stepper.js +3 -3
- package/stepper.pure.js +3 -3
- package/development/step-label.component-C_obpSzp.js +0 -298
- package/development/step.component-DsXAckYS.js +0 -220
- package/development/stepper.component-yAkgcauE.js +0 -508
- package/step-label.component-BYaPBTcl.js +0 -82
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { css, html } from "lit";
|
|
3
|
+
import { property } from "lit/decorators.js";
|
|
4
|
+
import { SbbElement } from "./core/base-elements.js";
|
|
5
|
+
import { forceType } from "./core/decorators.js";
|
|
6
|
+
import { isLean } from "./core/dom.js";
|
|
7
|
+
import { boxSizingStyles } from "./core/styles.js";
|
|
8
|
+
import { getNextElementIndex, isArrowKeyPressed } from "./core/a11y.js";
|
|
9
|
+
import { IntersectionController } from "@lit-labs/observers/intersection-controller.js";
|
|
10
|
+
import { SbbMediaMatcherController, SbbMediaQueryBreakpointLargeAndAbove, SbbMediaQueryBreakpointSmallAndAbove, SbbMediaQueryBreakpointUltraAndAbove, SbbMediaQueryBreakpointZeroAndAbove } from "./core/controllers/media-matchers-controller.js";
|
|
11
|
+
//#region src/elements/stepper/stepper/stepper.scss?lit&inline
|
|
12
|
+
var stepper_default = css`:host {
|
|
13
|
+
--sbb-stepper-animation-duration: var(
|
|
14
|
+
--sbb-disable-animation-duration,
|
|
15
|
+
var(--sbb-animation-duration-6x)
|
|
16
|
+
);
|
|
17
|
+
display: block;
|
|
18
|
+
position: relative;
|
|
19
|
+
counter-reset: step-label;
|
|
20
|
+
}
|
|
21
|
+
@media (forced-colors: active) {
|
|
22
|
+
:host {
|
|
23
|
+
--sbb-stepper-marker-color: ButtonText;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
:host(:is(:state(disable-animation),[state--disable-animation])) {
|
|
28
|
+
--sbb-disable-animation-duration: 0s;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host([orientation=vertical]) {
|
|
32
|
+
--sbb-stepper-orientation: column;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.sbb-stepper__labels {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: var(--sbb-stepper-orientation);
|
|
38
|
+
position: relative;
|
|
39
|
+
justify-content: start;
|
|
40
|
+
margin-block-end: var(--sbb-spacing-responsive-m);
|
|
41
|
+
}
|
|
42
|
+
.sbb-stepper__labels::before {
|
|
43
|
+
content: "";
|
|
44
|
+
position: absolute;
|
|
45
|
+
inset-inline-start: calc(var(--sbb-stepper-border-width) * -1);
|
|
46
|
+
background-color: var(--sbb-stepper-marker-color);
|
|
47
|
+
}
|
|
48
|
+
:host([orientation=horizontal]) .sbb-stepper__labels {
|
|
49
|
+
gap: var(--sbb-spacing-responsive-m);
|
|
50
|
+
padding-block-end: var(--sbb-spacing-fixed-4x);
|
|
51
|
+
border-block-end: var(--sbb-stepper-border-width) solid var(--sbb-border-color-4-inverted);
|
|
52
|
+
}
|
|
53
|
+
:host([orientation=horizontal]) .sbb-stepper__labels::before {
|
|
54
|
+
inset-block-end: calc(var(--sbb-stepper-border-width) * -1);
|
|
55
|
+
height: var(--sbb-stepper-marker-width);
|
|
56
|
+
width: var(--sbb-stepper-marker-size, 0);
|
|
57
|
+
transition: width var(--sbb-stepper-animation-duration) var(--sbb-animation-easing);
|
|
58
|
+
}
|
|
59
|
+
:host([orientation=vertical]) .sbb-stepper__labels {
|
|
60
|
+
padding-inline-start: var(--sbb-spacing-fixed-4x);
|
|
61
|
+
border-inline-start: var(--sbb-stepper-border-width) solid var(--sbb-border-color-4-inverted);
|
|
62
|
+
}
|
|
63
|
+
:host([orientation=vertical]) .sbb-stepper__labels::before {
|
|
64
|
+
inset-block-start: 0;
|
|
65
|
+
width: var(--sbb-stepper-marker-width);
|
|
66
|
+
height: var(--sbb-stepper-marker-size, 0);
|
|
67
|
+
transition: height var(--sbb-stepper-animation-duration) var(--sbb-animation-easing);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.sbb-stepper__steps {
|
|
71
|
+
position: relative;
|
|
72
|
+
}
|
|
73
|
+
:host([orientation=horizontal]) .sbb-stepper__steps {
|
|
74
|
+
height: var(--sbb-stepper-content-height);
|
|
75
|
+
transition: height var(--sbb-stepper-animation-duration) var(--sbb-animation-easing);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
::slotted(sbb-step-label)::before {
|
|
79
|
+
content: counter(step-label);
|
|
80
|
+
counter-increment: step-label;
|
|
81
|
+
}`;
|
|
82
|
+
//#endregion
|
|
83
|
+
//#region src/elements/stepper/stepper/stepper.component.ts
|
|
84
|
+
var DEBOUNCE_TIME = 150;
|
|
85
|
+
var breakpointMap = {
|
|
86
|
+
zero: SbbMediaQueryBreakpointZeroAndAbove,
|
|
87
|
+
small: SbbMediaQueryBreakpointSmallAndAbove,
|
|
88
|
+
large: SbbMediaQueryBreakpointLargeAndAbove,
|
|
89
|
+
ultra: SbbMediaQueryBreakpointUltraAndAbove
|
|
90
|
+
};
|
|
91
|
+
var SbbStepChangeEvent = class extends Event {
|
|
92
|
+
constructor(selectedIndex, previousIndex, selectedStep, previousStep) {
|
|
93
|
+
super("stepchange", {
|
|
94
|
+
bubbles: true,
|
|
95
|
+
composed: true
|
|
96
|
+
});
|
|
97
|
+
this.selectedIndex = selectedIndex;
|
|
98
|
+
this.previousIndex = previousIndex;
|
|
99
|
+
this.selectedStep = selectedStep;
|
|
100
|
+
this.previousStep = previousStep;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Provides a structured, step-by-step workflow for user interactions.
|
|
105
|
+
* @slot - Provide a `sbb-expansion-panel-header` and a `sbb-expansion-panel-content` to the stepper.
|
|
106
|
+
* @slot step-label - Use this slot to provide an `sbb-step-label`.
|
|
107
|
+
* @slot step - Use this slot to provide an `sbb-step`.
|
|
108
|
+
* @event {SbbStepChangeEvent} stepchange - Emits whenever a step was changed.
|
|
109
|
+
*/
|
|
110
|
+
var SbbStepperElement = (() => {
|
|
111
|
+
let _classSuper = SbbElement;
|
|
112
|
+
let _instanceExtraInitializers = [];
|
|
113
|
+
let _linear_decorators;
|
|
114
|
+
let _linear_initializers = [];
|
|
115
|
+
let _linear_extraInitializers = [];
|
|
116
|
+
let _set_horizontalFrom_decorators;
|
|
117
|
+
let _orientation_decorators;
|
|
118
|
+
let _orientation_initializers = [];
|
|
119
|
+
let _orientation_extraInitializers = [];
|
|
120
|
+
let _size_decorators;
|
|
121
|
+
let _size_initializers = [];
|
|
122
|
+
let _size_extraInitializers = [];
|
|
123
|
+
let _set_selected_decorators;
|
|
124
|
+
let _set_selectedIndex_decorators;
|
|
125
|
+
return class SbbStepperElement extends _classSuper {
|
|
126
|
+
static {
|
|
127
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
128
|
+
_linear_decorators = [forceType(), property({ type: Boolean })];
|
|
129
|
+
_set_horizontalFrom_decorators = [property({
|
|
130
|
+
attribute: "horizontal-from",
|
|
131
|
+
reflect: true
|
|
132
|
+
})];
|
|
133
|
+
_orientation_decorators = [property({ reflect: true })];
|
|
134
|
+
_size_decorators = [property({ reflect: true })];
|
|
135
|
+
_set_selected_decorators = [property({ attribute: false })];
|
|
136
|
+
_set_selectedIndex_decorators = [property({
|
|
137
|
+
attribute: "selected-index",
|
|
138
|
+
type: Number
|
|
139
|
+
})];
|
|
140
|
+
__esDecorate(this, null, _linear_decorators, {
|
|
141
|
+
kind: "accessor",
|
|
142
|
+
name: "linear",
|
|
143
|
+
static: false,
|
|
144
|
+
private: false,
|
|
145
|
+
access: {
|
|
146
|
+
has: (obj) => "linear" in obj,
|
|
147
|
+
get: (obj) => obj.linear,
|
|
148
|
+
set: (obj, value) => {
|
|
149
|
+
obj.linear = value;
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
metadata: _metadata
|
|
153
|
+
}, _linear_initializers, _linear_extraInitializers);
|
|
154
|
+
__esDecorate(this, null, _set_horizontalFrom_decorators, {
|
|
155
|
+
kind: "setter",
|
|
156
|
+
name: "horizontalFrom",
|
|
157
|
+
static: false,
|
|
158
|
+
private: false,
|
|
159
|
+
access: {
|
|
160
|
+
has: (obj) => "horizontalFrom" in obj,
|
|
161
|
+
set: (obj, value) => {
|
|
162
|
+
obj.horizontalFrom = value;
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
metadata: _metadata
|
|
166
|
+
}, null, _instanceExtraInitializers);
|
|
167
|
+
__esDecorate(this, null, _orientation_decorators, {
|
|
168
|
+
kind: "accessor",
|
|
169
|
+
name: "orientation",
|
|
170
|
+
static: false,
|
|
171
|
+
private: false,
|
|
172
|
+
access: {
|
|
173
|
+
has: (obj) => "orientation" in obj,
|
|
174
|
+
get: (obj) => obj.orientation,
|
|
175
|
+
set: (obj, value) => {
|
|
176
|
+
obj.orientation = value;
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
metadata: _metadata
|
|
180
|
+
}, _orientation_initializers, _orientation_extraInitializers);
|
|
181
|
+
__esDecorate(this, null, _size_decorators, {
|
|
182
|
+
kind: "accessor",
|
|
183
|
+
name: "size",
|
|
184
|
+
static: false,
|
|
185
|
+
private: false,
|
|
186
|
+
access: {
|
|
187
|
+
has: (obj) => "size" in obj,
|
|
188
|
+
get: (obj) => obj.size,
|
|
189
|
+
set: (obj, value) => {
|
|
190
|
+
obj.size = value;
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
metadata: _metadata
|
|
194
|
+
}, _size_initializers, _size_extraInitializers);
|
|
195
|
+
__esDecorate(this, null, _set_selected_decorators, {
|
|
196
|
+
kind: "setter",
|
|
197
|
+
name: "selected",
|
|
198
|
+
static: false,
|
|
199
|
+
private: false,
|
|
200
|
+
access: {
|
|
201
|
+
has: (obj) => "selected" in obj,
|
|
202
|
+
set: (obj, value) => {
|
|
203
|
+
obj.selected = value;
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
metadata: _metadata
|
|
207
|
+
}, null, _instanceExtraInitializers);
|
|
208
|
+
__esDecorate(this, null, _set_selectedIndex_decorators, {
|
|
209
|
+
kind: "setter",
|
|
210
|
+
name: "selectedIndex",
|
|
211
|
+
static: false,
|
|
212
|
+
private: false,
|
|
213
|
+
access: {
|
|
214
|
+
has: (obj) => "selectedIndex" in obj,
|
|
215
|
+
set: (obj, value) => {
|
|
216
|
+
obj.selectedIndex = value;
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
metadata: _metadata
|
|
220
|
+
}, null, _instanceExtraInitializers);
|
|
221
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
222
|
+
enumerable: true,
|
|
223
|
+
configurable: true,
|
|
224
|
+
writable: true,
|
|
225
|
+
value: _metadata
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
static {
|
|
229
|
+
this.elementName = "sbb-stepper";
|
|
230
|
+
}
|
|
231
|
+
static {
|
|
232
|
+
this.styles = [boxSizingStyles, stepper_default];
|
|
233
|
+
}
|
|
234
|
+
static {
|
|
235
|
+
this.events = { stepchange: "stepchange" };
|
|
236
|
+
}
|
|
237
|
+
#linear_accessor_storage;
|
|
238
|
+
/** If set to true, only the current and previous labels can be clicked and selected. */
|
|
239
|
+
get linear() {
|
|
240
|
+
return this.#linear_accessor_storage;
|
|
241
|
+
}
|
|
242
|
+
set linear(value) {
|
|
243
|
+
this.#linear_accessor_storage = value;
|
|
244
|
+
}
|
|
245
|
+
/** Overrides the behavior of `orientation` property. */
|
|
246
|
+
set horizontalFrom(value) {
|
|
247
|
+
this._horizontalFrom = value && breakpointMap[value] ? value : null;
|
|
248
|
+
if (this._horizontalFrom && this._loaded) this._checkOrientation();
|
|
249
|
+
}
|
|
250
|
+
get horizontalFrom() {
|
|
251
|
+
return this._horizontalFrom;
|
|
252
|
+
}
|
|
253
|
+
#orientation_accessor_storage;
|
|
254
|
+
/** Steps orientation, either horizontal or vertical. */
|
|
255
|
+
get orientation() {
|
|
256
|
+
return this.#orientation_accessor_storage;
|
|
257
|
+
}
|
|
258
|
+
set orientation(value) {
|
|
259
|
+
this.#orientation_accessor_storage = value;
|
|
260
|
+
}
|
|
261
|
+
#size_accessor_storage;
|
|
262
|
+
/**
|
|
263
|
+
* Size variant, either s or m.
|
|
264
|
+
* @default 'm' / 's' (lean)
|
|
265
|
+
*/
|
|
266
|
+
get size() {
|
|
267
|
+
return this.#size_accessor_storage;
|
|
268
|
+
}
|
|
269
|
+
set size(value) {
|
|
270
|
+
this.#size_accessor_storage = value;
|
|
271
|
+
}
|
|
272
|
+
/** The currently selected step. */
|
|
273
|
+
set selected(step) {
|
|
274
|
+
if (this._loaded) this._select(step);
|
|
275
|
+
this._requestedSelected = step;
|
|
276
|
+
}
|
|
277
|
+
get selected() {
|
|
278
|
+
return this.querySelector?.("sbb-step:is(:state(selected),[state--selected])") ?? null;
|
|
279
|
+
}
|
|
280
|
+
/** The currently selected step index. */
|
|
281
|
+
set selectedIndex(index) {
|
|
282
|
+
if (this._loaded && index !== null) this._select(this.steps[index]);
|
|
283
|
+
this._requestedSelectedIndex = index;
|
|
284
|
+
}
|
|
285
|
+
get selectedIndex() {
|
|
286
|
+
return this.selected ? this.steps.indexOf(this.selected) : null;
|
|
287
|
+
}
|
|
288
|
+
/** The steps of the stepper. */
|
|
289
|
+
get steps() {
|
|
290
|
+
const steps = [];
|
|
291
|
+
this.querySelectorAll?.("sbb-step").forEach((step) => {
|
|
292
|
+
customElements.upgrade(step);
|
|
293
|
+
steps.push(step);
|
|
294
|
+
});
|
|
295
|
+
return steps;
|
|
296
|
+
}
|
|
297
|
+
get _enabledSteps() {
|
|
298
|
+
return this.steps.filter((s) => {
|
|
299
|
+
if (s.label) {
|
|
300
|
+
customElements.upgrade(s.label);
|
|
301
|
+
return !s.label.disabled;
|
|
302
|
+
}
|
|
303
|
+
return false;
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
constructor() {
|
|
307
|
+
super();
|
|
308
|
+
/**
|
|
309
|
+
* If the sbb-stepper is used in a sbb-dialog, the marker on the selected element will not appear,
|
|
310
|
+
* because the calculations are done when the dialog is closed, so the marker has a width of 0;
|
|
311
|
+
* the same happens for the stepper height.
|
|
312
|
+
* We need to recalculate it when the element becomes visible.
|
|
313
|
+
*/
|
|
314
|
+
this._observer = (__runInitializers(this, _instanceExtraInitializers), new IntersectionController(this, {
|
|
315
|
+
target: null,
|
|
316
|
+
callback: (entries) => {
|
|
317
|
+
entries.forEach((e) => {
|
|
318
|
+
if (e.intersectionRatio > 0) {
|
|
319
|
+
this._setStepperHeight(this.selected);
|
|
320
|
+
this._setMarkerSize();
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
}));
|
|
325
|
+
this.#linear_accessor_storage = __runInitializers(this, _linear_initializers, false);
|
|
326
|
+
this._horizontalFrom = (__runInitializers(this, _linear_extraInitializers), null);
|
|
327
|
+
this.#orientation_accessor_storage = __runInitializers(this, _orientation_initializers, "horizontal");
|
|
328
|
+
this.#size_accessor_storage = (__runInitializers(this, _orientation_extraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m"));
|
|
329
|
+
this._requestedSelected = (__runInitializers(this, _size_extraInitializers), null);
|
|
330
|
+
this._requestedSelectedIndex = null;
|
|
331
|
+
this._loaded = false;
|
|
332
|
+
this._resizeObserverTimeout = null;
|
|
333
|
+
this._mediaMatcher = new SbbMediaMatcherController(this, {});
|
|
334
|
+
this._onStepperResize = () => {
|
|
335
|
+
this._checkOrientation();
|
|
336
|
+
this._setStepperHeight(this.selected);
|
|
337
|
+
clearTimeout(this._resizeObserverTimeout);
|
|
338
|
+
this.internals.states.add("disable-animation");
|
|
339
|
+
this._resizeObserverTimeout = setTimeout(() => this.internals.states.delete("disable-animation"), DEBOUNCE_TIME);
|
|
340
|
+
};
|
|
341
|
+
this.addEventListener?.("keydown", (e) => this._handleKeyDown(e));
|
|
342
|
+
this.addEventListener?.("resizechange", (e) => this._onSelectedStepResize(e));
|
|
343
|
+
}
|
|
344
|
+
/** Selects the next step. */
|
|
345
|
+
next() {
|
|
346
|
+
if (this.selectedIndex !== null) this._select(this.steps[this.selectedIndex + 1]);
|
|
347
|
+
}
|
|
348
|
+
/** Selects the previous step. */
|
|
349
|
+
previous() {
|
|
350
|
+
if (this.selectedIndex !== null) this._select(this.steps[this.selectedIndex - 1]);
|
|
351
|
+
}
|
|
352
|
+
/** Resets the form in which the stepper is nested or every form of each step, if any. */
|
|
353
|
+
reset() {
|
|
354
|
+
const closestForm = this.closest("form");
|
|
355
|
+
if (closestForm) closestForm.reset();
|
|
356
|
+
else this.querySelectorAll("form").forEach((form) => form.reset());
|
|
357
|
+
this.selectedIndex = 0;
|
|
358
|
+
if (document.activeElement?.closest("sbb-stepper") === this) this.selected?.label?.focus();
|
|
359
|
+
}
|
|
360
|
+
_isSelectable(step) {
|
|
361
|
+
if (step) {
|
|
362
|
+
customElements.upgrade(step);
|
|
363
|
+
if (step.label) {
|
|
364
|
+
customElements.upgrade(step.label);
|
|
365
|
+
if (!this.linear && step.label.disabled) return false;
|
|
366
|
+
}
|
|
367
|
+
return true;
|
|
368
|
+
} else return false;
|
|
369
|
+
}
|
|
370
|
+
_select(step) {
|
|
371
|
+
if (!this._isSelectable(step) || step === this.selected) return;
|
|
372
|
+
const currentIndex = this.selectedIndex;
|
|
373
|
+
const currentStep = this.selected;
|
|
374
|
+
const validatePayload = {
|
|
375
|
+
currentIndex,
|
|
376
|
+
currentStep,
|
|
377
|
+
nextIndex: this.selectedIndex !== null ? this.selectedIndex + 1 : null,
|
|
378
|
+
nextStep: this.selectedIndex !== null ? this.steps[this.selectedIndex + 1] : null
|
|
379
|
+
};
|
|
380
|
+
if (this.selected && !this.selected.validate(validatePayload)) return;
|
|
381
|
+
this.selected?.deselect();
|
|
382
|
+
step.select();
|
|
383
|
+
/** @internal only to provide double entry in docs. It is a public event! */
|
|
384
|
+
this.dispatchEvent(new SbbStepChangeEvent(this.selectedIndex, currentIndex, this.selected, currentStep));
|
|
385
|
+
this._setMarkerSize();
|
|
386
|
+
this._setStepperHeight(step);
|
|
387
|
+
this._configureLinearMode();
|
|
388
|
+
if (document.activeElement?.closest("sbb-stepper") === this) this.selected?.label?.focus();
|
|
389
|
+
}
|
|
390
|
+
_setMarkerSize() {
|
|
391
|
+
if (!this._loaded || !this.selected || this.selectedIndex === void 0 || !this.selected.label) return;
|
|
392
|
+
const offset = this.orientation === "horizontal" ? this.selected.label.offsetLeft + this.selected.label.offsetWidth : this._calculateLabelOffsetTop();
|
|
393
|
+
this.style.setProperty("--sbb-stepper-marker-size", `${offset}px`);
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Sets the stepper height based on the height of the provided step.
|
|
397
|
+
*/
|
|
398
|
+
_setStepperHeight(step) {
|
|
399
|
+
if (step && step.shadowRoot) {
|
|
400
|
+
const innerElement = step.shadowRoot.querySelector(".sbb-step");
|
|
401
|
+
if (innerElement) this.style?.setProperty("--sbb-stepper-content-height", `${innerElement.offsetHeight}px`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
_calculateLabelOffsetTop() {
|
|
405
|
+
if (this.selectedIndex === null) return;
|
|
406
|
+
let offset = 0;
|
|
407
|
+
for (const step of this.steps) {
|
|
408
|
+
if (step === this.selected) break;
|
|
409
|
+
offset = step.label.offsetHeight + offset;
|
|
410
|
+
}
|
|
411
|
+
return offset + this.selected.label.offsetHeight + parseFloat(getComputedStyle(this).getPropertyValue("--sbb-spacing-fixed-6x")) * 16 * this.selectedIndex;
|
|
412
|
+
}
|
|
413
|
+
_onSelectedStepResize(e) {
|
|
414
|
+
this._setStepperHeight(e.target);
|
|
415
|
+
}
|
|
416
|
+
_configure() {
|
|
417
|
+
this.steps.forEach((step, i, array) => {
|
|
418
|
+
step.configure(this._loaded);
|
|
419
|
+
step.label?.configure(i + 1, array.length, this._loaded);
|
|
420
|
+
});
|
|
421
|
+
this._select(this.selected || this._enabledSteps[0]);
|
|
422
|
+
}
|
|
423
|
+
_updateLabels() {
|
|
424
|
+
this.steps.forEach((step) => {
|
|
425
|
+
step.slot = this.orientation === "horizontal" ? "step" : "step-label";
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
_checkOrientation() {
|
|
429
|
+
if (this.horizontalFrom) {
|
|
430
|
+
this.orientation = this._mediaMatcher.matches(breakpointMap[this.horizontalFrom]) ? "horizontal" : "vertical";
|
|
431
|
+
this._updateLabels();
|
|
432
|
+
}
|
|
433
|
+
setTimeout(() => this._setMarkerSize(), 0);
|
|
434
|
+
}
|
|
435
|
+
_configureLinearMode() {
|
|
436
|
+
this.steps.forEach((step, index) => {
|
|
437
|
+
if (!step.label) return;
|
|
438
|
+
customElements.upgrade(step.label);
|
|
439
|
+
step.label.disable(this.linear && index > this.selectedIndex || !this.linear && step.label.matches(":is(:state(user-disabled),[state--user-disabled])"));
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
connectedCallback() {
|
|
443
|
+
super.connectedCallback();
|
|
444
|
+
window.addEventListener("resize", this._onStepperResize, { passive: true });
|
|
445
|
+
this.toggleState("disable-animation", !this._loaded);
|
|
446
|
+
}
|
|
447
|
+
disconnectedCallback() {
|
|
448
|
+
super.disconnectedCallback();
|
|
449
|
+
window.removeEventListener("resize", this._onStepperResize);
|
|
450
|
+
}
|
|
451
|
+
firstUpdated(changedProperties) {
|
|
452
|
+
super.firstUpdated(changedProperties);
|
|
453
|
+
this.updateComplete.then(() => {
|
|
454
|
+
this._loaded = true;
|
|
455
|
+
this._configure();
|
|
456
|
+
if (this._requestedSelected && this.steps.indexOf(this._requestedSelected) !== -1) this.selectedIndex = this.steps.indexOf(this._requestedSelected);
|
|
457
|
+
else if (this._requestedSelectedIndex) this.selectedIndex = this._requestedSelectedIndex;
|
|
458
|
+
else this.selectedIndex = 0;
|
|
459
|
+
this._observer.observe(this);
|
|
460
|
+
this._checkOrientation();
|
|
461
|
+
setTimeout(() => this.internals.states.delete("disable-animation"), DEBOUNCE_TIME);
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
willUpdate(changedProperties) {
|
|
465
|
+
super.willUpdate(changedProperties);
|
|
466
|
+
if (changedProperties.has("orientation") && !this.horizontalFrom) {
|
|
467
|
+
this._updateLabels();
|
|
468
|
+
this._setMarkerSize();
|
|
469
|
+
}
|
|
470
|
+
if (changedProperties.has("linear") && this._loaded) this._configureLinearMode();
|
|
471
|
+
if (changedProperties.has("size")) this._setMarkerSize();
|
|
472
|
+
}
|
|
473
|
+
_handleKeyDown(evt) {
|
|
474
|
+
const enabledSteps = this._enabledSteps;
|
|
475
|
+
if (!enabledSteps || evt.target !== this && evt.target.parentElement !== this) return;
|
|
476
|
+
if (isArrowKeyPressed(evt)) {
|
|
477
|
+
const nextIndex = getNextElementIndex(evt, enabledSteps.indexOf(this.selected), enabledSteps.length);
|
|
478
|
+
this._select(enabledSteps[nextIndex]);
|
|
479
|
+
evt.preventDefault();
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
render() {
|
|
483
|
+
return html`
|
|
484
|
+
<div class="sbb-stepper__labels" role="tablist">
|
|
485
|
+
<slot name="step-label" @slotchange=${this._configure}></slot>
|
|
486
|
+
</div>
|
|
487
|
+
<div class="sbb-stepper__steps">
|
|
488
|
+
<slot name="step" @slotchange=${this._configure}></slot>
|
|
489
|
+
</div>
|
|
490
|
+
`;
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
})();
|
|
494
|
+
//#endregion
|
|
495
|
+
export { SbbStepperElement as n, SbbStepChangeEvent as t };
|
|
496
|
+
|
|
497
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQtQkpDXzRjZXAuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcHBlci9zdGVwcGVyLnNjc3M/bGl0JmlubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9zdGVwcGVyL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLXNiYi1zdGVwcGVyLWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICk7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY291bnRlci1yZXNldDogc3RlcC1sYWJlbDtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItc3RlcHBlci1tYXJrZXItY29sb3I6IEJ1dHRvblRleHQ7XG4gIH1cbn1cblxuOmhvc3QoOnN0YXRlKGRpc2FibGUtYW5pbWF0aW9uKSkge1xuICBAaW5jbHVkZSBzYmIuZGlzYWJsZS1hbmltYXRpb247XG59XG5cbjpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkge1xuICAtLXNiYi1zdGVwcGVyLW9yaWVudGF0aW9uOiBjb2x1bW47XG59XG5cbi5zYmItc3RlcHBlcl9fbGFiZWxzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHZhcigtLXNiYi1zdGVwcGVyLW9yaWVudGF0aW9uKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLW0pO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0LWlubGluZS1zdGFydDogY2FsYyh2YXIoLS1zYmItc3RlcHBlci1ib3JkZXItd2lkdGgpICogLTEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1zdGVwcGVyLW1hcmtlci1jb2xvcik7XG4gIH1cblxuICA6aG9zdChbb3JpZW50YXRpb249J2hvcml6b250YWwnXSkgJiB7XG4gICAgZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLW0pO1xuICAgIHBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCk7XG4gICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLXN0ZXBwZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTQtaW52ZXJ0ZWQpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGluc2V0LWJsb2NrLWVuZDogY2FsYyh2YXIoLS1zYmItc3RlcHBlci1ib3JkZXItd2lkdGgpICogLTEpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1zYmItc3RlcHBlci1tYXJrZXItd2lkdGgpO1xuICAgICAgd2lkdGg6IHZhcigtLXNiYi1zdGVwcGVyLW1hcmtlci1zaXplLCAwKTtcbiAgICAgIHRyYW5zaXRpb246IHdpZHRoIHZhcigtLXNiYi1zdGVwcGVyLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgIH1cbiAgfVxuXG4gIDpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkgJiB7XG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTR4KTtcbiAgICBib3JkZXItaW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItc3RlcHBlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLXNiYi1ib3JkZXItY29sb3ItNC1pbnZlcnRlZCk7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICB3aWR0aDogdmFyKC0tc2JiLXN0ZXBwZXItbWFya2VyLXdpZHRoKTtcbiAgICAgIGhlaWdodDogdmFyKC0tc2JiLXN0ZXBwZXItbWFya2VyLXNpemUsIDApO1xuICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IHZhcigtLXNiYi1zdGVwcGVyLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tc2JiLWFuaW1hdGlvbi1lYXNpbmcpO1xuICAgIH1cbiAgfVxufVxuXG4uc2JiLXN0ZXBwZXJfX3N0ZXBzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSAmIHtcbiAgICBoZWlnaHQ6IHZhcigtLXNiYi1zdGVwcGVyLWNvbnRlbnQtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgdmFyKC0tc2JiLXN0ZXBwZXItYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gIH1cbn1cblxuOjpzbG90dGVkKHNiYi1zdGVwLWxhYmVsKTo6YmVmb3JlIHtcbiAgY29udGVudDogY291bnRlcihzdGVwLWxhYmVsKTtcbiAgY291bnRlci1pbmNyZW1lbnQ6IHN0ZXAtbGFiZWw7XG59XG4iLCJpbXBvcnQgeyBJbnRlcnNlY3Rpb25Db250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9pbnRlcnNlY3Rpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyB0eXBlIENTU1Jlc3VsdEdyb3VwLCBodG1sLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4LCBpc0Fycm93S2V5UHJlc3NlZCB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS50cyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIsXG4gIFNiYk1lZGlhUXVlcnlCcmVha3BvaW50TGFyZ2VBbmRBYm92ZSxcbiAgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRTbWFsbEFuZEFib3ZlLFxuICBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFVsdHJhQW5kQWJvdmUsXG4gIFNiYk1lZGlhUXVlcnlCcmVha3BvaW50WmVyb0FuZEFib3ZlLFxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzL21lZGlhLW1hdGNoZXJzLWNvbnRyb2xsZXIudHMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiSG9yaXpvbnRhbEZyb20sIFNiYk9yaWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUvc3R5bGVzLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiU3RlcEVsZW1lbnQsIFNiYlN0ZXBWYWxpZGF0ZUV2ZW50RGV0YWlscyB9IGZyb20gJy4uL3N0ZXAvc3RlcC5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zdGVwcGVyLnNjc3M/bGl0JmlubGluZSc7XG5cbmNvbnN0IERFQk9VTkNFX1RJTUUgPSAxNTA7XG5cbmNvbnN0IGJyZWFrcG9pbnRNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIHplcm86IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50WmVyb0FuZEFib3ZlLFxuICBzbWFsbDogU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRTbWFsbEFuZEFib3ZlLFxuICBsYXJnZTogU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEFib3ZlLFxuICB1bHRyYTogU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRVbHRyYUFuZEFib3ZlLFxufTtcblxuZXhwb3J0IGNsYXNzIFNiYlN0ZXBDaGFuZ2VFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgLyoqIFRoZSBpbmRleCBvZiB0aGUgbmV3bHkgc2VsZWN0ZWQgc3RlcC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkSW5kZXg6IG51bWJlciB8IG51bGw7XG5cbiAgLyoqIFRoZSBpbmRleCBvZiB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCBzdGVwLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJldmlvdXNJbmRleDogbnVtYmVyIHwgbnVsbDtcblxuICAvKiogVGhlIG5ld2x5IHNlbGVjdGVkIHN0ZXAgZWxlbWVudC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkU3RlcDogU2JiU3RlcEVsZW1lbnQgfCBudWxsO1xuXG4gIC8qKiBUaGUgcHJldmlvdXNseSBzZWxlY3RlZCBzdGVwIGVsZW1lbnQuICovXG4gIHB1YmxpYyByZWFkb25seSBwcmV2aW91c1N0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgc2VsZWN0ZWRJbmRleDogbnVtYmVyIHwgbnVsbCxcbiAgICBwcmV2aW91c0luZGV4OiBudW1iZXIgfCBudWxsLFxuICAgIHNlbGVjdGVkU3RlcDogU2JiU3RlcEVsZW1lbnQgfCBudWxsLFxuICAgIHByZXZpb3VzU3RlcDogU2JiU3RlcEVsZW1lbnQgfCBudWxsLFxuICApIHtcbiAgICBzdXBlcignc3RlcGNoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSk7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleDtcbiAgICB0aGlzLnByZXZpb3VzSW5kZXggPSBwcmV2aW91c0luZGV4O1xuICAgIHRoaXMuc2VsZWN0ZWRTdGVwID0gc2VsZWN0ZWRTdGVwO1xuICAgIHRoaXMucHJldmlvdXNTdGVwID0gcHJldmlvdXNTdGVwO1xuICB9XG59XG4vKipcbiAqIFByb3ZpZGVzIGEgc3RydWN0dXJlZCwgc3RlcC1ieS1zdGVwIHdvcmtmbG93IGZvciB1c2VyIGludGVyYWN0aW9ucy5cbiAqIEBzbG90IC0gUHJvdmlkZSBhIGBzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcmAgYW5kIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtY29udGVudGAgdG8gdGhlIHN0ZXBwZXIuXG4gKiBAc2xvdCBzdGVwLWxhYmVsIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItc3RlcC1sYWJlbGAuXG4gKiBAc2xvdCBzdGVwIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItc3RlcGAuXG4gKiBAZXZlbnQge1NiYlN0ZXBDaGFuZ2VFdmVudH0gc3RlcGNoYW5nZSAtIEVtaXRzIHdoZW5ldmVyIGEgc3RlcCB3YXMgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlN0ZXBwZXJFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItc3RlcHBlcic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHN0eWxlXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgc3RlcGNoYW5nZTogJ3N0ZXBjaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgc2JiLXN0ZXBwZXIgaXMgdXNlZCBpbiBhIHNiYi1kaWFsb2csIHRoZSBtYXJrZXIgb24gdGhlIHNlbGVjdGVkIGVsZW1lbnQgd2lsbCBub3QgYXBwZWFyLFxuICAgKiBiZWNhdXNlIHRoZSBjYWxjdWxhdGlvbnMgYXJlIGRvbmUgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZCwgc28gdGhlIG1hcmtlciBoYXMgYSB3aWR0aCBvZiAwO1xuICAgKiB0aGUgc2FtZSBoYXBwZW5zIGZvciB0aGUgc3RlcHBlciBoZWlnaHQuXG4gICAqIFdlIG5lZWQgdG8gcmVjYWxjdWxhdGUgaXQgd2hlbiB0aGUgZWxlbWVudCBiZWNvbWVzIHZpc2libGUuXG4gICAqL1xuICBwcml2YXRlIF9vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgY2FsbGJhY2s6IChlbnRyaWVzKSA9PiB7XG4gICAgICBlbnRyaWVzLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgaWYgKGUuaW50ZXJzZWN0aW9uUmF0aW8gPiAwKSB7XG4gICAgICAgICAgdGhpcy5fc2V0U3RlcHBlckhlaWdodCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgICB0aGlzLl9zZXRNYXJrZXJTaXplKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgb25seSB0aGUgY3VycmVudCBhbmQgcHJldmlvdXMgbGFiZWxzIGNhbiBiZSBjbGlja2VkIGFuZCBzZWxlY3RlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGxpbmVhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBPdmVycmlkZXMgdGhlIGJlaGF2aW9yIG9mIGBvcmllbnRhdGlvbmAgcHJvcGVydHkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hvcml6b250YWwtZnJvbScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIHNldCBob3Jpem9udGFsRnJvbSh2YWx1ZTogU2JiSG9yaXpvbnRhbEZyb20gfCBudWxsKSB7XG4gICAgdGhpcy5faG9yaXpvbnRhbEZyb20gPSB2YWx1ZSAmJiBicmVha3BvaW50TWFwW3ZhbHVlXSA/IHZhbHVlIDogbnVsbDtcbiAgICBpZiAodGhpcy5faG9yaXpvbnRhbEZyb20gJiYgdGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9jaGVja09yaWVudGF0aW9uKCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgaG9yaXpvbnRhbEZyb20oKTogU2JiSG9yaXpvbnRhbEZyb20gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faG9yaXpvbnRhbEZyb207XG4gIH1cbiAgcHJpdmF0ZSBfaG9yaXpvbnRhbEZyb206IFNiYkhvcml6b250YWxGcm9tIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFN0ZXBzIG9yaWVudGF0aW9uLCBlaXRoZXIgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igb3JpZW50YXRpb246IFNiYk9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzIG9yIG0uXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHN0ZXAuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCBzZWxlY3RlZChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3Qoc3RlcCk7XG4gICAgfVxuICAgIHRoaXMuX3JlcXVlc3RlZFNlbGVjdGVkID0gc3RlcDtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcj8uPFNiYlN0ZXBFbGVtZW50Pignc2JiLXN0ZXA6c3RhdGUoc2VsZWN0ZWQpJykgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF9yZXF1ZXN0ZWRTZWxlY3RlZDogU2JiU3RlcEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBzdGVwIGluZGV4LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZWxlY3RlZC1pbmRleCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkICYmIGluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1tpbmRleF0pO1xuICAgIH1cbiAgICB0aGlzLl9yZXF1ZXN0ZWRTZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZEluZGV4KCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkID8gdGhpcy5zdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQpIDogbnVsbDtcbiAgfVxuICBwcml2YXRlIF9yZXF1ZXN0ZWRTZWxlY3RlZEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIHN0ZXBzIG9mIHRoZSBzdGVwcGVyLiAqL1xuICBwdWJsaWMgZ2V0IHN0ZXBzKCk6IFNiYlN0ZXBFbGVtZW50W10ge1xuICAgIGNvbnN0IHN0ZXBzOiBTYmJTdGVwRWxlbWVudFtdID0gW107XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1zdGVwJykuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZShzdGVwKTtcbiAgICAgIHN0ZXBzLnB1c2goc3RlcCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0ZXBzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2VuYWJsZWRTdGVwcygpOiBTYmJTdGVwRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoKHMpID0+IHtcbiAgICAgIGlmIChzLmxhYmVsKSB7XG4gICAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUocy5sYWJlbCk7XG4gICAgICAgIHJldHVybiAhcy5sYWJlbC5kaXNhYmxlZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlclRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX21lZGlhTWF0Y2hlciA9IG5ldyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyKHRoaXMsIHt9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LigncmVzaXplY2hhbmdlJywgKGU6IEV2ZW50KSA9PiB0aGlzLl9vblNlbGVjdGVkU3RlcFJlc2l6ZShlKSk7XG4gIH1cblxuICAvKiogU2VsZWN0cyB0aGUgbmV4dCBzdGVwLiAqL1xuICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggKyAxXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNlbGVjdHMgdGhlIHByZXZpb3VzIHN0ZXAuICovXG4gIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggLSAxXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlc2V0cyB0aGUgZm9ybSBpbiB3aGljaCB0aGUgc3RlcHBlciBpcyBuZXN0ZWQgb3IgZXZlcnkgZm9ybSBvZiBlYWNoIHN0ZXAsIGlmIGFueS4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNsb3Nlc3RGb3JtID0gdGhpcy5jbG9zZXN0KCdmb3JtJyk7XG4gICAgaWYgKGNsb3Nlc3RGb3JtKSB7XG4gICAgICBjbG9zZXN0Rm9ybS5yZXNldCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2Zvcm0nKS5mb3JFYWNoKChmb3JtKSA9PiBmb3JtLnJlc2V0KCkpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xuICAgIC8vIEluIGNhc2UgdGhlIGZvY3VzIGlzIGN1cnJlbnRseSBpbnNpZGUgdGhlIHN0ZXBwZXIsIHdlIHJlc2V0IHRoZSBmb2N1cyB0byB0aGUgZmlyc3Qvc2VsZWN0ZWQgc3RlcCBsYWJlbC5cbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uY2xvc2VzdCgnc2JiLXN0ZXBwZXInKSA9PT0gdGhpcykge1xuICAgICAgdGhpcy5zZWxlY3RlZD8ubGFiZWw/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNTZWxlY3RhYmxlKHN0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCk6IHN0ZXAgaXMgU2JiU3RlcEVsZW1lbnQge1xuICAgIGlmIChzdGVwKSB7XG4gICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKHN0ZXApO1xuICAgICAgaWYgKHN0ZXAubGFiZWwpIHtcbiAgICAgICAgY3VzdG9tRWxlbWVudHMudXBncmFkZShzdGVwLmxhYmVsKTtcbiAgICAgICAgaWYgKCF0aGlzLmxpbmVhciAmJiBzdGVwLmxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzU2VsZWN0YWJsZShzdGVwKSB8fCBzdGVwID09PSB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgY29uc3QgdmFsaWRhdGVQYXlsb2FkOiBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMgPSB7XG4gICAgICBjdXJyZW50SW5kZXgsXG4gICAgICBjdXJyZW50U3RlcCxcbiAgICAgIG5leHRJbmRleDogdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsID8gdGhpcy5zZWxlY3RlZEluZGV4ICsgMSA6IG51bGwsXG4gICAgICBuZXh0U3RlcDogdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsID8gdGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggKyAxXSA6IG51bGwsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLnNlbGVjdGVkLnZhbGlkYXRlKHZhbGlkYXRlUGF5bG9hZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWxlY3RlZDtcbiAgICBjdXJyZW50Py5kZXNlbGVjdCgpO1xuICAgIHN0ZXAuc2VsZWN0KCk7XG5cbiAgICAvKiogQGludGVybmFsIG9ubHkgdG8gcHJvdmlkZSBkb3VibGUgZW50cnkgaW4gZG9jcy4gSXQgaXMgYSBwdWJsaWMgZXZlbnQhICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IFNiYlN0ZXBDaGFuZ2VFdmVudCh0aGlzLnNlbGVjdGVkSW5kZXgsIGN1cnJlbnRJbmRleCwgdGhpcy5zZWxlY3RlZCwgY3VycmVudFN0ZXApLFxuICAgICk7XG5cbiAgICB0aGlzLl9zZXRNYXJrZXJTaXplKCk7XG4gICAgdGhpcy5fc2V0U3RlcHBlckhlaWdodChzdGVwKTtcbiAgICB0aGlzLl9jb25maWd1cmVMaW5lYXJNb2RlKCk7XG4gICAgLy8gSW4gY2FzZSB0aGUgZm9jdXMgaXMgY3VycmVudGx5IGluc2lkZSB0aGUgc3RlcHBlciwgd2UgZm9jdXMgdGhlIHNlbGVjdGVkIHN0ZXAgbGFiZWwuXG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoJ3NiYi1zdGVwcGVyJykgPT09IHRoaXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQ/LmxhYmVsPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldE1hcmtlclNpemUoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2xvYWRlZCB8fFxuICAgICAgIXRoaXMuc2VsZWN0ZWQgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAhdGhpcy5zZWxlY3RlZC5sYWJlbFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvZmZzZXQgPVxuICAgICAgdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZC5sYWJlbC5vZmZzZXRMZWZ0ICsgdGhpcy5zZWxlY3RlZC5sYWJlbC5vZmZzZXRXaWR0aFxuICAgICAgICA6IHRoaXMuX2NhbGN1bGF0ZUxhYmVsT2Zmc2V0VG9wKCk7XG5cbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1zdGVwcGVyLW1hcmtlci1zaXplJywgYCR7b2Zmc2V0fXB4YCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RlcHBlciBoZWlnaHQgYmFzZWQgb24gdGhlIGhlaWdodCBvZiB0aGUgcHJvdmlkZWQgc3RlcC5cbiAgICovXG4gIHByaXZhdGUgX3NldFN0ZXBwZXJIZWlnaHQoc3RlcDogU2JiU3RlcEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHN0ZXAgJiYgc3RlcC5zaGFkb3dSb290KSB7XG4gICAgICBjb25zdCBpbm5lckVsZW1lbnQ6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCA9IHN0ZXAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcuc2JiLXN0ZXAnKTtcbiAgICAgIGlmIChpbm5lckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXN0ZXBwZXItY29udGVudC1oZWlnaHQnLCBgJHtpbm5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0fXB4YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlTGFiZWxPZmZzZXRUb3AoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiB0aGlzLnN0ZXBzKSB7XG4gICAgICBpZiAoc3RlcCA9PT0gdGhpcy5zZWxlY3RlZCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG9mZnNldCA9IHN0ZXAubGFiZWwhLm9mZnNldEhlaWdodCArIG9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIG9mZnNldCArXG4gICAgICB0aGlzLnNlbGVjdGVkIS5sYWJlbCEub2Zmc2V0SGVpZ2h0ISArXG4gICAgICBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodGhpcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zYmItc3BhY2luZy1maXhlZC02eCcpKSAqXG4gICAgICAgIDE2ICpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0ZWRTdGVwUmVzaXplKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fc2V0U3RlcHBlckhlaWdodChlLnRhcmdldCBhcyBTYmJTdGVwRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpLCBhcnJheSkgPT4ge1xuICAgICAgc3RlcC5jb25maWd1cmUodGhpcy5fbG9hZGVkKTtcbiAgICAgIHN0ZXAubGFiZWw/LmNvbmZpZ3VyZShpICsgMSwgYXJyYXkubGVuZ3RoLCB0aGlzLl9sb2FkZWQpO1xuICAgIH0pO1xuICAgIHRoaXMuX3NlbGVjdCh0aGlzLnNlbGVjdGVkIHx8IHRoaXMuX2VuYWJsZWRTdGVwc1swXSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVMYWJlbHMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICBzdGVwLnNsb3QgPSB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAnc3RlcCcgOiAnc3RlcC1sYWJlbCc7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja09yaWVudGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhvcml6b250YWxGcm9tKSB7XG4gICAgICB0aGlzLm9yaWVudGF0aW9uID0gdGhpcy5fbWVkaWFNYXRjaGVyLm1hdGNoZXMoYnJlYWtwb2ludE1hcFt0aGlzLmhvcml6b250YWxGcm9tXSlcbiAgICAgICAgPyAnaG9yaXpvbnRhbCdcbiAgICAgICAgOiAndmVydGljYWwnO1xuICAgICAgdGhpcy5fdXBkYXRlTGFiZWxzKCk7XG4gICAgfVxuICAgIC8vIFRoZSB0aW1lb3V0IGlzIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbWFya2VyIHRha2VzIHRoZSBjb3JyZWN0IHN0ZXAtbGFiZWwgc2l6ZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3NldE1hcmtlclNpemUoKSwgMCk7XG4gIH1cblxuICBwcml2YXRlIF9vblN0ZXBwZXJSZXNpemUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5fY2hlY2tPcmllbnRhdGlvbigpO1xuICAgIHRoaXMuX3NldFN0ZXBwZXJIZWlnaHQodGhpcy5zZWxlY3RlZCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCEpO1xuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoJ2Rpc2FibGUtYW5pbWF0aW9uJyk7XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBhbmltYXRpb24gd2hlbiByZXNpemluZyB0byBhdm9pZCBzdHJhbmdlIHRyYW5zaXRpb24gZWZmZWN0cy5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnZGlzYWJsZS1hbmltYXRpb24nKSxcbiAgICAgIERFQk9VTkNFX1RJTUUsXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIF9jb25maWd1cmVMaW5lYXJNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgIGlmICghc3RlcC5sYWJlbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKHN0ZXAubGFiZWwpO1xuXG4gICAgICBzdGVwLmxhYmVsLmRpc2FibGUoXG4gICAgICAgICh0aGlzLmxpbmVhciAmJiBpbmRleCA+IHRoaXMuc2VsZWN0ZWRJbmRleCEpIHx8XG4gICAgICAgICAgKCF0aGlzLmxpbmVhciAmJiBzdGVwLmxhYmVsLm1hdGNoZXMoJzpzdGF0ZSh1c2VyLWRpc2FibGVkKScpKSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fb25TdGVwcGVyUmVzaXplLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2Rpc2FibGUtYW5pbWF0aW9uJywgIXRoaXMuX2xvYWRlZCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fb25TdGVwcGVyUmVzaXplKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZSgpO1xuXG4gICAgICBpZiAodGhpcy5fcmVxdWVzdGVkU2VsZWN0ZWQgJiYgdGhpcy5zdGVwcy5pbmRleE9mKHRoaXMuX3JlcXVlc3RlZFNlbGVjdGVkKSAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5zdGVwcy5pbmRleE9mKHRoaXMuX3JlcXVlc3RlZFNlbGVjdGVkKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fcmVxdWVzdGVkU2VsZWN0ZWRJbmRleCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLl9yZXF1ZXN0ZWRTZWxlY3RlZEluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzKTtcbiAgICAgIHRoaXMuX2NoZWNrT3JpZW50YXRpb24oKTtcbiAgICAgIC8vIFJlbW92ZSBkaXNhYmxlLWFuaW1hdGlvbiBzdGF0ZSBhZnRlciBjb21wb25lbnQgaW5pdFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKCdkaXNhYmxlLWFuaW1hdGlvbicpLCBERUJPVU5DRV9USU1FKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ29yaWVudGF0aW9uJykgJiYgIXRoaXMuaG9yaXpvbnRhbEZyb20pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUxhYmVscygpO1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaW5lYXInKSAmJiB0aGlzLl9sb2FkZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuX3NldE1hcmtlclNpemUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRTdGVwczogU2JiU3RlcEVsZW1lbnRbXSA9IHRoaXMuX2VuYWJsZWRTdGVwcztcblxuICAgIGlmIChcbiAgICAgICFlbmFibGVkU3RlcHMgfHxcbiAgICAgIC8vIGRvbid0IHRyYXAgbmVzdGVkIGhhbmRsaW5nXG4gICAgICAoKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpICE9PSB0aGlzICYmIChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50ICE9PSB0aGlzKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0Fycm93S2V5UHJlc3NlZChldnQpKSB7XG4gICAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBlbmFibGVkU3RlcHMuaW5kZXhPZih0aGlzLnNlbGVjdGVkISk7XG4gICAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkU3RlcHMubGVuZ3RoKTtcbiAgICAgIHRoaXMuX3NlbGVjdChlbmFibGVkU3RlcHNbbmV4dEluZGV4XSk7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RlcHBlcl9fbGFiZWxzXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInN0ZXAtbGFiZWxcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX2NvbmZpZ3VyZX0+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXN0ZXBwZXJfX3N0ZXBzXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzdGVwXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9jb25maWd1cmV9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zdGVwcGVyJzogU2JiU3RlcHBlckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNxQkEsSUFBTSxnQkFBZ0I7QUFFdEIsSUFBTSxnQkFBd0M7Q0FDNUMsTUFBTTtDQUNOLE9BQU87Q0FDUCxPQUFPO0NBQ1AsT0FBTztDQUNSO0FBRUQsSUFBYSxxQkFBYixjQUF3QyxNQUFLO0NBYTNDLFlBQ0UsZUFDQSxlQUNBLGNBQ0EsY0FBbUM7QUFFbkMsUUFBTSxjQUFjO0dBQUUsU0FBUztHQUFNLFVBQVU7R0FBTSxDQUFDO0FBQ3RELE9BQUssZ0JBQWdCO0FBQ3JCLE9BQUssZ0JBQWdCO0FBQ3JCLE9BQUssZUFBZTtBQUNwQixPQUFLLGVBQWU7Ozs7Ozs7Ozs7SUFVWCwyQkFBaUI7bUJBQVM7Ozs7Ozs7Ozs7Ozs7O2NBQTFCLDBCQUEwQixZQUFVOzs7eUJBMEI5QyxXQUFXLEVBQ1gsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDLENBQUE7cUNBSTNCLFNBQVM7SUFBRSxXQUFXO0lBQW1CLFNBQVM7SUFBTSxDQUFDLENBQUE7OEJBYXpELFNBQVMsRUFBRSxTQUFTLE1BQU0sQ0FBQyxDQUFBO3VCQU8zQixTQUFTLEVBQUUsU0FBUyxNQUFNLENBQUMsQ0FBQTsrQkFHM0IsU0FBUyxFQUFFLFdBQVcsT0FBTyxDQUFDLENBQUE7b0NBYTlCLFNBQVM7SUFBRSxXQUFXO0lBQWtCLE1BQU07SUFBUSxDQUFDLENBQUE7QUF2Q3hELGdCQUFBLE1BQUEsTUFBQSxvQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFlBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBTSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQU4s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
|
package/development/stepper.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as SbbStepLabelElement } from "./step-label.component-
|
|
2
|
-
import { t as SbbStepElement } from "./step.component-
|
|
3
|
-
import { n as SbbStepperElement, t as SbbStepChangeEvent } from "./stepper.component-
|
|
1
|
+
import { t as SbbStepLabelElement } from "./step-label.component-D3wrRPQ7.js";
|
|
2
|
+
import { t as SbbStepElement } from "./step.component-ewujsOVD.js";
|
|
3
|
+
import { n as SbbStepperElement, t as SbbStepChangeEvent } from "./stepper.component-BJC_4cep.js";
|
|
4
4
|
import "./stepper.pure.js";
|
|
5
5
|
//#region src/elements/stepper.ts
|
|
6
6
|
/** @entrypoint */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as SbbStepLabelElement } from "./step-label.component-
|
|
2
|
-
import { t as SbbStepElement } from "./step.component-
|
|
3
|
-
import { n as SbbStepperElement, t as SbbStepChangeEvent } from "./stepper.component-
|
|
1
|
+
import { t as SbbStepLabelElement } from "./step-label.component-D3wrRPQ7.js";
|
|
2
|
+
import { t as SbbStepElement } from "./step.component-ewujsOVD.js";
|
|
3
|
+
import { n as SbbStepperElement, t as SbbStepChangeEvent } from "./stepper.component-BJC_4cep.js";
|
|
4
4
|
export { SbbStepChangeEvent, SbbStepElement, SbbStepLabelElement, SbbStepperElement };
|
package/off-brand-theme.css
CHANGED
|
@@ -1788,6 +1788,26 @@ slot[name=error]::slotted(*) {
|
|
|
1788
1788
|
--sbb-status-font-size: var(--sbb-text-font-size-s);
|
|
1789
1789
|
--sbb-status-title-color: var(--sbb-color-granite);
|
|
1790
1790
|
--sbb-status-title-color: light-dark(var(--sbb-color-granite), var(--sbb-color-smoke));
|
|
1791
|
+
--sbb-step-label-color: var(--sbb-color-4);
|
|
1792
|
+
--sbb-step-label-font-size: var(--sbb-text-font-size-l);
|
|
1793
|
+
--sbb-step-label-prefix-size: var(--sbb-size-element-xxs);
|
|
1794
|
+
--sbb-step-label-prefix-border-style: solid;
|
|
1795
|
+
--sbb-step-label-prefix-border-color: var(--sbb-border-color-4-inverted);
|
|
1796
|
+
--sbb-step-label-prefix-background-color: var(--sbb-background-color-1);
|
|
1797
|
+
--sbb-step-label-gap: var(--sbb-spacing-fixed-4x);
|
|
1798
|
+
--sbb-step-label-inset-block-start-size-m: calc(
|
|
1799
|
+
var(--sbb-text-font-size-l) * (var(--sbb-typo-line-height-text) / 2) +
|
|
1800
|
+
(var(--sbb-border-width-1x) / 2)
|
|
1801
|
+
);
|
|
1802
|
+
--sbb-step-label-inset-block-start-size-s: calc(
|
|
1803
|
+
var(--sbb-text-font-size-m) * (var(--sbb-typo-line-height-text) / 2) +
|
|
1804
|
+
(var(--sbb-border-width-1x) / 2)
|
|
1805
|
+
);
|
|
1806
|
+
--sbb-step-label-inset-block-start: var(--sbb-step-label-inset-block-start-size-m);
|
|
1807
|
+
--sbb-stepper-orientation: row;
|
|
1808
|
+
--sbb-stepper-border-width: var(--sbb-border-width-1x);
|
|
1809
|
+
--sbb-stepper-marker-width: var(--sbb-border-width-3x);
|
|
1810
|
+
--sbb-stepper-marker-color: var(--sbb-color-3);
|
|
1791
1811
|
--sbb-tab-group-content-gap-size-s: var(--sbb-spacing-responsive-xs);
|
|
1792
1812
|
--sbb-tab-group-content-gap-size-l: var(--sbb-spacing-responsive-s);
|
|
1793
1813
|
--sbb-tab-group-content-gap-size-xl: var(--sbb-spacing-responsive-m);
|
|
@@ -1862,6 +1882,8 @@ slot[name=error]::slotted(*) {
|
|
|
1862
1882
|
--sbb-signet-icon-color: Canvas !important;
|
|
1863
1883
|
--sbb-slider-selected-line-color: Highlight;
|
|
1864
1884
|
--sbb-slider-line-color: CanvasText;
|
|
1885
|
+
--sbb-step-label-color: ButtonText;
|
|
1886
|
+
--sbb-step-label-prefix-border-color: ButtonText;
|
|
1865
1887
|
}
|
|
1866
1888
|
}
|
|
1867
1889
|
:root {
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sbb-esta/lyne-elements-dev",
|
|
3
|
-
"version": "4.9.0-dev.
|
|
3
|
+
"version": "4.9.0-dev.1775049532",
|
|
4
4
|
"description": "Lyne Design System",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design system",
|
|
7
7
|
"web components",
|
|
8
8
|
"lit",
|
|
9
|
-
"https://github.com/sbb-design-systems/lyne-components/commit/
|
|
9
|
+
"https://github.com/sbb-design-systems/lyne-components/commit/94e3bd05120aa6041503bf5f5a2a2328913af5a9"
|
|
10
10
|
],
|
|
11
11
|
"type": "module",
|
|
12
12
|
"exports": {
|
package/safety-theme.css
CHANGED
|
@@ -1788,6 +1788,26 @@ slot[name=error]::slotted(*) {
|
|
|
1788
1788
|
--sbb-status-font-size: var(--sbb-text-font-size-s);
|
|
1789
1789
|
--sbb-status-title-color: var(--sbb-color-granite);
|
|
1790
1790
|
--sbb-status-title-color: light-dark(var(--sbb-color-granite), var(--sbb-color-smoke));
|
|
1791
|
+
--sbb-step-label-color: var(--sbb-color-4);
|
|
1792
|
+
--sbb-step-label-font-size: var(--sbb-text-font-size-l);
|
|
1793
|
+
--sbb-step-label-prefix-size: var(--sbb-size-element-xxs);
|
|
1794
|
+
--sbb-step-label-prefix-border-style: solid;
|
|
1795
|
+
--sbb-step-label-prefix-border-color: var(--sbb-border-color-4-inverted);
|
|
1796
|
+
--sbb-step-label-prefix-background-color: var(--sbb-background-color-1);
|
|
1797
|
+
--sbb-step-label-gap: var(--sbb-spacing-fixed-4x);
|
|
1798
|
+
--sbb-step-label-inset-block-start-size-m: calc(
|
|
1799
|
+
var(--sbb-text-font-size-l) * (var(--sbb-typo-line-height-text) / 2) +
|
|
1800
|
+
(var(--sbb-border-width-1x) / 2)
|
|
1801
|
+
);
|
|
1802
|
+
--sbb-step-label-inset-block-start-size-s: calc(
|
|
1803
|
+
var(--sbb-text-font-size-m) * (var(--sbb-typo-line-height-text) / 2) +
|
|
1804
|
+
(var(--sbb-border-width-1x) / 2)
|
|
1805
|
+
);
|
|
1806
|
+
--sbb-step-label-inset-block-start: var(--sbb-step-label-inset-block-start-size-m);
|
|
1807
|
+
--sbb-stepper-orientation: row;
|
|
1808
|
+
--sbb-stepper-border-width: var(--sbb-border-width-1x);
|
|
1809
|
+
--sbb-stepper-marker-width: var(--sbb-border-width-3x);
|
|
1810
|
+
--sbb-stepper-marker-color: var(--sbb-color-3);
|
|
1791
1811
|
--sbb-tab-group-content-gap-size-s: var(--sbb-spacing-responsive-xs);
|
|
1792
1812
|
--sbb-tab-group-content-gap-size-l: var(--sbb-spacing-responsive-s);
|
|
1793
1813
|
--sbb-tab-group-content-gap-size-xl: var(--sbb-spacing-responsive-m);
|
|
@@ -1862,6 +1882,8 @@ slot[name=error]::slotted(*) {
|
|
|
1862
1882
|
--sbb-signet-icon-color: Canvas !important;
|
|
1863
1883
|
--sbb-slider-selected-line-color: Highlight;
|
|
1864
1884
|
--sbb-slider-line-color: CanvasText;
|
|
1885
|
+
--sbb-step-label-color: ButtonText;
|
|
1886
|
+
--sbb-step-label-prefix-border-color: ButtonText;
|
|
1865
1887
|
}
|
|
1866
1888
|
}
|
|
1867
1889
|
:root {
|