@siemens/element-ng 49.5.0 → 49.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/fesm2022/siemens-element-ng-about.mjs +2 -2
  2. package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-application-header.mjs +5 -5
  4. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-avatar.mjs +2 -2
  6. package/fesm2022/siemens-element-ng-avatar.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-breadcrumb.mjs +2 -2
  8. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-circle-status.mjs +2 -2
  10. package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-color-picker.mjs +2 -2
  12. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-dashboard.mjs +28 -10
  14. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-date-range-filter.mjs +16 -4
  16. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-datepicker.mjs +13 -9
  18. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-electron-titlebar.mjs +2 -2
  20. package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-filter-bar.mjs +4 -4
  22. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-header-dropdown.mjs +3 -3
  24. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-loading-spinner.mjs +19 -11
  26. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -1
  27. package/fesm2022/siemens-element-ng-modal.mjs +25 -26
  28. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -1
  29. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +324 -354
  30. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  31. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +4 -4
  32. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  33. package/fesm2022/siemens-element-ng-pagination.mjs +5 -2
  34. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
  35. package/fesm2022/siemens-element-ng-pills-input.mjs +2 -2
  36. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  37. package/fesm2022/siemens-element-ng-side-panel.mjs +8 -5
  38. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  39. package/fesm2022/siemens-element-ng-status-bar.mjs +26 -11
  40. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  41. package/fesm2022/siemens-element-ng-tabs-legacy.mjs +2 -2
  42. package/fesm2022/siemens-element-ng-tabs-legacy.mjs.map +1 -1
  43. package/fesm2022/siemens-element-ng-tabs.mjs +10 -10
  44. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  45. package/fesm2022/siemens-element-ng-toast-notification.mjs +48 -57
  46. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  47. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  48. package/fesm2022/siemens-element-ng-wizard.mjs +88 -53
  49. package/fesm2022/siemens-element-ng-wizard.mjs.map +1 -1
  50. package/package.json +4 -4
  51. package/schematics/migrations/data/class-member-replacement.js +5 -0
  52. package/schematics/migrations/data/migration-test-data.js +5 -0
  53. package/schematics/migrations/utilities/class-member-replacement.migration.js +29 -1
  54. package/template-i18n.json +1 -0
  55. package/types/siemens-element-ng-dashboard.d.ts +4 -1
  56. package/types/siemens-element-ng-date-range-filter.d.ts +10 -1
  57. package/types/siemens-element-ng-loading-spinner.d.ts +4 -2
  58. package/types/siemens-element-ng-navbar-vertical-next.d.ts +163 -171
  59. package/types/siemens-element-ng-side-panel.d.ts +2 -0
  60. package/types/siemens-element-ng-status-bar.d.ts +8 -5
  61. package/types/siemens-element-ng-toast-notification.d.ts +4 -8
  62. package/types/siemens-element-ng-translate.d.ts +1 -0
  63. package/types/siemens-element-ng-wizard.d.ts +23 -5
@@ -1,12 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, output, signal, ChangeDetectionStrategy, Component, viewChild, contentChildren, linkedSignal, computed, untracked, NgModule } from '@angular/core';
2
+ import { input, booleanAttribute, output, signal, ChangeDetectionStrategy, Component, inject, viewChild, contentChildren, linkedSignal, computed, untracked, NgModule } from '@angular/core';
3
3
  import { __decorate } from 'tslib';
4
4
  import { NgTemplateOutlet } from '@angular/common';
5
+ import { toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
6
  import { elementWarningFilled, elementRadioChecked, elementRight4, elementNotChecked, elementLeft4, elementCheckedFilled, elementChecked, elementCancel } from '@siemens/element-icons';
6
- import { WebComponentContentChildren } from '@siemens/element-ng/common';
7
+ import { TextMeasureService, WebComponentContentChildren } from '@siemens/element-ng/common';
7
8
  import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
8
9
  import { SiResizeObserverDirective } from '@siemens/element-ng/resize-observer';
9
- import { t, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
10
+ import { injectSiTranslateService, t, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
11
+ import { switchMap } from 'rxjs';
10
12
 
11
13
  /**
12
14
  * Copyright (c) Siemens 2016 - 2026
@@ -38,6 +40,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
38
40
  }], propDecorators: { heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: false }] }], isValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isValid", required: false }] }], isNextNavigable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isNextNavigable", required: false }] }], failed: [{ type: i0.Input, args: [{ isSignal: true, alias: "failed", required: false }] }], next: [{ type: i0.Output, args: ["next"] }], back: [{ type: i0.Output, args: ["back"] }], save: [{ type: i0.Output, args: ["save"] }] } });
39
41
 
40
42
  class SiWizardComponent {
43
+ /** em-based multipliers relative to the step title font-size. */
44
+ static minStepWidthEm = 6;
45
+ static maxStepWidthEm = 14;
46
+ static defaultStepWidthEm = 11;
47
+ static fallbackFontSize = 14;
48
+ /** Fixed horizontal padding of the step title (px-6 = 2 × 16px). */
49
+ static stepPadding = 32;
50
+ translateService = injectSiTranslateService();
51
+ textMeasureService = inject(TextMeasureService);
41
52
  containerSteps = viewChild('containerSteps', ...(ngDevMode ? [{ debugName: "containerSteps" }] : []));
42
53
  /**
43
54
  * Description of back button.
@@ -187,6 +198,8 @@ class SiWizardComponent {
187
198
  showCompletionPage = signal(false, ...(ngDevMode ? [{ debugName: "showCompletionPage" }] : []));
188
199
  /** The list of visible steps. */
189
200
  activeSteps = computed(() => this.computeVisibleSteps(), ...(ngDevMode ? [{ debugName: "activeSteps" }] : []));
201
+ headingKeys = computed(() => this.steps().map(s => s.heading()), ...(ngDevMode ? [{ debugName: "headingKeys" }] : []));
202
+ maxStepWidth = signal(SiWizardComponent.defaultStepWidthEm * SiWizardComponent.fallbackFontSize, ...(ngDevMode ? [{ debugName: "maxStepWidth" }] : []));
190
203
  _index = linkedSignal(() => {
191
204
  const currentStep = this._currentStep();
192
205
  const currentStepIndex = currentStep ? this.steps().indexOf(currentStep) : 0;
@@ -216,30 +229,48 @@ class SiWizardComponent {
216
229
  elementRadioChecked,
217
230
  elementWarningFilled
218
231
  });
219
- canActivate(stepIndex) {
220
- if (stepIndex < 0) {
221
- return false;
222
- }
223
- // Can always activate previous steps
224
- if (stepIndex < this.index) {
225
- return true;
226
- }
227
- // We are already in the step. Nothing to activate.
228
- if (stepIndex === this.index) {
229
- return false;
230
- }
231
- // Fast-forward: check all steps if they are valid
232
- for (let i = this.index; i < stepIndex; i++) {
233
- const theStep = this.steps()[i];
234
- if (!theStep.isValid()) {
235
- return false;
232
+ stepsMetadata = computed(() => {
233
+ const index = this._index();
234
+ const steps = this.steps();
235
+ // O(N) pre-calculation: find the first invalid step from the current index
236
+ let firstInvalidIndex = steps.length;
237
+ for (let i = index; i < steps.length; i++) {
238
+ if (!steps[i].isValid()) {
239
+ firstInvalidIndex = i;
240
+ break;
236
241
  }
237
242
  }
238
- return true;
243
+ return steps.map((step, stepIndex) => {
244
+ // canActivate: O(1) per step using pre-calculated firstInvalidIndex
245
+ let canActivate;
246
+ if (stepIndex < index) {
247
+ canActivate = true;
248
+ }
249
+ else if (stepIndex === index) {
250
+ canActivate = false;
251
+ }
252
+ else {
253
+ canActivate = firstInvalidIndex >= stepIndex;
254
+ }
255
+ // stateClass
256
+ const stateClass = this.getStateClass(stepIndex, canActivate);
257
+ // ariaDisabled
258
+ const ariaDisabled = !canActivate ? 'true' : 'false';
259
+ // ariaCurrent
260
+ const ariaCurrent = stepIndex === index ? 'step' : 'false';
261
+ // icon
262
+ const icon = this.getState(step, stepIndex);
263
+ return { canActivate, stateClass, ariaDisabled, ariaCurrent, icon };
264
+ });
265
+ }, ...(ngDevMode ? [{ debugName: "stepsMetadata" }] : []));
266
+ constructor() {
267
+ toObservable(this.headingKeys)
268
+ .pipe(switchMap(keys => this.translateService.translateAsync(keys)), takeUntilDestroyed())
269
+ .subscribe(translations => this.maxStepWidth.set(this.measureMaxTextWidth(Object.values(translations))));
239
270
  }
240
271
  activateStep(event, stepIndex) {
241
272
  event.preventDefault();
242
- if (this.canActivate(stepIndex)) {
273
+ if (this.stepsMetadata()[stepIndex].canActivate) {
243
274
  if (stepIndex > this.index) {
244
275
  this.next(stepIndex - this.index);
245
276
  }
@@ -248,11 +279,11 @@ class SiWizardComponent {
248
279
  }
249
280
  }
250
281
  }
251
- getStateClass(stepIndex) {
282
+ getStateClass(stepIndex, canActivate) {
252
283
  if (stepIndex === this.index) {
253
284
  return 'active';
254
285
  }
255
- if (!this.canActivate(stepIndex)) {
286
+ if (!canActivate) {
256
287
  return 'disabled';
257
288
  }
258
289
  if (stepIndex < this.index) {
@@ -260,36 +291,28 @@ class SiWizardComponent {
260
291
  }
261
292
  return '';
262
293
  }
263
- getAriaDisabled(stepIndex) {
264
- if (!this.canActivate(stepIndex)) {
265
- return 'true';
266
- }
267
- return 'false';
268
- }
269
- getAriaCurrent(stepIndex) {
270
- if (stepIndex === this.index) {
271
- return 'step';
272
- }
273
- return 'false';
274
- }
275
294
  /**
276
295
  * Go to the next wizard step.
277
296
  * @param delta - optional number of steps to move forward.
278
297
  */
279
298
  next(delta = 1) {
280
299
  const steps = this.steps();
281
- if (this.index === steps.length - 1) {
282
- return;
283
- }
284
300
  const stepIndex = this.index + delta;
285
- const nextStep = steps[stepIndex];
286
- if (this.canActivate(stepIndex)) {
301
+ if (stepIndex < steps.length && this.stepsMetadata()[stepIndex].canActivate) {
302
+ const nextStep = steps[stepIndex];
287
303
  this.currentStep?.next.emit();
288
304
  if (this.currentStep?.isNextNavigable()) {
289
305
  this.activate(nextStep);
290
306
  }
291
307
  }
292
308
  }
309
+ getState(step, stepIndex) {
310
+ if (step.failed() === true) {
311
+ return this.stepFailedIcon();
312
+ }
313
+ const txtStyle = step.isActive() ? this.stepActiveIcon() : this.stepIcon();
314
+ return stepIndex >= this.index ? txtStyle : this.stepCompletedIcon();
315
+ }
293
316
  /**
294
317
  * Go to the previous wizard step.
295
318
  * @param delta - optional number of steps to move backwards.
@@ -315,13 +338,6 @@ class SiWizardComponent {
315
338
  this.completionAction.emit();
316
339
  }
317
340
  }
318
- getState(step, stepIndex) {
319
- if (step.failed() === true) {
320
- return this.stepFailedIcon();
321
- }
322
- const txtStyle = step.isActive() ? this.stepActiveIcon() : this.stepIcon();
323
- return stepIndex >= this.index ? txtStyle : this.stepCompletedIcon();
324
- }
325
341
  activate(step) {
326
342
  if (this.currentStep) {
327
343
  this.currentStep.isActive.set(false);
@@ -330,6 +346,23 @@ class SiWizardComponent {
330
346
  this._currentStep.set(step);
331
347
  this._index.set(this.steps().indexOf(step));
332
348
  }
349
+ measureMaxTextWidth(texts) {
350
+ const titleEl = this.containerSteps()?.nativeElement.querySelector('.title') ?? undefined;
351
+ const fontSize = titleEl
352
+ ? parseFloat(getComputedStyle(titleEl).fontSize)
353
+ : SiWizardComponent.fallbackFontSize;
354
+ const defaultWidth = SiWizardComponent.defaultStepWidthEm * fontSize;
355
+ if (texts.length === 0) {
356
+ return defaultWidth;
357
+ }
358
+ const minWidth = SiWizardComponent.minStepWidthEm * fontSize;
359
+ const maxWidth = SiWizardComponent.maxStepWidthEm * fontSize;
360
+ // Only take texts into account which aren't much shorter than the longest text.
361
+ const maxCharLength = Math.max(...texts.map(text => text.length));
362
+ const candidates = texts.filter(text => text.length >= maxCharLength * 0.8);
363
+ const maxTextWidth = Math.max(...candidates.map(text => this.textMeasureService.measureText(text, titleEl)));
364
+ return Math.min(Math.max(maxTextWidth + SiWizardComponent.stepPadding, minWidth), maxWidth);
365
+ }
333
366
  updateVisibleSteps() {
334
367
  const newVisibleSteps = this.calculateVisibleStepCount();
335
368
  if (newVisibleSteps !== this.visibleSteps()) {
@@ -346,11 +379,13 @@ class SiWizardComponent {
346
379
  const clientHeight = containerSteps.nativeElement.clientHeight -
347
380
  parseInt(computedStyle.paddingBlockStart) -
348
381
  parseInt(computedStyle.paddingBlockEnd);
349
- return Math.max(Math.floor(clientHeight / 48), 1);
382
+ const stepEl = containerSteps.nativeElement.querySelector('.step');
383
+ const stepHeight = stepEl?.getBoundingClientRect().height ?? 48;
384
+ return Math.max(Math.floor(clientHeight / stepHeight), 1);
350
385
  }
351
386
  else {
352
387
  const clientWidth = containerSteps.nativeElement.clientWidth;
353
- return Math.max(Math.floor(clientWidth / 150), 1);
388
+ return Math.max(Math.floor(clientWidth / this.maxStepWidth()), 1);
354
389
  }
355
390
  }
356
391
  computeVisibleSteps() {
@@ -381,7 +416,7 @@ class SiWizardComponent {
381
416
  }
382
417
  }
383
418
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiWizardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
384
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiWizardComponent, isStandalone: true, selector: "si-wizard", inputs: { backText: { classPropertyName: "backText", publicName: "backText", isSignal: true, isRequired: false, transformFunction: null }, nextText: { classPropertyName: "nextText", publicName: "nextText", isSignal: true, isRequired: false, transformFunction: null }, hideNavigation: { classPropertyName: "hideNavigation", publicName: "hideNavigation", isSignal: true, isRequired: false, transformFunction: null }, saveText: { classPropertyName: "saveText", publicName: "saveText", isSignal: true, isRequired: false, transformFunction: null }, hideSave: { classPropertyName: "hideSave", publicName: "hideSave", isSignal: true, isRequired: false, transformFunction: null }, completionText: { classPropertyName: "completionText", publicName: "completionText", isSignal: true, isRequired: false, transformFunction: null }, cancelText: { classPropertyName: "cancelText", publicName: "cancelText", isSignal: true, isRequired: false, transformFunction: null }, hasCancel: { classPropertyName: "hasCancel", publicName: "hasCancel", isSignal: true, isRequired: false, transformFunction: null }, enableCompletionPage: { classPropertyName: "enableCompletionPage", publicName: "enableCompletionPage", isSignal: true, isRequired: false, transformFunction: null }, completionPageVisibleTime: { classPropertyName: "completionPageVisibleTime", publicName: "completionPageVisibleTime", isSignal: true, isRequired: false, transformFunction: null }, stepIcon: { classPropertyName: "stepIcon", publicName: "stepIcon", isSignal: true, isRequired: false, transformFunction: null }, stepActiveIcon: { classPropertyName: "stepActiveIcon", publicName: "stepActiveIcon", isSignal: true, isRequired: false, transformFunction: null }, stepCompletedIcon: { classPropertyName: "stepCompletedIcon", publicName: "stepCompletedIcon", isSignal: true, isRequired: false, transformFunction: null }, stepFailedIcon: { classPropertyName: "stepFailedIcon", publicName: "stepFailedIcon", isSignal: true, isRequired: false, transformFunction: null }, verticalLayout: { classPropertyName: "verticalLayout", publicName: "verticalLayout", isSignal: true, isRequired: false, transformFunction: null }, inlineNavigation: { classPropertyName: "inlineNavigation", publicName: "inlineNavigation", isSignal: true, isRequired: false, transformFunction: null }, showStepNumbers: { classPropertyName: "showStepNumbers", publicName: "showStepNumbers", isSignal: true, isRequired: false, transformFunction: null }, showVerticalDivider: { classPropertyName: "showVerticalDivider", publicName: "showVerticalDivider", isSignal: true, isRequired: false, transformFunction: null }, verticalMinSize: { classPropertyName: "verticalMinSize", publicName: "verticalMinSize", isSignal: true, isRequired: false, transformFunction: null }, verticalMaxSize: { classPropertyName: "verticalMaxSize", publicName: "verticalMaxSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { completionAction: "completionAction", wizardCancel: "wizardCancel" }, host: { properties: { "class.vertical": "verticalLayout()", "style.--wizard-vertical-min-size": "verticalMinSize()", "style.--wizard-vertical-max-size": "verticalMaxSize()" }, classAttribute: "py-6 px-8 d-flex flex-column" }, queries: [{ propertyName: "steps", predicate: SiWizardStepComponent, isSignal: true }], viewQueries: [{ propertyName: "containerSteps", first: true, predicate: ["containerSteps"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (!showCompletionPage()) {\n @if (!verticalLayout()) {\n <div class=\"container-wizard\" [class.justify-content-center]=\"!inlineNavigation()\">\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"cancelBtnHorizontal\" />\n <ng-container *ngTemplateOutlet=\"backBtnHorizontal\" />\n }\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"nextBtnHorizontal\" />\n }\n </div>\n\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"saveBtn\" />\n } @else {\n <ng-container *ngTemplateOutlet=\"footer\" />\n }\n } @else {\n @if (showVerticalDivider()) {\n <div class=\"container-wizard vertical\">\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n <div class=\"vertical-divider\"></div>\n <div class=\"d-flex flex-column w-100\">\n <div class=\"steps-content\">\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n </div>\n <ng-container *ngTemplateOutlet=\"footer\" />\n </div>\n </div>\n } @else {\n <div class=\"container-wizard vertical\">\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n <div class=\"steps-content\">\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"footer\" />\n }\n }\n} @else {\n <div class=\"text-center\">\n <si-icon class=\"completion-icon-size text-success\" [icon]=\"icons.elementChecked\" />\n <p class=\"si-h4\"> {{ completionText() | translate }}</p>\n </div>\n}\n\n<ng-template #stepsTemplate>\n <div\n #containerSteps\n class=\"container-steps\"\n [class.vertical]=\"verticalLayout()\"\n [class.mx-4]=\"inlineNavigation()\"\n [class.mt-4]=\"!verticalLayout() && inlineNavigation()\"\n (siResizeObserver)=\"updateVisibleSteps()\"\n >\n @for (item of activeSteps(); track item.index) {\n <div class=\"step\">\n <div\n [class]=\"['line', 'previous', getStateClass(item.index)]\"\n [class.dashed]=\"$first && item.index > 0\"\n [class.vertical]=\"verticalLayout()\"\n [class.spacer]=\"$first && item.index === 0\"\n ></div>\n <a\n [class]=\"['focus-none', getStateClass(item.index)]\"\n [attr.aria-current]=\"getAriaCurrent(item.index)\"\n [attr.href]=\"!canActivate(item.index) || !currentStep?.isNextNavigable() ? null : '#'\"\n (click)=\"activateStep($event, item.index)\"\n >\n @if (showStepNumbers() && !item.step.failed()) {\n <div\n class=\"step-icon number-step d-flex justify-content-center align-items-center px-1\"\n >\n <div class=\"circle\" [class.status-warning]=\"item.step.failed()\">\n <span class=\"si-h5 px-2\" [class.completed-color]=\"item.index < index\">\n {{ item.index + 1 }}\n </span>\n </div>\n </div>\n } @else {\n <si-icon\n class=\"icon-lg step-icon\"\n [class.status-warning]=\"item.step.failed()\"\n [icon]=\"getState(item.step!, item.index)\"\n />\n }\n <div\n class=\"title si-h5\"\n [class.text-center]=\"!verticalLayout()\"\n [class.px-6]=\"!verticalLayout()\"\n [attr.aria-disabled]=\"getAriaDisabled(item.index)\"\n >{{ item.step.heading() | translate }}</div\n >\n </a>\n @if (item.index + 1 < stepCount) {\n <div\n [class]=\"['line', getStateClass(item.index + 1)]\"\n [class.vertical]=\"verticalLayout()\"\n [class.dashed]=\"$last\"\n ></div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #stepContent>\n <div [class.flex-grow-1]=\"!verticalLayout()\" [class.h-100]=\"verticalLayout()\">\n <ng-content />\n </div>\n</ng-template>\n\n<ng-template #cancelBtnHorizontal>\n @if (hasCancel()) {\n <div class=\"me-7\">\n <div class=\"wizard-btn-container\" (click)=\"wizardCancel.emit()\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-secondary mt-2 mb-4\"\n [attr.aria-label]=\"cancelText() | translate\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"si-h5 text-primary\">{{ cancelText() | translate }}</div>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #footer>\n <div class=\"wizard-footer pt-6\">\n <div class=\"wizard-footer-inner\" [class.ms-6]=\"showVerticalDivider()\">\n @if (hasCancel()) {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n [attr.aria-label]=\"cancelText() | translate\"\n (click)=\"wizardCancel.emit()\"\n >\n {{ cancelText() | translate }}\n </button>\n }\n @if (!hideNavigation()) {\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n [class.d-none]=\"index === 0\"\n [class.end]=\"index !== 0\"\n [attr.aria-label]=\"backText() | translate\"\n (click)=\"back(1)\"\n >\n {{ backText() | translate }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [attr.aria-label]=\"nextText() | translate\"\n [disabled]=\"!currentStep?.isValid()\"\n [class.d-none]=\"index === steps().length - 1\"\n [class.end]=\"index === 0\"\n (click)=\"next(1)\"\n >\n {{ nextText() | translate }}\n </button>\n }\n\n @if (!hideSave()) {\n @if (index === steps().length - 1) {\n <button\n type=\"button\"\n class=\"btn btn-primary save\"\n [class.end]=\"hideNavigation()\"\n [disabled]=\"!currentStep?.isValid() || !currentStep?.isNextNavigable()\"\n (click)=\"save()\"\n >{{ saveText() | translate }}</button\n >\n }\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #backBtnHorizontal>\n <div class=\"wizard-btn-container\">\n @if (!hideNavigation()) {\n <div class=\"back\" [class.invisible]=\"index === 0\" (click)=\"back(1)\">\n <button\n type=\"button\"\n class=\"btn btn-secondary btn-circle mb-2\"\n [attr.aria-label]=\"backText() | translate\"\n >\n <si-icon class=\"flip-rtl\" [icon]=\"icons.elementLeft4\" />\n </button>\n <div class=\"si-h5 text-primary\">{{ backText() | translate }}</div>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #nextBtnHorizontal>\n <div class=\"wizard-btn-container\" [class.wizard-text-deactivate]=\"!currentStep?.isValid()\">\n @if (!hideNavigation()) {\n <div class=\"next\" [class.invisible]=\"index === steps().length - 1\" (click)=\"next(1)\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-circle mb-2\"\n [disabled]=\"!currentStep?.isValid()\"\n [attr.aria-label]=\"nextText() | translate\"\n >\n <si-icon class=\"flip-rtl\" [icon]=\"icons.elementRight4\" />\n </button>\n <div\n class=\"si-h5 text-primary\"\n [class.text-muted]=\"!currentStep?.isValid()\"\n [attr.aria-disabled]=\"!currentStep?.isValid()\"\n >{{ nextText() | translate }}</div\n >\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #saveBtn>\n @if (!hideSave()) {\n <div [class.center-save]=\"!verticalLayout() && inlineNavigation()\">\n @if (index === steps().length - 1) {\n <button\n type=\"button\"\n class=\"btn btn-primary save\"\n [disabled]=\"!currentStep?.isValid() || !currentStep?.isNextNavigable()\"\n (click)=\"save()\"\n >{{ saveText() | translate }}</button\n >\n }\n </div>\n }\n</ng-template>\n", styles: [":host.vertical{display:flex;flex-direction:column;block-size:100%}.container-steps{display:flex}.container-steps .step{display:grid}.container-steps:not(.vertical){inline-size:100%;justify-content:center;align-items:flex-start;padding-block:0}.container-steps:not(.vertical) .step{grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto}.container-steps:not(.vertical) .step .step-icon{grid-row:1/2;grid-column:2/3;justify-self:center}.container-steps:not(.vertical) .step .title{margin-block-start:12px}.container-steps.vertical{flex-direction:column;block-size:100%;padding-block-start:32px;min-inline-size:var(--wizard-vertical-min-size, 180px);max-inline-size:var(--wizard-vertical-max-size, initial)}.container-steps.vertical .step{grid-template-columns:24px 1fr;grid-template-rows:auto auto auto;align-items:center;flex:0 1 auto}.container-steps.vertical .step .step-icon{grid-row:2/3;grid-column:1/2;justify-self:center}.container-steps.vertical .step .title{grid-row:2/3;grid-column:2/3;padding-inline-start:8px}.container-steps .completed-color{color:var(--element-text-inverse)}.line{grid-row:1;justify-self:stretch}.line.vertical{grid-column:1/2;align-self:stretch;justify-self:center;border-inline-start-color:var(--element-ui-2);border-inline-start-width:2px;border-inline-start-style:solid;min-block-size:12px}.line.vertical.dashed{border-inline-start-style:dashed}.line.vertical.spacer{block-size:12px;border:0}.line.vertical:not(.previous){grid-row:3}.line:not(.vertical){grid-column:3/4;border-block-start-width:2px;border-block-start-style:solid;border-block-start-color:var(--element-ui-2);align-self:center}.line:not(.vertical).previous{grid-column:1/2}.line:not(.vertical).dashed{inline-size:32px;border-block-start-style:dashed}.line:not(.vertical).spacer{display:none}.line:not(.vertical).dashed.previous{justify-self:end}.line.active,.line.completed{border-color:var(--element-ui-0)}.line.dashed.vertical{min-block-size:12px;inline-size:auto}.step{inline-size:100%;flex-shrink:1}.step a{display:grid;grid-template-columns:subgrid;grid-template-rows:subgrid;grid-row:1/-1;grid-column:1/-1;align-items:center;justify-self:center;color:var(--element-ui-2)}.step a:hover{text-decoration:none}.step a:focus-visible .step-icon{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:calc(-1 * var(--element-button-focus-width));border-radius:12px}.step a:focus-visible .step-icon.number-step{outline:none}.step a:focus-visible .step-icon.number-step .circle{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}.step .title{grid-row:2/3;grid-column:1/-1;color:var(--element-text-secondary);display:-webkit-box;overflow:hidden;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical}.step .active,.step .active .title{color:var(--element-ui-0);cursor:default}.step .disabled,.step .disabled:hover,.step a.disabled>*{cursor:default}.step .disabled .title,.step .disabled:hover .title,.step a.disabled>* .title{color:var(--element-text-disabled)}.step .disabled .step-icon,.step .disabled:hover .step-icon,.step a.disabled>* .step-icon{color:var(--element-ui-3)}.step a:not(.disabled):hover,.step a:not(.disabled):hover .step-icon,.step a:not(.disabled):hover .title{color:var(--element-ui-0-hover)!important}.step .completed .title{color:var(--element-text-primary)}.step .completed .step-icon{color:var(--element-ui-0)}.step .completed .circle{background-color:currentColor}.container-wizard{inline-size:100%;display:flex;flex-wrap:nowrap}.container-wizard:not(.vertical){justify-content:center;padding-block-end:16px}.container-wizard.vertical{justify-content:start;block-size:100%}.container-wizard.vertical .steps-content{flex:100%;padding-inline-start:16px}.container-wizard .vertical-divider{border-inline-end:1px solid var(--element-ui-4);margin-block:0}.center-save{display:flex;justify-content:center;padding-block-start:16px}.wizard-btn-container{max-inline-size:50px;min-inline-size:40px;text-align:center;cursor:pointer}.wizard-btn-container.wizard-text-deactivate:hover{cursor:default}.wizard-btn-container:not(.wizard-text-deactivate):hover .text-primary{color:var(--element-ui-0-hover)!important}.completion-icon-size{font-size:96px}.circle{min-inline-size:18px;min-block-size:18px;border-radius:9px;border-width:1px;border-style:solid;border-color:currentColor;color:currentColor}.number-step{min-inline-size:24px;min-block-size:24px}.wizard-footer{container-type:inline-size}.wizard-footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:start;gap:16px}.wizard-footer-inner>.end{margin-inline-start:auto}@container (max-width: 400px){.wizard-footer-inner{flex-direction:column;align-items:stretch}.wizard-footer-inner>.end{margin-inline-start:unset}}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiResizeObserverDirective, selector: "[siResizeObserver]", inputs: ["resizeThrottle", "emitInitial"], outputs: ["siResizeObserver"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
419
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiWizardComponent, isStandalone: true, selector: "si-wizard", inputs: { backText: { classPropertyName: "backText", publicName: "backText", isSignal: true, isRequired: false, transformFunction: null }, nextText: { classPropertyName: "nextText", publicName: "nextText", isSignal: true, isRequired: false, transformFunction: null }, hideNavigation: { classPropertyName: "hideNavigation", publicName: "hideNavigation", isSignal: true, isRequired: false, transformFunction: null }, saveText: { classPropertyName: "saveText", publicName: "saveText", isSignal: true, isRequired: false, transformFunction: null }, hideSave: { classPropertyName: "hideSave", publicName: "hideSave", isSignal: true, isRequired: false, transformFunction: null }, completionText: { classPropertyName: "completionText", publicName: "completionText", isSignal: true, isRequired: false, transformFunction: null }, cancelText: { classPropertyName: "cancelText", publicName: "cancelText", isSignal: true, isRequired: false, transformFunction: null }, hasCancel: { classPropertyName: "hasCancel", publicName: "hasCancel", isSignal: true, isRequired: false, transformFunction: null }, enableCompletionPage: { classPropertyName: "enableCompletionPage", publicName: "enableCompletionPage", isSignal: true, isRequired: false, transformFunction: null }, completionPageVisibleTime: { classPropertyName: "completionPageVisibleTime", publicName: "completionPageVisibleTime", isSignal: true, isRequired: false, transformFunction: null }, stepIcon: { classPropertyName: "stepIcon", publicName: "stepIcon", isSignal: true, isRequired: false, transformFunction: null }, stepActiveIcon: { classPropertyName: "stepActiveIcon", publicName: "stepActiveIcon", isSignal: true, isRequired: false, transformFunction: null }, stepCompletedIcon: { classPropertyName: "stepCompletedIcon", publicName: "stepCompletedIcon", isSignal: true, isRequired: false, transformFunction: null }, stepFailedIcon: { classPropertyName: "stepFailedIcon", publicName: "stepFailedIcon", isSignal: true, isRequired: false, transformFunction: null }, verticalLayout: { classPropertyName: "verticalLayout", publicName: "verticalLayout", isSignal: true, isRequired: false, transformFunction: null }, inlineNavigation: { classPropertyName: "inlineNavigation", publicName: "inlineNavigation", isSignal: true, isRequired: false, transformFunction: null }, showStepNumbers: { classPropertyName: "showStepNumbers", publicName: "showStepNumbers", isSignal: true, isRequired: false, transformFunction: null }, showVerticalDivider: { classPropertyName: "showVerticalDivider", publicName: "showVerticalDivider", isSignal: true, isRequired: false, transformFunction: null }, verticalMinSize: { classPropertyName: "verticalMinSize", publicName: "verticalMinSize", isSignal: true, isRequired: false, transformFunction: null }, verticalMaxSize: { classPropertyName: "verticalMaxSize", publicName: "verticalMaxSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { completionAction: "completionAction", wizardCancel: "wizardCancel" }, host: { properties: { "class.vertical": "verticalLayout()", "style.--wizard-vertical-min-size": "verticalMinSize()", "style.--wizard-vertical-max-size": "verticalMaxSize()" }, classAttribute: "py-6 px-8 d-flex flex-column" }, queries: [{ propertyName: "steps", predicate: SiWizardStepComponent, isSignal: true }], viewQueries: [{ propertyName: "containerSteps", first: true, predicate: ["containerSteps"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (!showCompletionPage()) {\n @if (!verticalLayout()) {\n <div class=\"container-wizard\" [class.justify-content-center]=\"!inlineNavigation()\">\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"cancelBtnHorizontal\" />\n <ng-container *ngTemplateOutlet=\"backBtnHorizontal\" />\n }\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"nextBtnHorizontal\" />\n }\n </div>\n\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"saveBtn\" />\n } @else {\n <ng-container *ngTemplateOutlet=\"footer\" />\n }\n } @else {\n @if (showVerticalDivider()) {\n <div class=\"container-wizard vertical\">\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n <div class=\"vertical-divider\"></div>\n <div class=\"d-flex flex-column w-100\">\n <div class=\"steps-content\">\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n </div>\n <ng-container *ngTemplateOutlet=\"footer\" />\n </div>\n </div>\n } @else {\n <div class=\"container-wizard vertical\">\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n <div class=\"steps-content\">\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"footer\" />\n }\n }\n} @else {\n <div class=\"text-center\">\n <si-icon class=\"completion-icon-size text-success\" [icon]=\"icons.elementChecked\" />\n <p class=\"si-h4\"> {{ completionText() | translate }}</p>\n </div>\n}\n\n<ng-template #stepsTemplate>\n <div\n #containerSteps\n class=\"container-steps\"\n [class.vertical]=\"verticalLayout()\"\n [class.mx-4]=\"inlineNavigation()\"\n [class.mt-4]=\"!verticalLayout() && inlineNavigation()\"\n (siResizeObserver)=\"updateVisibleSteps()\"\n >\n @for (item of activeSteps(); track item.index) {\n @let meta = stepsMetadata()[item.index];\n <div class=\"step\">\n <div\n [class]=\"['line', 'previous', meta.stateClass]\"\n [class.dashed]=\"$first && item.index > 0\"\n [class.vertical]=\"verticalLayout()\"\n [class.spacer]=\"$first && item.index === 0\"\n ></div>\n <a\n [class]=\"['focus-none', meta.stateClass]\"\n [attr.aria-current]=\"meta.ariaCurrent\"\n [attr.href]=\"!meta.canActivate || !currentStep?.isNextNavigable() ? null : '#'\"\n (click)=\"activateStep($event, item.index)\"\n >\n @if (showStepNumbers() && !item.step.failed()) {\n <div\n class=\"step-icon number-step d-flex justify-content-center align-items-center px-1\"\n >\n <div class=\"circle\" [class.status-warning]=\"item.step.failed()\">\n <span class=\"si-h5 px-2\" [class.completed-color]=\"item.index < index\">\n {{ item.index + 1 }}\n </span>\n </div>\n </div>\n } @else {\n <si-icon\n class=\"icon-lg step-icon\"\n [class.status-warning]=\"item.step.failed()\"\n [icon]=\"meta.icon\"\n />\n }\n <div\n class=\"title si-h5\"\n [class.text-center]=\"!verticalLayout()\"\n [class.px-6]=\"!verticalLayout()\"\n [attr.aria-disabled]=\"meta.ariaDisabled\"\n >{{ item.step.heading() | translate }}</div\n >\n </a>\n @if (item.index + 1 < stepCount) {\n <div\n [class]=\"['line', stepsMetadata()[item.index + 1].stateClass]\"\n [class.vertical]=\"verticalLayout()\"\n [class.dashed]=\"$last\"\n ></div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #stepContent>\n <div [class.flex-grow-1]=\"!verticalLayout()\" [class.h-100]=\"verticalLayout()\">\n <ng-content />\n </div>\n</ng-template>\n\n<ng-template #cancelBtnHorizontal>\n @if (hasCancel()) {\n <div class=\"me-7\">\n <div class=\"wizard-btn-container\" (click)=\"wizardCancel.emit()\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-secondary mt-2 mb-4\"\n [attr.aria-label]=\"cancelText() | translate\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"si-h5 text-primary\">{{ cancelText() | translate }}</div>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #footer>\n <div class=\"wizard-footer pt-6\">\n <div class=\"wizard-footer-inner\" [class.ms-6]=\"showVerticalDivider()\">\n @if (hasCancel()) {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n [attr.aria-label]=\"cancelText() | translate\"\n (click)=\"wizardCancel.emit()\"\n >\n {{ cancelText() | translate }}\n </button>\n }\n @if (!hideNavigation()) {\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n [class.d-none]=\"index === 0\"\n [class.end]=\"index !== 0\"\n [attr.aria-label]=\"backText() | translate\"\n (click)=\"back(1)\"\n >\n {{ backText() | translate }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [attr.aria-label]=\"nextText() | translate\"\n [disabled]=\"!currentStep?.isValid()\"\n [class.d-none]=\"index === steps().length - 1\"\n [class.end]=\"index === 0\"\n (click)=\"next(1)\"\n >\n {{ nextText() | translate }}\n </button>\n }\n\n @if (!hideSave()) {\n @if (index === steps().length - 1) {\n <button\n type=\"button\"\n class=\"btn btn-primary save\"\n [class.end]=\"hideNavigation()\"\n [disabled]=\"!currentStep?.isValid() || !currentStep?.isNextNavigable()\"\n (click)=\"save()\"\n >{{ saveText() | translate }}</button\n >\n }\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #backBtnHorizontal>\n <div class=\"wizard-btn-container\">\n @if (!hideNavigation()) {\n <div class=\"back\" [class.invisible]=\"index === 0\" (click)=\"back(1)\">\n <button\n type=\"button\"\n class=\"btn btn-secondary btn-circle mb-2\"\n [attr.aria-label]=\"backText() | translate\"\n >\n <si-icon class=\"flip-rtl\" [icon]=\"icons.elementLeft4\" />\n </button>\n <div class=\"si-h5 text-primary\">{{ backText() | translate }}</div>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #nextBtnHorizontal>\n <div class=\"wizard-btn-container\" [class.wizard-text-deactivate]=\"!currentStep?.isValid()\">\n @if (!hideNavigation()) {\n <div class=\"next\" [class.invisible]=\"index === steps().length - 1\" (click)=\"next(1)\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-circle mb-2\"\n [disabled]=\"!currentStep?.isValid()\"\n [attr.aria-label]=\"nextText() | translate\"\n >\n <si-icon class=\"flip-rtl\" [icon]=\"icons.elementRight4\" />\n </button>\n <div\n class=\"si-h5 text-primary\"\n [class.text-muted]=\"!currentStep?.isValid()\"\n [attr.aria-disabled]=\"!currentStep?.isValid()\"\n >{{ nextText() | translate }}</div\n >\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #saveBtn>\n @if (!hideSave()) {\n <div [class.center-save]=\"!verticalLayout() && inlineNavigation()\">\n @if (index === steps().length - 1) {\n <button\n type=\"button\"\n class=\"btn btn-primary save\"\n [disabled]=\"!currentStep?.isValid() || !currentStep?.isNextNavigable()\"\n (click)=\"save()\"\n >{{ saveText() | translate }}</button\n >\n }\n </div>\n }\n</ng-template>\n", styles: [":host.vertical{display:flex;flex-direction:column;block-size:100%}.container-steps{display:flex}.container-steps .step{display:grid}.container-steps:not(.vertical){inline-size:100%;justify-content:center;align-items:flex-start;padding-block:0}.container-steps:not(.vertical) .step{grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto}.container-steps:not(.vertical) .step .step-icon{grid-row:1/2;grid-column:2/3;justify-self:center}.container-steps:not(.vertical) .step .title{margin-block-start:12px}.container-steps.vertical{flex-direction:column;block-size:100%;padding-block-start:32px;min-inline-size:var(--wizard-vertical-min-size, 180px);max-inline-size:var(--wizard-vertical-max-size, initial)}.container-steps.vertical .step{grid-template-columns:1.5rem 1fr;grid-template-rows:auto auto auto;align-items:center;flex:0 1 auto}.container-steps.vertical .step .step-icon{grid-row:2/3;grid-column:1/2;justify-self:center}.container-steps.vertical .step .title{grid-row:2/3;grid-column:2/3;padding-inline-start:8px}.container-steps .completed-color{color:var(--element-text-inverse)}.line{grid-row:1;justify-self:stretch}.line.vertical{grid-column:1/2;align-self:stretch;justify-self:center;border-inline-start-color:var(--element-ui-2);border-inline-start-width:2px;border-inline-start-style:solid;min-block-size:12px}.line.vertical.dashed{border-inline-start-style:dashed}.line.vertical.spacer{block-size:12px;border:0}.line.vertical:not(.previous){grid-row:3}.line:not(.vertical){grid-column:3/4;border-block-start-width:2px;border-block-start-style:solid;border-block-start-color:var(--element-ui-2);align-self:center}.line:not(.vertical).previous{grid-column:1/2}.line:not(.vertical).dashed{inline-size:32px;border-block-start-style:dashed}.line:not(.vertical).spacer{display:none}.line:not(.vertical).dashed.previous{justify-self:end}.line.active,.line.completed{border-color:var(--element-ui-0)}.line.dashed.vertical{min-block-size:12px;inline-size:auto}.step{inline-size:100%;flex-shrink:1}.step a{display:grid;grid-template-columns:subgrid;grid-template-rows:subgrid;grid-row:1/-1;grid-column:1/-1;align-items:center;justify-self:center;color:var(--element-ui-2)}.step a:hover{text-decoration:none}.step a:focus-visible .step-icon{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:calc(-1 * var(--element-button-focus-width));border-radius:.75rem}.step a:focus-visible .step-icon.number-step{outline:none}.step a:focus-visible .step-icon.number-step .circle{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}.step .title{grid-row:2/3;grid-column:1/-1;color:var(--element-text-secondary);display:-webkit-box;overflow:hidden;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical}.step .active,.step .active .title{color:var(--element-ui-0);cursor:default}.step .disabled,.step .disabled:hover,.step a.disabled>*{cursor:default}.step .disabled .title,.step .disabled:hover .title,.step a.disabled>* .title{color:var(--element-text-disabled)}.step .disabled .step-icon,.step .disabled:hover .step-icon,.step a.disabled>* .step-icon{color:var(--element-ui-3)}.step a:not(.disabled):hover,.step a:not(.disabled):hover .step-icon,.step a:not(.disabled):hover .title{color:var(--element-ui-0-hover)!important}.step .completed .title{color:var(--element-text-primary)}.step .completed .step-icon{color:var(--element-ui-0)}.step .completed .circle{background-color:currentColor}.container-wizard{inline-size:100%;display:flex;flex-wrap:nowrap}.container-wizard:not(.vertical){justify-content:center;padding-block-end:16px}.container-wizard.vertical{justify-content:start;block-size:100%}.container-wizard.vertical .steps-content{flex:100%;padding-inline-start:16px}.container-wizard .vertical-divider{border-inline-end:1px solid var(--element-ui-4);margin-block:0}.center-save{display:flex;justify-content:center;padding-block-start:16px}.wizard-btn-container{min-inline-size:8ch;flex-shrink:1;text-align:center;cursor:pointer}.wizard-btn-container.wizard-text-deactivate:hover{cursor:default}.wizard-btn-container:not(.wizard-text-deactivate):hover .text-primary{color:var(--element-ui-0-hover)!important}.completion-icon-size{font-size:96px}.circle{min-inline-size:1.125rem;min-block-size:1.125rem;border-radius:.75rem;border-width:1px;border-style:solid;border-color:currentColor;color:currentColor}.number-step{min-inline-size:1.5rem;min-block-size:1.5rem;text-align:center}.wizard-footer{container-type:inline-size}.wizard-footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:start;gap:16px}.wizard-footer-inner>.end{margin-inline-start:auto}@container (max-width: 25em){.wizard-footer-inner{flex-direction:column;align-items:stretch}.wizard-footer-inner>.end{margin-inline-start:unset}}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiResizeObserverDirective, selector: "[siResizeObserver]", inputs: ["resizeThrottle", "emitInitial"], outputs: ["siResizeObserver"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
385
420
  }
386
421
  __decorate([
387
422
  WebComponentContentChildren(SiWizardStepComponent)
@@ -393,8 +428,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
393
428
  '[class.vertical]': 'verticalLayout()',
394
429
  '[style.--wizard-vertical-min-size]': 'verticalMinSize()',
395
430
  '[style.--wizard-vertical-max-size]': 'verticalMaxSize()'
396
- }, template: "@if (!showCompletionPage()) {\n @if (!verticalLayout()) {\n <div class=\"container-wizard\" [class.justify-content-center]=\"!inlineNavigation()\">\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"cancelBtnHorizontal\" />\n <ng-container *ngTemplateOutlet=\"backBtnHorizontal\" />\n }\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"nextBtnHorizontal\" />\n }\n </div>\n\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"saveBtn\" />\n } @else {\n <ng-container *ngTemplateOutlet=\"footer\" />\n }\n } @else {\n @if (showVerticalDivider()) {\n <div class=\"container-wizard vertical\">\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n <div class=\"vertical-divider\"></div>\n <div class=\"d-flex flex-column w-100\">\n <div class=\"steps-content\">\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n </div>\n <ng-container *ngTemplateOutlet=\"footer\" />\n </div>\n </div>\n } @else {\n <div class=\"container-wizard vertical\">\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n <div class=\"steps-content\">\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"footer\" />\n }\n }\n} @else {\n <div class=\"text-center\">\n <si-icon class=\"completion-icon-size text-success\" [icon]=\"icons.elementChecked\" />\n <p class=\"si-h4\"> {{ completionText() | translate }}</p>\n </div>\n}\n\n<ng-template #stepsTemplate>\n <div\n #containerSteps\n class=\"container-steps\"\n [class.vertical]=\"verticalLayout()\"\n [class.mx-4]=\"inlineNavigation()\"\n [class.mt-4]=\"!verticalLayout() && inlineNavigation()\"\n (siResizeObserver)=\"updateVisibleSteps()\"\n >\n @for (item of activeSteps(); track item.index) {\n <div class=\"step\">\n <div\n [class]=\"['line', 'previous', getStateClass(item.index)]\"\n [class.dashed]=\"$first && item.index > 0\"\n [class.vertical]=\"verticalLayout()\"\n [class.spacer]=\"$first && item.index === 0\"\n ></div>\n <a\n [class]=\"['focus-none', getStateClass(item.index)]\"\n [attr.aria-current]=\"getAriaCurrent(item.index)\"\n [attr.href]=\"!canActivate(item.index) || !currentStep?.isNextNavigable() ? null : '#'\"\n (click)=\"activateStep($event, item.index)\"\n >\n @if (showStepNumbers() && !item.step.failed()) {\n <div\n class=\"step-icon number-step d-flex justify-content-center align-items-center px-1\"\n >\n <div class=\"circle\" [class.status-warning]=\"item.step.failed()\">\n <span class=\"si-h5 px-2\" [class.completed-color]=\"item.index < index\">\n {{ item.index + 1 }}\n </span>\n </div>\n </div>\n } @else {\n <si-icon\n class=\"icon-lg step-icon\"\n [class.status-warning]=\"item.step.failed()\"\n [icon]=\"getState(item.step!, item.index)\"\n />\n }\n <div\n class=\"title si-h5\"\n [class.text-center]=\"!verticalLayout()\"\n [class.px-6]=\"!verticalLayout()\"\n [attr.aria-disabled]=\"getAriaDisabled(item.index)\"\n >{{ item.step.heading() | translate }}</div\n >\n </a>\n @if (item.index + 1 < stepCount) {\n <div\n [class]=\"['line', getStateClass(item.index + 1)]\"\n [class.vertical]=\"verticalLayout()\"\n [class.dashed]=\"$last\"\n ></div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #stepContent>\n <div [class.flex-grow-1]=\"!verticalLayout()\" [class.h-100]=\"verticalLayout()\">\n <ng-content />\n </div>\n</ng-template>\n\n<ng-template #cancelBtnHorizontal>\n @if (hasCancel()) {\n <div class=\"me-7\">\n <div class=\"wizard-btn-container\" (click)=\"wizardCancel.emit()\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-secondary mt-2 mb-4\"\n [attr.aria-label]=\"cancelText() | translate\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"si-h5 text-primary\">{{ cancelText() | translate }}</div>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #footer>\n <div class=\"wizard-footer pt-6\">\n <div class=\"wizard-footer-inner\" [class.ms-6]=\"showVerticalDivider()\">\n @if (hasCancel()) {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n [attr.aria-label]=\"cancelText() | translate\"\n (click)=\"wizardCancel.emit()\"\n >\n {{ cancelText() | translate }}\n </button>\n }\n @if (!hideNavigation()) {\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n [class.d-none]=\"index === 0\"\n [class.end]=\"index !== 0\"\n [attr.aria-label]=\"backText() | translate\"\n (click)=\"back(1)\"\n >\n {{ backText() | translate }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [attr.aria-label]=\"nextText() | translate\"\n [disabled]=\"!currentStep?.isValid()\"\n [class.d-none]=\"index === steps().length - 1\"\n [class.end]=\"index === 0\"\n (click)=\"next(1)\"\n >\n {{ nextText() | translate }}\n </button>\n }\n\n @if (!hideSave()) {\n @if (index === steps().length - 1) {\n <button\n type=\"button\"\n class=\"btn btn-primary save\"\n [class.end]=\"hideNavigation()\"\n [disabled]=\"!currentStep?.isValid() || !currentStep?.isNextNavigable()\"\n (click)=\"save()\"\n >{{ saveText() | translate }}</button\n >\n }\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #backBtnHorizontal>\n <div class=\"wizard-btn-container\">\n @if (!hideNavigation()) {\n <div class=\"back\" [class.invisible]=\"index === 0\" (click)=\"back(1)\">\n <button\n type=\"button\"\n class=\"btn btn-secondary btn-circle mb-2\"\n [attr.aria-label]=\"backText() | translate\"\n >\n <si-icon class=\"flip-rtl\" [icon]=\"icons.elementLeft4\" />\n </button>\n <div class=\"si-h5 text-primary\">{{ backText() | translate }}</div>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #nextBtnHorizontal>\n <div class=\"wizard-btn-container\" [class.wizard-text-deactivate]=\"!currentStep?.isValid()\">\n @if (!hideNavigation()) {\n <div class=\"next\" [class.invisible]=\"index === steps().length - 1\" (click)=\"next(1)\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-circle mb-2\"\n [disabled]=\"!currentStep?.isValid()\"\n [attr.aria-label]=\"nextText() | translate\"\n >\n <si-icon class=\"flip-rtl\" [icon]=\"icons.elementRight4\" />\n </button>\n <div\n class=\"si-h5 text-primary\"\n [class.text-muted]=\"!currentStep?.isValid()\"\n [attr.aria-disabled]=\"!currentStep?.isValid()\"\n >{{ nextText() | translate }}</div\n >\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #saveBtn>\n @if (!hideSave()) {\n <div [class.center-save]=\"!verticalLayout() && inlineNavigation()\">\n @if (index === steps().length - 1) {\n <button\n type=\"button\"\n class=\"btn btn-primary save\"\n [disabled]=\"!currentStep?.isValid() || !currentStep?.isNextNavigable()\"\n (click)=\"save()\"\n >{{ saveText() | translate }}</button\n >\n }\n </div>\n }\n</ng-template>\n", styles: [":host.vertical{display:flex;flex-direction:column;block-size:100%}.container-steps{display:flex}.container-steps .step{display:grid}.container-steps:not(.vertical){inline-size:100%;justify-content:center;align-items:flex-start;padding-block:0}.container-steps:not(.vertical) .step{grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto}.container-steps:not(.vertical) .step .step-icon{grid-row:1/2;grid-column:2/3;justify-self:center}.container-steps:not(.vertical) .step .title{margin-block-start:12px}.container-steps.vertical{flex-direction:column;block-size:100%;padding-block-start:32px;min-inline-size:var(--wizard-vertical-min-size, 180px);max-inline-size:var(--wizard-vertical-max-size, initial)}.container-steps.vertical .step{grid-template-columns:24px 1fr;grid-template-rows:auto auto auto;align-items:center;flex:0 1 auto}.container-steps.vertical .step .step-icon{grid-row:2/3;grid-column:1/2;justify-self:center}.container-steps.vertical .step .title{grid-row:2/3;grid-column:2/3;padding-inline-start:8px}.container-steps .completed-color{color:var(--element-text-inverse)}.line{grid-row:1;justify-self:stretch}.line.vertical{grid-column:1/2;align-self:stretch;justify-self:center;border-inline-start-color:var(--element-ui-2);border-inline-start-width:2px;border-inline-start-style:solid;min-block-size:12px}.line.vertical.dashed{border-inline-start-style:dashed}.line.vertical.spacer{block-size:12px;border:0}.line.vertical:not(.previous){grid-row:3}.line:not(.vertical){grid-column:3/4;border-block-start-width:2px;border-block-start-style:solid;border-block-start-color:var(--element-ui-2);align-self:center}.line:not(.vertical).previous{grid-column:1/2}.line:not(.vertical).dashed{inline-size:32px;border-block-start-style:dashed}.line:not(.vertical).spacer{display:none}.line:not(.vertical).dashed.previous{justify-self:end}.line.active,.line.completed{border-color:var(--element-ui-0)}.line.dashed.vertical{min-block-size:12px;inline-size:auto}.step{inline-size:100%;flex-shrink:1}.step a{display:grid;grid-template-columns:subgrid;grid-template-rows:subgrid;grid-row:1/-1;grid-column:1/-1;align-items:center;justify-self:center;color:var(--element-ui-2)}.step a:hover{text-decoration:none}.step a:focus-visible .step-icon{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:calc(-1 * var(--element-button-focus-width));border-radius:12px}.step a:focus-visible .step-icon.number-step{outline:none}.step a:focus-visible .step-icon.number-step .circle{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}.step .title{grid-row:2/3;grid-column:1/-1;color:var(--element-text-secondary);display:-webkit-box;overflow:hidden;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical}.step .active,.step .active .title{color:var(--element-ui-0);cursor:default}.step .disabled,.step .disabled:hover,.step a.disabled>*{cursor:default}.step .disabled .title,.step .disabled:hover .title,.step a.disabled>* .title{color:var(--element-text-disabled)}.step .disabled .step-icon,.step .disabled:hover .step-icon,.step a.disabled>* .step-icon{color:var(--element-ui-3)}.step a:not(.disabled):hover,.step a:not(.disabled):hover .step-icon,.step a:not(.disabled):hover .title{color:var(--element-ui-0-hover)!important}.step .completed .title{color:var(--element-text-primary)}.step .completed .step-icon{color:var(--element-ui-0)}.step .completed .circle{background-color:currentColor}.container-wizard{inline-size:100%;display:flex;flex-wrap:nowrap}.container-wizard:not(.vertical){justify-content:center;padding-block-end:16px}.container-wizard.vertical{justify-content:start;block-size:100%}.container-wizard.vertical .steps-content{flex:100%;padding-inline-start:16px}.container-wizard .vertical-divider{border-inline-end:1px solid var(--element-ui-4);margin-block:0}.center-save{display:flex;justify-content:center;padding-block-start:16px}.wizard-btn-container{max-inline-size:50px;min-inline-size:40px;text-align:center;cursor:pointer}.wizard-btn-container.wizard-text-deactivate:hover{cursor:default}.wizard-btn-container:not(.wizard-text-deactivate):hover .text-primary{color:var(--element-ui-0-hover)!important}.completion-icon-size{font-size:96px}.circle{min-inline-size:18px;min-block-size:18px;border-radius:9px;border-width:1px;border-style:solid;border-color:currentColor;color:currentColor}.number-step{min-inline-size:24px;min-block-size:24px}.wizard-footer{container-type:inline-size}.wizard-footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:start;gap:16px}.wizard-footer-inner>.end{margin-inline-start:auto}@container (max-width: 400px){.wizard-footer-inner{flex-direction:column;align-items:stretch}.wizard-footer-inner>.end{margin-inline-start:unset}}\n"] }]
397
- }], propDecorators: { containerSteps: [{ type: i0.ViewChild, args: ['containerSteps', { isSignal: true }] }], backText: [{ type: i0.Input, args: [{ isSignal: true, alias: "backText", required: false }] }], nextText: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextText", required: false }] }], hideNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideNavigation", required: false }] }], saveText: [{ type: i0.Input, args: [{ isSignal: true, alias: "saveText", required: false }] }], hideSave: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideSave", required: false }] }], completionText: [{ type: i0.Input, args: [{ isSignal: true, alias: "completionText", required: false }] }], cancelText: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelText", required: false }] }], hasCancel: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasCancel", required: false }] }], enableCompletionPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableCompletionPage", required: false }] }], completionPageVisibleTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "completionPageVisibleTime", required: false }] }], stepIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepIcon", required: false }] }], stepActiveIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepActiveIcon", required: false }] }], stepCompletedIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepCompletedIcon", required: false }] }], stepFailedIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepFailedIcon", required: false }] }], verticalLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "verticalLayout", required: false }] }], inlineNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "inlineNavigation", required: false }] }], showStepNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "showStepNumbers", required: false }] }], showVerticalDivider: [{ type: i0.Input, args: [{ isSignal: true, alias: "showVerticalDivider", required: false }] }], verticalMinSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "verticalMinSize", required: false }] }], verticalMaxSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "verticalMaxSize", required: false }] }], completionAction: [{ type: i0.Output, args: ["completionAction"] }], wizardCancel: [{ type: i0.Output, args: ["wizardCancel"] }], steps: [] } });
431
+ }, template: "@if (!showCompletionPage()) {\n @if (!verticalLayout()) {\n <div class=\"container-wizard\" [class.justify-content-center]=\"!inlineNavigation()\">\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"cancelBtnHorizontal\" />\n <ng-container *ngTemplateOutlet=\"backBtnHorizontal\" />\n }\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"nextBtnHorizontal\" />\n }\n </div>\n\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n @if (inlineNavigation()) {\n <ng-container *ngTemplateOutlet=\"saveBtn\" />\n } @else {\n <ng-container *ngTemplateOutlet=\"footer\" />\n }\n } @else {\n @if (showVerticalDivider()) {\n <div class=\"container-wizard vertical\">\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n <div class=\"vertical-divider\"></div>\n <div class=\"d-flex flex-column w-100\">\n <div class=\"steps-content\">\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n </div>\n <ng-container *ngTemplateOutlet=\"footer\" />\n </div>\n </div>\n } @else {\n <div class=\"container-wizard vertical\">\n <ng-container *ngTemplateOutlet=\"stepsTemplate\" />\n <div class=\"steps-content\">\n <ng-container *ngTemplateOutlet=\"stepContent\" />\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"footer\" />\n }\n }\n} @else {\n <div class=\"text-center\">\n <si-icon class=\"completion-icon-size text-success\" [icon]=\"icons.elementChecked\" />\n <p class=\"si-h4\"> {{ completionText() | translate }}</p>\n </div>\n}\n\n<ng-template #stepsTemplate>\n <div\n #containerSteps\n class=\"container-steps\"\n [class.vertical]=\"verticalLayout()\"\n [class.mx-4]=\"inlineNavigation()\"\n [class.mt-4]=\"!verticalLayout() && inlineNavigation()\"\n (siResizeObserver)=\"updateVisibleSteps()\"\n >\n @for (item of activeSteps(); track item.index) {\n @let meta = stepsMetadata()[item.index];\n <div class=\"step\">\n <div\n [class]=\"['line', 'previous', meta.stateClass]\"\n [class.dashed]=\"$first && item.index > 0\"\n [class.vertical]=\"verticalLayout()\"\n [class.spacer]=\"$first && item.index === 0\"\n ></div>\n <a\n [class]=\"['focus-none', meta.stateClass]\"\n [attr.aria-current]=\"meta.ariaCurrent\"\n [attr.href]=\"!meta.canActivate || !currentStep?.isNextNavigable() ? null : '#'\"\n (click)=\"activateStep($event, item.index)\"\n >\n @if (showStepNumbers() && !item.step.failed()) {\n <div\n class=\"step-icon number-step d-flex justify-content-center align-items-center px-1\"\n >\n <div class=\"circle\" [class.status-warning]=\"item.step.failed()\">\n <span class=\"si-h5 px-2\" [class.completed-color]=\"item.index < index\">\n {{ item.index + 1 }}\n </span>\n </div>\n </div>\n } @else {\n <si-icon\n class=\"icon-lg step-icon\"\n [class.status-warning]=\"item.step.failed()\"\n [icon]=\"meta.icon\"\n />\n }\n <div\n class=\"title si-h5\"\n [class.text-center]=\"!verticalLayout()\"\n [class.px-6]=\"!verticalLayout()\"\n [attr.aria-disabled]=\"meta.ariaDisabled\"\n >{{ item.step.heading() | translate }}</div\n >\n </a>\n @if (item.index + 1 < stepCount) {\n <div\n [class]=\"['line', stepsMetadata()[item.index + 1].stateClass]\"\n [class.vertical]=\"verticalLayout()\"\n [class.dashed]=\"$last\"\n ></div>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #stepContent>\n <div [class.flex-grow-1]=\"!verticalLayout()\" [class.h-100]=\"verticalLayout()\">\n <ng-content />\n </div>\n</ng-template>\n\n<ng-template #cancelBtnHorizontal>\n @if (hasCancel()) {\n <div class=\"me-7\">\n <div class=\"wizard-btn-container\" (click)=\"wizardCancel.emit()\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-secondary mt-2 mb-4\"\n [attr.aria-label]=\"cancelText() | translate\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"si-h5 text-primary\">{{ cancelText() | translate }}</div>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #footer>\n <div class=\"wizard-footer pt-6\">\n <div class=\"wizard-footer-inner\" [class.ms-6]=\"showVerticalDivider()\">\n @if (hasCancel()) {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n [attr.aria-label]=\"cancelText() | translate\"\n (click)=\"wizardCancel.emit()\"\n >\n {{ cancelText() | translate }}\n </button>\n }\n @if (!hideNavigation()) {\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n [class.d-none]=\"index === 0\"\n [class.end]=\"index !== 0\"\n [attr.aria-label]=\"backText() | translate\"\n (click)=\"back(1)\"\n >\n {{ backText() | translate }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [attr.aria-label]=\"nextText() | translate\"\n [disabled]=\"!currentStep?.isValid()\"\n [class.d-none]=\"index === steps().length - 1\"\n [class.end]=\"index === 0\"\n (click)=\"next(1)\"\n >\n {{ nextText() | translate }}\n </button>\n }\n\n @if (!hideSave()) {\n @if (index === steps().length - 1) {\n <button\n type=\"button\"\n class=\"btn btn-primary save\"\n [class.end]=\"hideNavigation()\"\n [disabled]=\"!currentStep?.isValid() || !currentStep?.isNextNavigable()\"\n (click)=\"save()\"\n >{{ saveText() | translate }}</button\n >\n }\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #backBtnHorizontal>\n <div class=\"wizard-btn-container\">\n @if (!hideNavigation()) {\n <div class=\"back\" [class.invisible]=\"index === 0\" (click)=\"back(1)\">\n <button\n type=\"button\"\n class=\"btn btn-secondary btn-circle mb-2\"\n [attr.aria-label]=\"backText() | translate\"\n >\n <si-icon class=\"flip-rtl\" [icon]=\"icons.elementLeft4\" />\n </button>\n <div class=\"si-h5 text-primary\">{{ backText() | translate }}</div>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #nextBtnHorizontal>\n <div class=\"wizard-btn-container\" [class.wizard-text-deactivate]=\"!currentStep?.isValid()\">\n @if (!hideNavigation()) {\n <div class=\"next\" [class.invisible]=\"index === steps().length - 1\" (click)=\"next(1)\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-circle mb-2\"\n [disabled]=\"!currentStep?.isValid()\"\n [attr.aria-label]=\"nextText() | translate\"\n >\n <si-icon class=\"flip-rtl\" [icon]=\"icons.elementRight4\" />\n </button>\n <div\n class=\"si-h5 text-primary\"\n [class.text-muted]=\"!currentStep?.isValid()\"\n [attr.aria-disabled]=\"!currentStep?.isValid()\"\n >{{ nextText() | translate }}</div\n >\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #saveBtn>\n @if (!hideSave()) {\n <div [class.center-save]=\"!verticalLayout() && inlineNavigation()\">\n @if (index === steps().length - 1) {\n <button\n type=\"button\"\n class=\"btn btn-primary save\"\n [disabled]=\"!currentStep?.isValid() || !currentStep?.isNextNavigable()\"\n (click)=\"save()\"\n >{{ saveText() | translate }}</button\n >\n }\n </div>\n }\n</ng-template>\n", styles: [":host.vertical{display:flex;flex-direction:column;block-size:100%}.container-steps{display:flex}.container-steps .step{display:grid}.container-steps:not(.vertical){inline-size:100%;justify-content:center;align-items:flex-start;padding-block:0}.container-steps:not(.vertical) .step{grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto}.container-steps:not(.vertical) .step .step-icon{grid-row:1/2;grid-column:2/3;justify-self:center}.container-steps:not(.vertical) .step .title{margin-block-start:12px}.container-steps.vertical{flex-direction:column;block-size:100%;padding-block-start:32px;min-inline-size:var(--wizard-vertical-min-size, 180px);max-inline-size:var(--wizard-vertical-max-size, initial)}.container-steps.vertical .step{grid-template-columns:1.5rem 1fr;grid-template-rows:auto auto auto;align-items:center;flex:0 1 auto}.container-steps.vertical .step .step-icon{grid-row:2/3;grid-column:1/2;justify-self:center}.container-steps.vertical .step .title{grid-row:2/3;grid-column:2/3;padding-inline-start:8px}.container-steps .completed-color{color:var(--element-text-inverse)}.line{grid-row:1;justify-self:stretch}.line.vertical{grid-column:1/2;align-self:stretch;justify-self:center;border-inline-start-color:var(--element-ui-2);border-inline-start-width:2px;border-inline-start-style:solid;min-block-size:12px}.line.vertical.dashed{border-inline-start-style:dashed}.line.vertical.spacer{block-size:12px;border:0}.line.vertical:not(.previous){grid-row:3}.line:not(.vertical){grid-column:3/4;border-block-start-width:2px;border-block-start-style:solid;border-block-start-color:var(--element-ui-2);align-self:center}.line:not(.vertical).previous{grid-column:1/2}.line:not(.vertical).dashed{inline-size:32px;border-block-start-style:dashed}.line:not(.vertical).spacer{display:none}.line:not(.vertical).dashed.previous{justify-self:end}.line.active,.line.completed{border-color:var(--element-ui-0)}.line.dashed.vertical{min-block-size:12px;inline-size:auto}.step{inline-size:100%;flex-shrink:1}.step a{display:grid;grid-template-columns:subgrid;grid-template-rows:subgrid;grid-row:1/-1;grid-column:1/-1;align-items:center;justify-self:center;color:var(--element-ui-2)}.step a:hover{text-decoration:none}.step a:focus-visible .step-icon{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:calc(-1 * var(--element-button-focus-width));border-radius:.75rem}.step a:focus-visible .step-icon.number-step{outline:none}.step a:focus-visible .step-icon.number-step .circle{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}.step .title{grid-row:2/3;grid-column:1/-1;color:var(--element-text-secondary);display:-webkit-box;overflow:hidden;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical}.step .active,.step .active .title{color:var(--element-ui-0);cursor:default}.step .disabled,.step .disabled:hover,.step a.disabled>*{cursor:default}.step .disabled .title,.step .disabled:hover .title,.step a.disabled>* .title{color:var(--element-text-disabled)}.step .disabled .step-icon,.step .disabled:hover .step-icon,.step a.disabled>* .step-icon{color:var(--element-ui-3)}.step a:not(.disabled):hover,.step a:not(.disabled):hover .step-icon,.step a:not(.disabled):hover .title{color:var(--element-ui-0-hover)!important}.step .completed .title{color:var(--element-text-primary)}.step .completed .step-icon{color:var(--element-ui-0)}.step .completed .circle{background-color:currentColor}.container-wizard{inline-size:100%;display:flex;flex-wrap:nowrap}.container-wizard:not(.vertical){justify-content:center;padding-block-end:16px}.container-wizard.vertical{justify-content:start;block-size:100%}.container-wizard.vertical .steps-content{flex:100%;padding-inline-start:16px}.container-wizard .vertical-divider{border-inline-end:1px solid var(--element-ui-4);margin-block:0}.center-save{display:flex;justify-content:center;padding-block-start:16px}.wizard-btn-container{min-inline-size:8ch;flex-shrink:1;text-align:center;cursor:pointer}.wizard-btn-container.wizard-text-deactivate:hover{cursor:default}.wizard-btn-container:not(.wizard-text-deactivate):hover .text-primary{color:var(--element-ui-0-hover)!important}.completion-icon-size{font-size:96px}.circle{min-inline-size:1.125rem;min-block-size:1.125rem;border-radius:.75rem;border-width:1px;border-style:solid;border-color:currentColor;color:currentColor}.number-step{min-inline-size:1.5rem;min-block-size:1.5rem;text-align:center}.wizard-footer{container-type:inline-size}.wizard-footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:start;gap:16px}.wizard-footer-inner>.end{margin-inline-start:auto}@container (max-width: 25em){.wizard-footer-inner{flex-direction:column;align-items:stretch}.wizard-footer-inner>.end{margin-inline-start:unset}}\n"] }]
432
+ }], ctorParameters: () => [], propDecorators: { containerSteps: [{ type: i0.ViewChild, args: ['containerSteps', { isSignal: true }] }], backText: [{ type: i0.Input, args: [{ isSignal: true, alias: "backText", required: false }] }], nextText: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextText", required: false }] }], hideNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideNavigation", required: false }] }], saveText: [{ type: i0.Input, args: [{ isSignal: true, alias: "saveText", required: false }] }], hideSave: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideSave", required: false }] }], completionText: [{ type: i0.Input, args: [{ isSignal: true, alias: "completionText", required: false }] }], cancelText: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelText", required: false }] }], hasCancel: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasCancel", required: false }] }], enableCompletionPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableCompletionPage", required: false }] }], completionPageVisibleTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "completionPageVisibleTime", required: false }] }], stepIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepIcon", required: false }] }], stepActiveIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepActiveIcon", required: false }] }], stepCompletedIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepCompletedIcon", required: false }] }], stepFailedIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepFailedIcon", required: false }] }], verticalLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "verticalLayout", required: false }] }], inlineNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "inlineNavigation", required: false }] }], showStepNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "showStepNumbers", required: false }] }], showVerticalDivider: [{ type: i0.Input, args: [{ isSignal: true, alias: "showVerticalDivider", required: false }] }], verticalMinSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "verticalMinSize", required: false }] }], verticalMaxSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "verticalMaxSize", required: false }] }], completionAction: [{ type: i0.Output, args: ["completionAction"] }], wizardCancel: [{ type: i0.Output, args: ["wizardCancel"] }], steps: [] } });
398
433
 
399
434
  /**
400
435
  * Copyright (c) Siemens 2016 - 2026