ng-hub-ui-stepper 22.2.0 → 22.3.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.
package/README.md CHANGED
@@ -69,6 +69,7 @@ This library is part of the **ng-hub-ui** ecosystem:
69
69
  - 🔢 **Multi-layout**: Supports Vertical, Sidebar, and RTL modes.
70
70
  - 🔄 **Smooth Transitions**: Built-in CSS animations.
71
71
  - 🧩 **Flexible Controls**: Use default buttons or project your own.
72
+ - ✂️ **Opt-in title truncation + tooltip**: set `truncateTitles` to clip long nav titles (bounded by `--hub-stepper-nav-title-max-width`) and reveal the full text on hover — hub-ui tooltip by default, swappable with `provideHubTooltip`. Requires `ng-hub-ui-utils >= 22.6.0` + `@use 'ng-hub-ui-utils/styles/tooltip';`.
72
73
 
73
74
  ## Installation
74
75
 
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, computed, Directive, signal, input, viewChild, ChangeDetectionStrategy, Component, ChangeDetectorRef, ElementRef, output, contentChildren, effect, contentChild, TemplateRef, NgModule, Injectable } from '@angular/core';
3
3
  import { NgTemplateOutlet, DOCUMENT } from '@angular/common';
4
- import { TranslatePipe, UcfirstPipe, HUB_TRANSLATION_CONFIG, HubTranslationService } from 'ng-hub-ui-utils';
4
+ import { HubOverflowTooltipDirective, TranslatePipe, UcfirstPipe, HUB_TRANSLATION_CONFIG, HubTranslationService } from 'ng-hub-ui-utils';
5
5
 
6
6
  /**
7
7
  * Connects a projected button to the stepper "next" action.
@@ -218,6 +218,15 @@ class StepperComponent {
218
218
  /** Optional custom label for the submit button. */
219
219
  submitLabel = input(null, /* @ts-ignore */
220
220
  ...(ngDevMode ? [{ debugName: "submitLabel" }] : /* istanbul ignore next */ []));
221
+ /**
222
+ * Opt-in truncation of the nav step titles. When `true`, each title is clipped
223
+ * to `--hub-stepper-nav-title-max-width` (default `12rem`) with an ellipsis and,
224
+ * if it overflows, exposes its full text as a tooltip (the hub-ui tooltip by
225
+ * default; swappable with `provideHubTooltip`). Off by default, so the standard
226
+ * nav layout is unchanged.
227
+ */
228
+ truncateTitles = input(false, /* @ts-ignore */
229
+ ...(ngDevMode ? [{ debugName: "truncateTitles" }] : /* istanbul ignore next */ []));
221
230
  /** Emits once the user completes the last step. */
222
231
  completed = output();
223
232
  /** Emits the new index when moving to the previous step. */
@@ -401,19 +410,20 @@ class StepperComponent {
401
410
  this.#cdr.detectChanges();
402
411
  }
403
412
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
404
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: StepperComponent, isStandalone: true, selector: "hub-stepper, hub-ui-stepper, ng80-stepper", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, backLabel: { classPropertyName: "backLabel", publicName: "backLabel", isSignal: true, isRequired: false, transformFunction: null }, continueLabel: { classPropertyName: "continueLabel", publicName: "continueLabel", isSignal: true, isRequired: false, transformFunction: null }, submitLabel: { classPropertyName: "submitLabel", publicName: "submitLabel", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { completed: "completed", previousStep: "previousStep", nextStep: "nextStep" }, host: { properties: { "class.stepper--layout-vertical": "layout() === StepperLayout.Vertical", "class.stepper--layout-sidebar": "layout() === StepperLayout.Sidebar", "class.stepper--rtl": "isRtl()", "attr.data-variant": "variant() ?? null", "style.--hub-stepper-accent": "customAccent()" }, classAttribute: "stepper" }, queries: [{ propertyName: "steps", predicate: StepComponent, isSignal: true }, { propertyName: "stepperNavTpt", first: true, predicate: StepperNavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "previousButton", first: true, predicate: PreviousButtonDirective, descendants: true, isSignal: true }, { propertyName: "nextButton", first: true, predicate: NextButtonDirective, descendants: true, isSignal: true }, { propertyName: "submitButton", first: true, predicate: SubmitButtonDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n <ng-container\n [ngTemplateOutlet]=\"stepperNavTpt() || defaultNavTpt\"\n [ngTemplateOutletContext]=\"{ steps: steps(), currentIndex: currentIndex() }\"\n ></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div\n class=\"stepper__content\"\n [class.stepper__content--animated]=\"hasAnimationClass()\"\n [class.stepper__content--animating]=\"contentAnimating()\"\n [class.stepper__content--forward]=\"isForwardAnimation()\"\n [class.stepper__content--backward]=\"isBackwardAnimation()\"\n>\n <div class=\"stepper__content-panel\" (animationend)=\"onContentAnimationEnd($event)\">\n <ng-container\n [ngTemplateOutlet]=\"currentStep?.innerTemplate()\"\n ></ng-container>\n </div>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n @if (currentIndex() > 0) {\n <ng-content select=\"button[previousButton]\"></ng-content>\n @if (!previousButton()) {\n <button\n class=\"stepper__button stepper__button--back\"\n (click)=\"goToPrevious()\"\n [disabled]=\"!canNavigateTo(currentIndex() - 1)\"\n >\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n }\n {{ backLabel() ?? ('BACK' | translate | ucfirst) }}\n </button>\n }\n }\n\n @if (currentIndex() < steps().length - 1) {\n <ng-content select=\"button[nextButton]\"></ng-content>\n @if (!nextButton()) {\n <button\n class=\"stepper__button stepper__button--next\"\n (click)=\"goToNext()\"\n [disabled]=\"!canNavigateTo(currentIndex() + 1)\"\n >\n {{ continueLabel() ?? ('CONTINUE' | translate | ucfirst) }}\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n }\n </button>\n }\n }\n\n @if (currentIndex() === steps().length - 1) {\n <ng-content select=\"button[submitButton]\"></ng-content>\n @if (!submitButton()) {\n <button\n class=\"stepper__button stepper__button--submit\"\n (click)=\"complete()\"\n [disabled]=\"!isValidStepIndex(currentIndex())\"\n >\n {{ submitLabel() ?? ('SUBMIT' | translate | ucfirst) }}\n </button>\n }\n }\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n <ul class=\"stepper__nav-list\">\n @for (step of steps; track $index; let i = $index) {\n <li class=\"stepper__nav-item\">\n <ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tdefaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title(),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n ></ng-container>\n </li>\n }\n </ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n #defaultNavTriggerTpt\n let-title=\"title\"\n let-index=\"index\"\n let-isCurrent=\"isCurrent\"\n let-isCompleted=\"isCompleted\"\n >\n <button\n class=\"stepper__nav-trigger\"\n [class.stepper__nav-trigger--current]=\"isCurrent\"\n [class.stepper__nav-trigger--completed]=\"isCompleted\"\n [disabled]=\"!canNavigateTo(index)\"\n (click)=\"goTo(index)\"\n >\n @if (title) {\n <span class=\"stepper__nav-title\">{{ title }}</span>\n } @else {\n <span class=\"stepper__nav-title\">Step {{ index + 1 }}</span>\n }\n </button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n", styles: ["@charset \"UTF-8\";:host{--hub-stepper-accent: var(--hub-sys-color-primary, #009ef7);--hub-stepper-accent-emphasis: color-mix(in oklch, var(--hub-stepper-accent) 80%, var(--hub-sys-color-ink, #212529));--hub-stepper-accent-subtle: color-mix(in oklch, var(--hub-stepper-accent) 12%, var(--hub-sys-surface-page, #fff));--hub-stepper-accent-on: oklch(from var(--hub-stepper-accent) clamp(0, (.62 - l) * 1000, 1) 0 h);--hub-stepper-primary-color: var(--hub-stepper-accent);--hub-stepper-background-color: var(--hub-sys-surface-elevated, #f8f9fa);--hub-stepper-text-color: var(--hub-sys-text-primary, #212529);--hub-stepper-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-stepper-surface-color: var(--hub-sys-surface-page, #ffffff);--hub-stepper-nav-bg: var(--hub-sys-surface-page, transparent);--hub-stepper-nav-padding-x: 0;--hub-stepper-nav-padding-y: 0;--hub-stepper-nav-border-width: 0;--hub-stepper-nav-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-stepper-nav-link-color: var(--hub-sys-text-primary, #212529);--hub-stepper-nav-link-hover-color: var(--hub-sys-link-hover-color, #0a58ca);--hub-stepper-nav-link-hover-bg: var(--hub-sys-state-hover-bg, rgba(0, 0, 0, .075));--hub-stepper-nav-link-active-color: var(--hub-stepper-accent-on, #ffffff);--hub-stepper-nav-link-active-bg: var(--hub-stepper-accent);--hub-stepper-nav-link-active-border-color: var(--hub-stepper-accent);--hub-stepper-nav-link-disabled-color: var(--hub-sys-text-muted, #6c757d);--hub-stepper-gap: var(--hub-ref-space-3, 1rem);--hub-stepper-nav-gap: var(--hub-ref-space-1, .25rem);--hub-stepper-nav-trigger-gap: var(--hub-ref-space-1, .25rem);--hub-stepper-nav-trigger-padding-y: var(--hub-ref-space-2, .5rem);--hub-stepper-nav-trigger-padding-x: var(--hub-ref-space-3, 1rem);--hub-stepper-nav-trigger-font-size: var(--hub-ref-font-size-sm, .875rem);--hub-stepper-nav-trigger-line-height: var(--hub-ref-line-height-sm, 1.25);--hub-stepper-controls-justify: flex-end;--hub-stepper-controls-gap: var(--hub-ref-space-2, .5rem);--hub-stepper-control-padding-y: .375rem;--hub-stepper-control-padding-x: var(--hub-ref-space-3, 1rem);--hub-stepper-control-font-size: var(--hub-ref-font-size-sm, .875rem);--hub-stepper-control-line-height: var(--hub-ref-line-height-sm, 1.25);--hub-stepper-disabled-opacity: var(--hub-sys-opacity-50, .5);--hub-stepper-sidebar-min-width: 160px;--hub-stepper-sidebar-ideal-width: 20vw;--hub-stepper-sidebar-max-width: 240px;--hub-stepper-sidebar-width: clamp( var(--hub-stepper-sidebar-min-width), var(--hub-stepper-sidebar-ideal-width), var(--hub-stepper-sidebar-max-width) );--hub-stepper-content-padding-x: 0;--hub-stepper-content-padding-y: 0;--hub-stepper-content-border-width: 0;--hub-stepper-animation-duration: var(--hub-sys-transition-duration-base, .26s);--hub-stepper-animation-easing: var(--hub-sys-transition-timing-function-base, ease);--hub-stepper-animation-distance: var(--hub-ref-space-4, 1.5rem);display:grid;grid-template-columns:1fr;grid-template-areas:\"nav\" \"content\" \"controls\";grid-template-rows:auto 1fr auto;gap:var(--hub-stepper-gap);width:100%}:host.stepper--layout-vertical{grid-template-columns:1fr;grid-template-areas:\"nav\" \"content\" \"controls\";grid-template-rows:auto 1fr auto}:host.stepper--layout-sidebar{grid-template-columns:var(--hub-stepper-sidebar-width) minmax(0,1fr);grid-template-areas:\"nav content\" \"nav controls\";grid-template-rows:1fr auto;align-items:stretch}.stepper__nav{grid-area:nav;background-color:var(--hub-stepper-nav-bg);border:var(--hub-stepper-nav-border-width) solid var(--hub-stepper-nav-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-nav-padding-y, 0) var(--hub-stepper-nav-padding-x, 0);overflow-x:auto}.stepper__nav-list{list-style:none;display:flex;gap:var(--hub-stepper-nav-gap);padding:0;margin:0;min-width:max-content}.stepper__nav-item{flex:0 0 auto}.stepper__nav-trigger{display:inline-flex;align-items:center;gap:var(--hub-stepper-nav-trigger-gap);border:1px solid transparent;border-radius:var(--hub-sys-radius-pill, 50rem);background-color:transparent;padding:var(--hub-stepper-nav-trigger-padding-y) var(--hub-stepper-nav-trigger-padding-x);cursor:pointer;color:var(--hub-stepper-nav-link-color);font-size:var(--hub-stepper-nav-trigger-font-size);line-height:var(--hub-stepper-nav-trigger-line-height)}.stepper__nav-trigger:hover:not(:disabled){color:var(--hub-stepper-nav-link-hover-color);background-color:var(--hub-stepper-nav-link-hover-bg)}.stepper__nav-trigger--current{border-color:var(--hub-stepper-nav-link-active-border-color);background-color:var(--hub-stepper-nav-link-active-bg);color:var(--hub-stepper-nav-link-active-color)}.stepper__nav-trigger--completed{color:var(--hub-stepper-nav-link-color)}.stepper__nav-trigger:disabled{color:var(--hub-stepper-nav-link-disabled-color);cursor:not-allowed}.stepper__content{grid-area:content;border:var(--hub-stepper-content-border-width) solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);background-color:var(--hub-stepper-surface-color);padding:var(--hub-stepper-content-padding-y, 0) var(--hub-stepper-content-padding-x, 0);min-width:0;position:relative;overflow:hidden}.stepper__content-panel{will-change:transform,opacity}.stepper__controls{grid-area:controls;display:flex;gap:var(--hub-stepper-controls-gap);align-items:center;justify-content:var(--hub-stepper-controls-justify)}.stepper__controls :is(button[previousButton],button[nextButton],button[submitButton],.stepper__button){border:1px solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-control-padding-y) var(--hub-stepper-control-padding-x);font-size:var(--hub-stepper-control-font-size);line-height:var(--hub-stepper-control-line-height);cursor:pointer;background-color:var(--hub-stepper-surface-color);color:var(--hub-stepper-text-color)}.stepper__button--back{background-color:var(--hub-stepper-background-color);color:var(--hub-stepper-text-color)}.stepper__button--next,.stepper__button--submit{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}.stepper__controls button[nextButton],.stepper__controls button[submitButton]{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}.stepper__controls button[previousButton]{background-color:var(--hub-stepper-background-color)}.stepper__controls :is(button[previousButton],button[nextButton],button[submitButton]):disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}:host.stepper--layout-sidebar .stepper__nav{height:100%;overflow-y:auto;overflow-x:hidden}:host.stepper--layout-sidebar .stepper__nav-list{flex-direction:column;align-items:stretch}:host.stepper--layout-sidebar .stepper__nav-item{width:100%}:host.stepper--layout-sidebar .stepper__nav-trigger{width:100%;justify-content:flex-start}:host.stepper--rtl{direction:rtl}:host.stepper--rtl .stepper__nav-list{flex-direction:row}:host.stepper--rtl.stepper--layout-sidebar .stepper__nav-list{flex-direction:column}:host.stepper--rtl.stepper--layout-sidebar .stepper__nav-trigger{justify-content:flex-end;text-align:right}.stepper__button-icon{display:inline-flex;align-items:center;line-height:1}.stepper__content--animated.stepper__content--animating .stepper__content-panel{animation-duration:var(--hub-stepper-animation-duration);animation-timing-function:var(--hub-stepper-animation-easing);animation-fill-mode:both}:host.stepper--animated.stepper--anim-fade .stepper__content--animating .stepper__content-panel{animation-name:stepper-fade-in}:host.stepper--animated:not(.stepper--anim-fade) .stepper__content--animating.stepper__content--forward .stepper__content-panel,:host.stepper--animated.stepper--anim-slide .stepper__content--animating.stepper__content--forward .stepper__content-panel{animation-name:stepper-slide-in-forward}:host.stepper--animated:not(.stepper--anim-fade) .stepper__content--animating.stepper__content--backward .stepper__content-panel,:host.stepper--animated.stepper--anim-slide .stepper__content--animating.stepper__content--backward .stepper__content-panel{animation-name:stepper-slide-in-backward}@keyframes stepper-fade-in{0%{opacity:0}to{opacity:1}}@keyframes stepper-slide-in-forward{0%{opacity:0;transform:translate(var(--hub-stepper-animation-distance))}to{opacity:1;transform:translate(0)}}@keyframes stepper-slide-in-backward{0%{opacity:0;transform:translate(calc(-1 * var(--hub-stepper-animation-distance)))}to{opacity:1;transform:translate(0)}}:host ::ng-deep button.stepper__button{border:1px solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-control-padding-y) var(--hub-stepper-control-padding-x);font-size:var(--hub-stepper-control-font-size);line-height:var(--hub-stepper-control-line-height);cursor:pointer;background-color:var(--hub-stepper-surface-color);color:var(--hub-stepper-text-color)}:host ::ng-deep button.stepper__button--back{background-color:var(--hub-stepper-background-color)}:host ::ng-deep button.stepper__button--next,:host ::ng-deep button.stepper__button--submit{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}:host ::ng-deep button.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}:host([data-variant]){--hub-stepper-accent-emphasis: color-mix(in oklch, var(--hub-stepper-accent) 80%, var(--hub-sys-color-ink, #212529));--hub-stepper-accent-subtle: color-mix(in oklch, var(--hub-stepper-accent) 12%, var(--hub-sys-surface-page, #fff));--hub-stepper-accent-on: oklch(from var(--hub-stepper-accent) clamp(0, (.62 - l) * 1000, 1) 0 h)}:host([data-variant=primary]){--hub-stepper-accent: var(--hub-sys-color-primary)}:host([data-variant=secondary]){--hub-stepper-accent: var(--hub-sys-color-secondary)}:host([data-variant=success]){--hub-stepper-accent: var(--hub-sys-color-success)}:host([data-variant=danger]){--hub-stepper-accent: var(--hub-sys-color-danger)}:host([data-variant=warning]){--hub-stepper-accent: var(--hub-sys-color-warning)}:host([data-variant=info]){--hub-stepper-accent: var(--hub-sys-color-info)}:host([data-variant=neutral]){--hub-stepper-accent: var(--hub-sys-color-neutral)}:host([data-variant=light]){--hub-stepper-accent: var(--hub-sys-color-light)}:host([data-variant=dark]){--hub-stepper-accent: var(--hub-sys-color-dark)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: UcfirstPipe, name: "ucfirst" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
413
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: StepperComponent, isStandalone: true, selector: "hub-stepper, hub-ui-stepper, ng80-stepper", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, backLabel: { classPropertyName: "backLabel", publicName: "backLabel", isSignal: true, isRequired: false, transformFunction: null }, continueLabel: { classPropertyName: "continueLabel", publicName: "continueLabel", isSignal: true, isRequired: false, transformFunction: null }, submitLabel: { classPropertyName: "submitLabel", publicName: "submitLabel", isSignal: true, isRequired: false, transformFunction: null }, truncateTitles: { classPropertyName: "truncateTitles", publicName: "truncateTitles", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { completed: "completed", previousStep: "previousStep", nextStep: "nextStep" }, host: { properties: { "class.stepper--layout-vertical": "layout() === StepperLayout.Vertical", "class.stepper--layout-sidebar": "layout() === StepperLayout.Sidebar", "class.stepper--rtl": "isRtl()", "class.stepper--truncate-titles": "truncateTitles()", "attr.data-variant": "variant() ?? null", "style.--hub-stepper-accent": "customAccent()" }, classAttribute: "stepper" }, queries: [{ propertyName: "steps", predicate: StepComponent, isSignal: true }, { propertyName: "stepperNavTpt", first: true, predicate: StepperNavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "previousButton", first: true, predicate: PreviousButtonDirective, descendants: true, isSignal: true }, { propertyName: "nextButton", first: true, predicate: NextButtonDirective, descendants: true, isSignal: true }, { propertyName: "submitButton", first: true, predicate: SubmitButtonDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n <ng-container\n [ngTemplateOutlet]=\"stepperNavTpt() || defaultNavTpt\"\n [ngTemplateOutletContext]=\"{ steps: steps(), currentIndex: currentIndex() }\"\n ></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div\n class=\"stepper__content\"\n [class.stepper__content--animated]=\"hasAnimationClass()\"\n [class.stepper__content--animating]=\"contentAnimating()\"\n [class.stepper__content--forward]=\"isForwardAnimation()\"\n [class.stepper__content--backward]=\"isBackwardAnimation()\"\n>\n <div class=\"stepper__content-panel\" (animationend)=\"onContentAnimationEnd($event)\">\n <ng-container\n [ngTemplateOutlet]=\"currentStep?.innerTemplate()\"\n ></ng-container>\n </div>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n @if (currentIndex() > 0) {\n <ng-content select=\"button[previousButton]\"></ng-content>\n @if (!previousButton()) {\n <button\n class=\"stepper__button stepper__button--back\"\n (click)=\"goToPrevious()\"\n [disabled]=\"!canNavigateTo(currentIndex() - 1)\"\n >\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n }\n {{ backLabel() ?? ('BACK' | translate | ucfirst) }}\n </button>\n }\n }\n\n @if (currentIndex() < steps().length - 1) {\n <ng-content select=\"button[nextButton]\"></ng-content>\n @if (!nextButton()) {\n <button\n class=\"stepper__button stepper__button--next\"\n (click)=\"goToNext()\"\n [disabled]=\"!canNavigateTo(currentIndex() + 1)\"\n >\n {{ continueLabel() ?? ('CONTINUE' | translate | ucfirst) }}\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n }\n </button>\n }\n }\n\n @if (currentIndex() === steps().length - 1) {\n <ng-content select=\"button[submitButton]\"></ng-content>\n @if (!submitButton()) {\n <button\n class=\"stepper__button stepper__button--submit\"\n (click)=\"complete()\"\n [disabled]=\"!isValidStepIndex(currentIndex())\"\n >\n {{ submitLabel() ?? ('SUBMIT' | translate | ucfirst) }}\n </button>\n }\n }\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n <ul class=\"stepper__nav-list\">\n @for (step of steps; track $index; let i = $index) {\n <li class=\"stepper__nav-item\">\n <ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tdefaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title(),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n ></ng-container>\n </li>\n }\n </ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n #defaultNavTriggerTpt\n let-title=\"title\"\n let-index=\"index\"\n let-isCurrent=\"isCurrent\"\n let-isCompleted=\"isCompleted\"\n >\n <button\n class=\"stepper__nav-trigger\"\n [class.stepper__nav-trigger--current]=\"isCurrent\"\n [class.stepper__nav-trigger--completed]=\"isCompleted\"\n [disabled]=\"!canNavigateTo(index)\"\n (click)=\"goTo(index)\"\n >\n @if (title) {\n <span class=\"stepper__nav-title\" [hubOverflowTooltip]=\"title\">{{ title }}</span>\n } @else {\n <span class=\"stepper__nav-title\" [hubOverflowTooltip]=\"'Step ' + (index + 1)\">Step {{ index + 1 }}</span>\n }\n </button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n", styles: ["@charset \"UTF-8\";:host{--hub-stepper-accent: var(--hub-sys-color-primary, #009ef7);--hub-stepper-accent-emphasis: color-mix(in oklch, var(--hub-stepper-accent) 80%, var(--hub-sys-color-ink, #212529));--hub-stepper-accent-subtle: color-mix(in oklch, var(--hub-stepper-accent) 12%, var(--hub-sys-surface-page, #fff));--hub-stepper-accent-on: oklch(from var(--hub-stepper-accent) clamp(0, (.62 - l) * 1000, 1) 0 h);--hub-stepper-primary-color: var(--hub-stepper-accent);--hub-stepper-background-color: var(--hub-sys-surface-elevated, #f8f9fa);--hub-stepper-text-color: var(--hub-sys-text-primary, #212529);--hub-stepper-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-stepper-surface-color: var(--hub-sys-surface-page, #ffffff);--hub-stepper-nav-bg: var(--hub-sys-surface-page, transparent);--hub-stepper-nav-padding-x: 0;--hub-stepper-nav-padding-y: 0;--hub-stepper-nav-border-width: 0;--hub-stepper-nav-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-stepper-nav-link-color: var(--hub-sys-text-primary, #212529);--hub-stepper-nav-link-hover-color: var(--hub-sys-link-hover-color, #0a58ca);--hub-stepper-nav-link-hover-bg: var(--hub-sys-state-hover-bg, rgba(0, 0, 0, .075));--hub-stepper-nav-link-active-color: var(--hub-stepper-accent-on, #ffffff);--hub-stepper-nav-link-active-bg: var(--hub-stepper-accent);--hub-stepper-nav-link-active-border-color: var(--hub-stepper-accent);--hub-stepper-nav-link-disabled-color: var(--hub-sys-text-muted, #6c757d);--hub-stepper-gap: var(--hub-ref-space-3, 1rem);--hub-stepper-nav-gap: var(--hub-ref-space-1, .25rem);--hub-stepper-nav-trigger-gap: var(--hub-ref-space-1, .25rem);--hub-stepper-nav-trigger-padding-y: var(--hub-ref-space-2, .5rem);--hub-stepper-nav-trigger-padding-x: var(--hub-ref-space-3, 1rem);--hub-stepper-nav-trigger-font-size: var(--hub-ref-font-size-sm, .875rem);--hub-stepper-nav-trigger-line-height: var(--hub-ref-line-height-sm, 1.25);--hub-stepper-controls-justify: flex-end;--hub-stepper-controls-gap: var(--hub-ref-space-2, .5rem);--hub-stepper-control-padding-y: .375rem;--hub-stepper-control-padding-x: var(--hub-ref-space-3, 1rem);--hub-stepper-control-font-size: var(--hub-ref-font-size-sm, .875rem);--hub-stepper-control-line-height: var(--hub-ref-line-height-sm, 1.25);--hub-stepper-disabled-opacity: var(--hub-sys-opacity-50, .5);--hub-stepper-sidebar-min-width: 160px;--hub-stepper-sidebar-ideal-width: 20vw;--hub-stepper-sidebar-max-width: 240px;--hub-stepper-sidebar-width: clamp( var(--hub-stepper-sidebar-min-width), var(--hub-stepper-sidebar-ideal-width), var(--hub-stepper-sidebar-max-width) );--hub-stepper-content-padding-x: 0;--hub-stepper-content-padding-y: 0;--hub-stepper-content-border-width: 0;--hub-stepper-animation-duration: var(--hub-sys-transition-duration-base, .26s);--hub-stepper-animation-easing: var(--hub-sys-transition-timing-function-base, ease);--hub-stepper-animation-distance: var(--hub-ref-space-4, 1.5rem);display:grid;grid-template-columns:1fr;grid-template-areas:\"nav\" \"content\" \"controls\";grid-template-rows:auto 1fr auto;gap:var(--hub-stepper-gap);width:100%}:host.stepper--layout-vertical{grid-template-columns:1fr;grid-template-areas:\"nav\" \"content\" \"controls\";grid-template-rows:auto 1fr auto}:host.stepper--layout-sidebar{grid-template-columns:var(--hub-stepper-sidebar-width) minmax(0,1fr);grid-template-areas:\"nav content\" \"nav controls\";grid-template-rows:1fr auto;align-items:stretch}.stepper__nav{grid-area:nav;background-color:var(--hub-stepper-nav-bg);border:var(--hub-stepper-nav-border-width) solid var(--hub-stepper-nav-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-nav-padding-y, 0) var(--hub-stepper-nav-padding-x, 0);overflow-x:auto}.stepper__nav-list{list-style:none;display:flex;gap:var(--hub-stepper-nav-gap);padding:0;margin:0;min-width:max-content}.stepper__nav-item{flex:0 0 auto}.stepper__nav-trigger{display:inline-flex;align-items:center;gap:var(--hub-stepper-nav-trigger-gap);border:1px solid transparent;border-radius:var(--hub-sys-radius-pill, 50rem);background-color:transparent;padding:var(--hub-stepper-nav-trigger-padding-y) var(--hub-stepper-nav-trigger-padding-x);cursor:pointer;color:var(--hub-stepper-nav-link-color);font-size:var(--hub-stepper-nav-trigger-font-size);line-height:var(--hub-stepper-nav-trigger-line-height)}.stepper__nav-trigger:hover:not(:disabled){color:var(--hub-stepper-nav-link-hover-color);background-color:var(--hub-stepper-nav-link-hover-bg)}.stepper__nav-trigger--current{border-color:var(--hub-stepper-nav-link-active-border-color);background-color:var(--hub-stepper-nav-link-active-bg);color:var(--hub-stepper-nav-link-active-color)}.stepper__nav-trigger--completed{color:var(--hub-stepper-nav-link-color)}.stepper__nav-trigger:disabled{color:var(--hub-stepper-nav-link-disabled-color);cursor:not-allowed}.stepper__content{grid-area:content;border:var(--hub-stepper-content-border-width) solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);background-color:var(--hub-stepper-surface-color);padding:var(--hub-stepper-content-padding-y, 0) var(--hub-stepper-content-padding-x, 0);min-width:0;position:relative;overflow:hidden}.stepper__content-panel{will-change:transform,opacity}.stepper__controls{grid-area:controls;display:flex;gap:var(--hub-stepper-controls-gap);align-items:center;justify-content:var(--hub-stepper-controls-justify)}.stepper__controls :is(button[previousButton],button[nextButton],button[submitButton],.stepper__button){border:1px solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-control-padding-y) var(--hub-stepper-control-padding-x);font-size:var(--hub-stepper-control-font-size);line-height:var(--hub-stepper-control-line-height);cursor:pointer;background-color:var(--hub-stepper-surface-color);color:var(--hub-stepper-text-color)}.stepper__button--back{background-color:var(--hub-stepper-background-color);color:var(--hub-stepper-text-color)}.stepper__button--next,.stepper__button--submit{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}.stepper__controls button[nextButton],.stepper__controls button[submitButton]{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}.stepper__controls button[previousButton]{background-color:var(--hub-stepper-background-color)}.stepper__controls :is(button[previousButton],button[nextButton],button[submitButton]):disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}:host.stepper--layout-sidebar .stepper__nav{height:100%;overflow-y:auto;overflow-x:hidden}:host.stepper--layout-sidebar .stepper__nav-list{flex-direction:column;align-items:stretch}:host.stepper--layout-sidebar .stepper__nav-item{width:100%}:host.stepper--layout-sidebar .stepper__nav-trigger{width:100%;justify-content:flex-start}:host.stepper--rtl{direction:rtl}:host.stepper--rtl .stepper__nav-list{flex-direction:row}:host.stepper--rtl.stepper--layout-sidebar .stepper__nav-list{flex-direction:column}:host.stepper--rtl.stepper--layout-sidebar .stepper__nav-trigger{justify-content:flex-end;text-align:right}.stepper__button-icon{display:inline-flex;align-items:center;line-height:1}.stepper__content--animated.stepper__content--animating .stepper__content-panel{animation-duration:var(--hub-stepper-animation-duration);animation-timing-function:var(--hub-stepper-animation-easing);animation-fill-mode:both}:host.stepper--animated.stepper--anim-fade .stepper__content--animating .stepper__content-panel{animation-name:stepper-fade-in}:host.stepper--animated:not(.stepper--anim-fade) .stepper__content--animating.stepper__content--forward .stepper__content-panel,:host.stepper--animated.stepper--anim-slide .stepper__content--animating.stepper__content--forward .stepper__content-panel{animation-name:stepper-slide-in-forward}:host.stepper--animated:not(.stepper--anim-fade) .stepper__content--animating.stepper__content--backward .stepper__content-panel,:host.stepper--animated.stepper--anim-slide .stepper__content--animating.stepper__content--backward .stepper__content-panel{animation-name:stepper-slide-in-backward}@keyframes stepper-fade-in{0%{opacity:0}to{opacity:1}}@keyframes stepper-slide-in-forward{0%{opacity:0;transform:translate(var(--hub-stepper-animation-distance))}to{opacity:1;transform:translate(0)}}@keyframes stepper-slide-in-backward{0%{opacity:0;transform:translate(calc(-1 * var(--hub-stepper-animation-distance)))}to{opacity:1;transform:translate(0)}}:host ::ng-deep button.stepper__button{border:1px solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-control-padding-y) var(--hub-stepper-control-padding-x);font-size:var(--hub-stepper-control-font-size);line-height:var(--hub-stepper-control-line-height);cursor:pointer;background-color:var(--hub-stepper-surface-color);color:var(--hub-stepper-text-color)}:host ::ng-deep button.stepper__button--back{background-color:var(--hub-stepper-background-color)}:host ::ng-deep button.stepper__button--next,:host ::ng-deep button.stepper__button--submit{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}:host ::ng-deep button.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}:host([data-variant]){--hub-stepper-accent-emphasis: color-mix(in oklch, var(--hub-stepper-accent) 80%, var(--hub-sys-color-ink, #212529));--hub-stepper-accent-subtle: color-mix(in oklch, var(--hub-stepper-accent) 12%, var(--hub-sys-surface-page, #fff));--hub-stepper-accent-on: oklch(from var(--hub-stepper-accent) clamp(0, (.62 - l) * 1000, 1) 0 h)}:host([data-variant=primary]){--hub-stepper-accent: var(--hub-sys-color-primary)}:host([data-variant=secondary]){--hub-stepper-accent: var(--hub-sys-color-secondary)}:host([data-variant=success]){--hub-stepper-accent: var(--hub-sys-color-success)}:host([data-variant=danger]){--hub-stepper-accent: var(--hub-sys-color-danger)}:host([data-variant=warning]){--hub-stepper-accent: var(--hub-sys-color-warning)}:host([data-variant=info]){--hub-stepper-accent: var(--hub-sys-color-info)}:host([data-variant=neutral]){--hub-stepper-accent: var(--hub-sys-color-neutral)}:host([data-variant=light]){--hub-stepper-accent: var(--hub-sys-color-light)}:host([data-variant=dark]){--hub-stepper-accent: var(--hub-sys-color-dark)}:host(.stepper--truncate-titles) .stepper__nav-title{display:inline-block;max-inline-size:var(--hub-stepper-nav-title-max-width, 12rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: HubOverflowTooltipDirective, selector: "[hubOverflowTooltip]", inputs: ["hubOverflowTooltip", "placement"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: UcfirstPipe, name: "ucfirst" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
405
414
  }
406
415
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperComponent, decorators: [{
407
416
  type: Component,
408
- args: [{ selector: 'hub-stepper, hub-ui-stepper, ng80-stepper', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, TranslatePipe, UcfirstPipe], host: {
417
+ args: [{ selector: 'hub-stepper, hub-ui-stepper, ng80-stepper', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, TranslatePipe, UcfirstPipe, HubOverflowTooltipDirective], host: {
409
418
  class: 'stepper',
410
419
  '[class.stepper--layout-vertical]': 'layout() === StepperLayout.Vertical',
411
420
  '[class.stepper--layout-sidebar]': 'layout() === StepperLayout.Sidebar',
412
421
  '[class.stepper--rtl]': 'isRtl()',
422
+ '[class.stepper--truncate-titles]': 'truncateTitles()',
413
423
  '[attr.data-variant]': 'variant() ?? null',
414
424
  '[style.--hub-stepper-accent]': 'customAccent()'
415
- }, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n <ng-container\n [ngTemplateOutlet]=\"stepperNavTpt() || defaultNavTpt\"\n [ngTemplateOutletContext]=\"{ steps: steps(), currentIndex: currentIndex() }\"\n ></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div\n class=\"stepper__content\"\n [class.stepper__content--animated]=\"hasAnimationClass()\"\n [class.stepper__content--animating]=\"contentAnimating()\"\n [class.stepper__content--forward]=\"isForwardAnimation()\"\n [class.stepper__content--backward]=\"isBackwardAnimation()\"\n>\n <div class=\"stepper__content-panel\" (animationend)=\"onContentAnimationEnd($event)\">\n <ng-container\n [ngTemplateOutlet]=\"currentStep?.innerTemplate()\"\n ></ng-container>\n </div>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n @if (currentIndex() > 0) {\n <ng-content select=\"button[previousButton]\"></ng-content>\n @if (!previousButton()) {\n <button\n class=\"stepper__button stepper__button--back\"\n (click)=\"goToPrevious()\"\n [disabled]=\"!canNavigateTo(currentIndex() - 1)\"\n >\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n }\n {{ backLabel() ?? ('BACK' | translate | ucfirst) }}\n </button>\n }\n }\n\n @if (currentIndex() < steps().length - 1) {\n <ng-content select=\"button[nextButton]\"></ng-content>\n @if (!nextButton()) {\n <button\n class=\"stepper__button stepper__button--next\"\n (click)=\"goToNext()\"\n [disabled]=\"!canNavigateTo(currentIndex() + 1)\"\n >\n {{ continueLabel() ?? ('CONTINUE' | translate | ucfirst) }}\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n }\n </button>\n }\n }\n\n @if (currentIndex() === steps().length - 1) {\n <ng-content select=\"button[submitButton]\"></ng-content>\n @if (!submitButton()) {\n <button\n class=\"stepper__button stepper__button--submit\"\n (click)=\"complete()\"\n [disabled]=\"!isValidStepIndex(currentIndex())\"\n >\n {{ submitLabel() ?? ('SUBMIT' | translate | ucfirst) }}\n </button>\n }\n }\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n <ul class=\"stepper__nav-list\">\n @for (step of steps; track $index; let i = $index) {\n <li class=\"stepper__nav-item\">\n <ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tdefaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title(),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n ></ng-container>\n </li>\n }\n </ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n #defaultNavTriggerTpt\n let-title=\"title\"\n let-index=\"index\"\n let-isCurrent=\"isCurrent\"\n let-isCompleted=\"isCompleted\"\n >\n <button\n class=\"stepper__nav-trigger\"\n [class.stepper__nav-trigger--current]=\"isCurrent\"\n [class.stepper__nav-trigger--completed]=\"isCompleted\"\n [disabled]=\"!canNavigateTo(index)\"\n (click)=\"goTo(index)\"\n >\n @if (title) {\n <span class=\"stepper__nav-title\">{{ title }}</span>\n } @else {\n <span class=\"stepper__nav-title\">Step {{ index + 1 }}</span>\n }\n </button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n", styles: ["@charset \"UTF-8\";:host{--hub-stepper-accent: var(--hub-sys-color-primary, #009ef7);--hub-stepper-accent-emphasis: color-mix(in oklch, var(--hub-stepper-accent) 80%, var(--hub-sys-color-ink, #212529));--hub-stepper-accent-subtle: color-mix(in oklch, var(--hub-stepper-accent) 12%, var(--hub-sys-surface-page, #fff));--hub-stepper-accent-on: oklch(from var(--hub-stepper-accent) clamp(0, (.62 - l) * 1000, 1) 0 h);--hub-stepper-primary-color: var(--hub-stepper-accent);--hub-stepper-background-color: var(--hub-sys-surface-elevated, #f8f9fa);--hub-stepper-text-color: var(--hub-sys-text-primary, #212529);--hub-stepper-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-stepper-surface-color: var(--hub-sys-surface-page, #ffffff);--hub-stepper-nav-bg: var(--hub-sys-surface-page, transparent);--hub-stepper-nav-padding-x: 0;--hub-stepper-nav-padding-y: 0;--hub-stepper-nav-border-width: 0;--hub-stepper-nav-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-stepper-nav-link-color: var(--hub-sys-text-primary, #212529);--hub-stepper-nav-link-hover-color: var(--hub-sys-link-hover-color, #0a58ca);--hub-stepper-nav-link-hover-bg: var(--hub-sys-state-hover-bg, rgba(0, 0, 0, .075));--hub-stepper-nav-link-active-color: var(--hub-stepper-accent-on, #ffffff);--hub-stepper-nav-link-active-bg: var(--hub-stepper-accent);--hub-stepper-nav-link-active-border-color: var(--hub-stepper-accent);--hub-stepper-nav-link-disabled-color: var(--hub-sys-text-muted, #6c757d);--hub-stepper-gap: var(--hub-ref-space-3, 1rem);--hub-stepper-nav-gap: var(--hub-ref-space-1, .25rem);--hub-stepper-nav-trigger-gap: var(--hub-ref-space-1, .25rem);--hub-stepper-nav-trigger-padding-y: var(--hub-ref-space-2, .5rem);--hub-stepper-nav-trigger-padding-x: var(--hub-ref-space-3, 1rem);--hub-stepper-nav-trigger-font-size: var(--hub-ref-font-size-sm, .875rem);--hub-stepper-nav-trigger-line-height: var(--hub-ref-line-height-sm, 1.25);--hub-stepper-controls-justify: flex-end;--hub-stepper-controls-gap: var(--hub-ref-space-2, .5rem);--hub-stepper-control-padding-y: .375rem;--hub-stepper-control-padding-x: var(--hub-ref-space-3, 1rem);--hub-stepper-control-font-size: var(--hub-ref-font-size-sm, .875rem);--hub-stepper-control-line-height: var(--hub-ref-line-height-sm, 1.25);--hub-stepper-disabled-opacity: var(--hub-sys-opacity-50, .5);--hub-stepper-sidebar-min-width: 160px;--hub-stepper-sidebar-ideal-width: 20vw;--hub-stepper-sidebar-max-width: 240px;--hub-stepper-sidebar-width: clamp( var(--hub-stepper-sidebar-min-width), var(--hub-stepper-sidebar-ideal-width), var(--hub-stepper-sidebar-max-width) );--hub-stepper-content-padding-x: 0;--hub-stepper-content-padding-y: 0;--hub-stepper-content-border-width: 0;--hub-stepper-animation-duration: var(--hub-sys-transition-duration-base, .26s);--hub-stepper-animation-easing: var(--hub-sys-transition-timing-function-base, ease);--hub-stepper-animation-distance: var(--hub-ref-space-4, 1.5rem);display:grid;grid-template-columns:1fr;grid-template-areas:\"nav\" \"content\" \"controls\";grid-template-rows:auto 1fr auto;gap:var(--hub-stepper-gap);width:100%}:host.stepper--layout-vertical{grid-template-columns:1fr;grid-template-areas:\"nav\" \"content\" \"controls\";grid-template-rows:auto 1fr auto}:host.stepper--layout-sidebar{grid-template-columns:var(--hub-stepper-sidebar-width) minmax(0,1fr);grid-template-areas:\"nav content\" \"nav controls\";grid-template-rows:1fr auto;align-items:stretch}.stepper__nav{grid-area:nav;background-color:var(--hub-stepper-nav-bg);border:var(--hub-stepper-nav-border-width) solid var(--hub-stepper-nav-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-nav-padding-y, 0) var(--hub-stepper-nav-padding-x, 0);overflow-x:auto}.stepper__nav-list{list-style:none;display:flex;gap:var(--hub-stepper-nav-gap);padding:0;margin:0;min-width:max-content}.stepper__nav-item{flex:0 0 auto}.stepper__nav-trigger{display:inline-flex;align-items:center;gap:var(--hub-stepper-nav-trigger-gap);border:1px solid transparent;border-radius:var(--hub-sys-radius-pill, 50rem);background-color:transparent;padding:var(--hub-stepper-nav-trigger-padding-y) var(--hub-stepper-nav-trigger-padding-x);cursor:pointer;color:var(--hub-stepper-nav-link-color);font-size:var(--hub-stepper-nav-trigger-font-size);line-height:var(--hub-stepper-nav-trigger-line-height)}.stepper__nav-trigger:hover:not(:disabled){color:var(--hub-stepper-nav-link-hover-color);background-color:var(--hub-stepper-nav-link-hover-bg)}.stepper__nav-trigger--current{border-color:var(--hub-stepper-nav-link-active-border-color);background-color:var(--hub-stepper-nav-link-active-bg);color:var(--hub-stepper-nav-link-active-color)}.stepper__nav-trigger--completed{color:var(--hub-stepper-nav-link-color)}.stepper__nav-trigger:disabled{color:var(--hub-stepper-nav-link-disabled-color);cursor:not-allowed}.stepper__content{grid-area:content;border:var(--hub-stepper-content-border-width) solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);background-color:var(--hub-stepper-surface-color);padding:var(--hub-stepper-content-padding-y, 0) var(--hub-stepper-content-padding-x, 0);min-width:0;position:relative;overflow:hidden}.stepper__content-panel{will-change:transform,opacity}.stepper__controls{grid-area:controls;display:flex;gap:var(--hub-stepper-controls-gap);align-items:center;justify-content:var(--hub-stepper-controls-justify)}.stepper__controls :is(button[previousButton],button[nextButton],button[submitButton],.stepper__button){border:1px solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-control-padding-y) var(--hub-stepper-control-padding-x);font-size:var(--hub-stepper-control-font-size);line-height:var(--hub-stepper-control-line-height);cursor:pointer;background-color:var(--hub-stepper-surface-color);color:var(--hub-stepper-text-color)}.stepper__button--back{background-color:var(--hub-stepper-background-color);color:var(--hub-stepper-text-color)}.stepper__button--next,.stepper__button--submit{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}.stepper__controls button[nextButton],.stepper__controls button[submitButton]{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}.stepper__controls button[previousButton]{background-color:var(--hub-stepper-background-color)}.stepper__controls :is(button[previousButton],button[nextButton],button[submitButton]):disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}:host.stepper--layout-sidebar .stepper__nav{height:100%;overflow-y:auto;overflow-x:hidden}:host.stepper--layout-sidebar .stepper__nav-list{flex-direction:column;align-items:stretch}:host.stepper--layout-sidebar .stepper__nav-item{width:100%}:host.stepper--layout-sidebar .stepper__nav-trigger{width:100%;justify-content:flex-start}:host.stepper--rtl{direction:rtl}:host.stepper--rtl .stepper__nav-list{flex-direction:row}:host.stepper--rtl.stepper--layout-sidebar .stepper__nav-list{flex-direction:column}:host.stepper--rtl.stepper--layout-sidebar .stepper__nav-trigger{justify-content:flex-end;text-align:right}.stepper__button-icon{display:inline-flex;align-items:center;line-height:1}.stepper__content--animated.stepper__content--animating .stepper__content-panel{animation-duration:var(--hub-stepper-animation-duration);animation-timing-function:var(--hub-stepper-animation-easing);animation-fill-mode:both}:host.stepper--animated.stepper--anim-fade .stepper__content--animating .stepper__content-panel{animation-name:stepper-fade-in}:host.stepper--animated:not(.stepper--anim-fade) .stepper__content--animating.stepper__content--forward .stepper__content-panel,:host.stepper--animated.stepper--anim-slide .stepper__content--animating.stepper__content--forward .stepper__content-panel{animation-name:stepper-slide-in-forward}:host.stepper--animated:not(.stepper--anim-fade) .stepper__content--animating.stepper__content--backward .stepper__content-panel,:host.stepper--animated.stepper--anim-slide .stepper__content--animating.stepper__content--backward .stepper__content-panel{animation-name:stepper-slide-in-backward}@keyframes stepper-fade-in{0%{opacity:0}to{opacity:1}}@keyframes stepper-slide-in-forward{0%{opacity:0;transform:translate(var(--hub-stepper-animation-distance))}to{opacity:1;transform:translate(0)}}@keyframes stepper-slide-in-backward{0%{opacity:0;transform:translate(calc(-1 * var(--hub-stepper-animation-distance)))}to{opacity:1;transform:translate(0)}}:host ::ng-deep button.stepper__button{border:1px solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-control-padding-y) var(--hub-stepper-control-padding-x);font-size:var(--hub-stepper-control-font-size);line-height:var(--hub-stepper-control-line-height);cursor:pointer;background-color:var(--hub-stepper-surface-color);color:var(--hub-stepper-text-color)}:host ::ng-deep button.stepper__button--back{background-color:var(--hub-stepper-background-color)}:host ::ng-deep button.stepper__button--next,:host ::ng-deep button.stepper__button--submit{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}:host ::ng-deep button.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}:host([data-variant]){--hub-stepper-accent-emphasis: color-mix(in oklch, var(--hub-stepper-accent) 80%, var(--hub-sys-color-ink, #212529));--hub-stepper-accent-subtle: color-mix(in oklch, var(--hub-stepper-accent) 12%, var(--hub-sys-surface-page, #fff));--hub-stepper-accent-on: oklch(from var(--hub-stepper-accent) clamp(0, (.62 - l) * 1000, 1) 0 h)}:host([data-variant=primary]){--hub-stepper-accent: var(--hub-sys-color-primary)}:host([data-variant=secondary]){--hub-stepper-accent: var(--hub-sys-color-secondary)}:host([data-variant=success]){--hub-stepper-accent: var(--hub-sys-color-success)}:host([data-variant=danger]){--hub-stepper-accent: var(--hub-sys-color-danger)}:host([data-variant=warning]){--hub-stepper-accent: var(--hub-sys-color-warning)}:host([data-variant=info]){--hub-stepper-accent: var(--hub-sys-color-info)}:host([data-variant=neutral]){--hub-stepper-accent: var(--hub-sys-color-neutral)}:host([data-variant=light]){--hub-stepper-accent: var(--hub-sys-color-light)}:host([data-variant=dark]){--hub-stepper-accent: var(--hub-sys-color-dark)}\n"] }]
416
- }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], backLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "backLabel", required: false }] }], continueLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "continueLabel", required: false }] }], submitLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitLabel", required: false }] }], completed: [{ type: i0.Output, args: ["completed"] }], previousStep: [{ type: i0.Output, args: ["previousStep"] }], nextStep: [{ type: i0.Output, args: ["nextStep"] }], steps: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StepComponent), { isSignal: true }] }], stepperNavTpt: [{ type: i0.ContentChild, args: [i0.forwardRef(() => StepperNavDirective), { ...{ read: TemplateRef }, isSignal: true }] }], previousButton: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PreviousButtonDirective), { isSignal: true }] }], nextButton: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NextButtonDirective), { isSignal: true }] }], submitButton: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SubmitButtonDirective), { isSignal: true }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
425
+ }, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n <ng-container\n [ngTemplateOutlet]=\"stepperNavTpt() || defaultNavTpt\"\n [ngTemplateOutletContext]=\"{ steps: steps(), currentIndex: currentIndex() }\"\n ></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div\n class=\"stepper__content\"\n [class.stepper__content--animated]=\"hasAnimationClass()\"\n [class.stepper__content--animating]=\"contentAnimating()\"\n [class.stepper__content--forward]=\"isForwardAnimation()\"\n [class.stepper__content--backward]=\"isBackwardAnimation()\"\n>\n <div class=\"stepper__content-panel\" (animationend)=\"onContentAnimationEnd($event)\">\n <ng-container\n [ngTemplateOutlet]=\"currentStep?.innerTemplate()\"\n ></ng-container>\n </div>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n @if (currentIndex() > 0) {\n <ng-content select=\"button[previousButton]\"></ng-content>\n @if (!previousButton()) {\n <button\n class=\"stepper__button stepper__button--back\"\n (click)=\"goToPrevious()\"\n [disabled]=\"!canNavigateTo(currentIndex() - 1)\"\n >\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n }\n {{ backLabel() ?? ('BACK' | translate | ucfirst) }}\n </button>\n }\n }\n\n @if (currentIndex() < steps().length - 1) {\n <ng-content select=\"button[nextButton]\"></ng-content>\n @if (!nextButton()) {\n <button\n class=\"stepper__button stepper__button--next\"\n (click)=\"goToNext()\"\n [disabled]=\"!canNavigateTo(currentIndex() + 1)\"\n >\n {{ continueLabel() ?? ('CONTINUE' | translate | ucfirst) }}\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n }\n </button>\n }\n }\n\n @if (currentIndex() === steps().length - 1) {\n <ng-content select=\"button[submitButton]\"></ng-content>\n @if (!submitButton()) {\n <button\n class=\"stepper__button stepper__button--submit\"\n (click)=\"complete()\"\n [disabled]=\"!isValidStepIndex(currentIndex())\"\n >\n {{ submitLabel() ?? ('SUBMIT' | translate | ucfirst) }}\n </button>\n }\n }\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n <ul class=\"stepper__nav-list\">\n @for (step of steps; track $index; let i = $index) {\n <li class=\"stepper__nav-item\">\n <ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tdefaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title(),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n ></ng-container>\n </li>\n }\n </ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n #defaultNavTriggerTpt\n let-title=\"title\"\n let-index=\"index\"\n let-isCurrent=\"isCurrent\"\n let-isCompleted=\"isCompleted\"\n >\n <button\n class=\"stepper__nav-trigger\"\n [class.stepper__nav-trigger--current]=\"isCurrent\"\n [class.stepper__nav-trigger--completed]=\"isCompleted\"\n [disabled]=\"!canNavigateTo(index)\"\n (click)=\"goTo(index)\"\n >\n @if (title) {\n <span class=\"stepper__nav-title\" [hubOverflowTooltip]=\"title\">{{ title }}</span>\n } @else {\n <span class=\"stepper__nav-title\" [hubOverflowTooltip]=\"'Step ' + (index + 1)\">Step {{ index + 1 }}</span>\n }\n </button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n", styles: ["@charset \"UTF-8\";:host{--hub-stepper-accent: var(--hub-sys-color-primary, #009ef7);--hub-stepper-accent-emphasis: color-mix(in oklch, var(--hub-stepper-accent) 80%, var(--hub-sys-color-ink, #212529));--hub-stepper-accent-subtle: color-mix(in oklch, var(--hub-stepper-accent) 12%, var(--hub-sys-surface-page, #fff));--hub-stepper-accent-on: oklch(from var(--hub-stepper-accent) clamp(0, (.62 - l) * 1000, 1) 0 h);--hub-stepper-primary-color: var(--hub-stepper-accent);--hub-stepper-background-color: var(--hub-sys-surface-elevated, #f8f9fa);--hub-stepper-text-color: var(--hub-sys-text-primary, #212529);--hub-stepper-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-stepper-surface-color: var(--hub-sys-surface-page, #ffffff);--hub-stepper-nav-bg: var(--hub-sys-surface-page, transparent);--hub-stepper-nav-padding-x: 0;--hub-stepper-nav-padding-y: 0;--hub-stepper-nav-border-width: 0;--hub-stepper-nav-border-color: var(--hub-sys-border-color-default, #dee2e6);--hub-stepper-nav-link-color: var(--hub-sys-text-primary, #212529);--hub-stepper-nav-link-hover-color: var(--hub-sys-link-hover-color, #0a58ca);--hub-stepper-nav-link-hover-bg: var(--hub-sys-state-hover-bg, rgba(0, 0, 0, .075));--hub-stepper-nav-link-active-color: var(--hub-stepper-accent-on, #ffffff);--hub-stepper-nav-link-active-bg: var(--hub-stepper-accent);--hub-stepper-nav-link-active-border-color: var(--hub-stepper-accent);--hub-stepper-nav-link-disabled-color: var(--hub-sys-text-muted, #6c757d);--hub-stepper-gap: var(--hub-ref-space-3, 1rem);--hub-stepper-nav-gap: var(--hub-ref-space-1, .25rem);--hub-stepper-nav-trigger-gap: var(--hub-ref-space-1, .25rem);--hub-stepper-nav-trigger-padding-y: var(--hub-ref-space-2, .5rem);--hub-stepper-nav-trigger-padding-x: var(--hub-ref-space-3, 1rem);--hub-stepper-nav-trigger-font-size: var(--hub-ref-font-size-sm, .875rem);--hub-stepper-nav-trigger-line-height: var(--hub-ref-line-height-sm, 1.25);--hub-stepper-controls-justify: flex-end;--hub-stepper-controls-gap: var(--hub-ref-space-2, .5rem);--hub-stepper-control-padding-y: .375rem;--hub-stepper-control-padding-x: var(--hub-ref-space-3, 1rem);--hub-stepper-control-font-size: var(--hub-ref-font-size-sm, .875rem);--hub-stepper-control-line-height: var(--hub-ref-line-height-sm, 1.25);--hub-stepper-disabled-opacity: var(--hub-sys-opacity-50, .5);--hub-stepper-sidebar-min-width: 160px;--hub-stepper-sidebar-ideal-width: 20vw;--hub-stepper-sidebar-max-width: 240px;--hub-stepper-sidebar-width: clamp( var(--hub-stepper-sidebar-min-width), var(--hub-stepper-sidebar-ideal-width), var(--hub-stepper-sidebar-max-width) );--hub-stepper-content-padding-x: 0;--hub-stepper-content-padding-y: 0;--hub-stepper-content-border-width: 0;--hub-stepper-animation-duration: var(--hub-sys-transition-duration-base, .26s);--hub-stepper-animation-easing: var(--hub-sys-transition-timing-function-base, ease);--hub-stepper-animation-distance: var(--hub-ref-space-4, 1.5rem);display:grid;grid-template-columns:1fr;grid-template-areas:\"nav\" \"content\" \"controls\";grid-template-rows:auto 1fr auto;gap:var(--hub-stepper-gap);width:100%}:host.stepper--layout-vertical{grid-template-columns:1fr;grid-template-areas:\"nav\" \"content\" \"controls\";grid-template-rows:auto 1fr auto}:host.stepper--layout-sidebar{grid-template-columns:var(--hub-stepper-sidebar-width) minmax(0,1fr);grid-template-areas:\"nav content\" \"nav controls\";grid-template-rows:1fr auto;align-items:stretch}.stepper__nav{grid-area:nav;background-color:var(--hub-stepper-nav-bg);border:var(--hub-stepper-nav-border-width) solid var(--hub-stepper-nav-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-nav-padding-y, 0) var(--hub-stepper-nav-padding-x, 0);overflow-x:auto}.stepper__nav-list{list-style:none;display:flex;gap:var(--hub-stepper-nav-gap);padding:0;margin:0;min-width:max-content}.stepper__nav-item{flex:0 0 auto}.stepper__nav-trigger{display:inline-flex;align-items:center;gap:var(--hub-stepper-nav-trigger-gap);border:1px solid transparent;border-radius:var(--hub-sys-radius-pill, 50rem);background-color:transparent;padding:var(--hub-stepper-nav-trigger-padding-y) var(--hub-stepper-nav-trigger-padding-x);cursor:pointer;color:var(--hub-stepper-nav-link-color);font-size:var(--hub-stepper-nav-trigger-font-size);line-height:var(--hub-stepper-nav-trigger-line-height)}.stepper__nav-trigger:hover:not(:disabled){color:var(--hub-stepper-nav-link-hover-color);background-color:var(--hub-stepper-nav-link-hover-bg)}.stepper__nav-trigger--current{border-color:var(--hub-stepper-nav-link-active-border-color);background-color:var(--hub-stepper-nav-link-active-bg);color:var(--hub-stepper-nav-link-active-color)}.stepper__nav-trigger--completed{color:var(--hub-stepper-nav-link-color)}.stepper__nav-trigger:disabled{color:var(--hub-stepper-nav-link-disabled-color);cursor:not-allowed}.stepper__content{grid-area:content;border:var(--hub-stepper-content-border-width) solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);background-color:var(--hub-stepper-surface-color);padding:var(--hub-stepper-content-padding-y, 0) var(--hub-stepper-content-padding-x, 0);min-width:0;position:relative;overflow:hidden}.stepper__content-panel{will-change:transform,opacity}.stepper__controls{grid-area:controls;display:flex;gap:var(--hub-stepper-controls-gap);align-items:center;justify-content:var(--hub-stepper-controls-justify)}.stepper__controls :is(button[previousButton],button[nextButton],button[submitButton],.stepper__button){border:1px solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-control-padding-y) var(--hub-stepper-control-padding-x);font-size:var(--hub-stepper-control-font-size);line-height:var(--hub-stepper-control-line-height);cursor:pointer;background-color:var(--hub-stepper-surface-color);color:var(--hub-stepper-text-color)}.stepper__button--back{background-color:var(--hub-stepper-background-color);color:var(--hub-stepper-text-color)}.stepper__button--next,.stepper__button--submit{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}.stepper__controls button[nextButton],.stepper__controls button[submitButton]{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}.stepper__controls button[previousButton]{background-color:var(--hub-stepper-background-color)}.stepper__controls :is(button[previousButton],button[nextButton],button[submitButton]):disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}:host.stepper--layout-sidebar .stepper__nav{height:100%;overflow-y:auto;overflow-x:hidden}:host.stepper--layout-sidebar .stepper__nav-list{flex-direction:column;align-items:stretch}:host.stepper--layout-sidebar .stepper__nav-item{width:100%}:host.stepper--layout-sidebar .stepper__nav-trigger{width:100%;justify-content:flex-start}:host.stepper--rtl{direction:rtl}:host.stepper--rtl .stepper__nav-list{flex-direction:row}:host.stepper--rtl.stepper--layout-sidebar .stepper__nav-list{flex-direction:column}:host.stepper--rtl.stepper--layout-sidebar .stepper__nav-trigger{justify-content:flex-end;text-align:right}.stepper__button-icon{display:inline-flex;align-items:center;line-height:1}.stepper__content--animated.stepper__content--animating .stepper__content-panel{animation-duration:var(--hub-stepper-animation-duration);animation-timing-function:var(--hub-stepper-animation-easing);animation-fill-mode:both}:host.stepper--animated.stepper--anim-fade .stepper__content--animating .stepper__content-panel{animation-name:stepper-fade-in}:host.stepper--animated:not(.stepper--anim-fade) .stepper__content--animating.stepper__content--forward .stepper__content-panel,:host.stepper--animated.stepper--anim-slide .stepper__content--animating.stepper__content--forward .stepper__content-panel{animation-name:stepper-slide-in-forward}:host.stepper--animated:not(.stepper--anim-fade) .stepper__content--animating.stepper__content--backward .stepper__content-panel,:host.stepper--animated.stepper--anim-slide .stepper__content--animating.stepper__content--backward .stepper__content-panel{animation-name:stepper-slide-in-backward}@keyframes stepper-fade-in{0%{opacity:0}to{opacity:1}}@keyframes stepper-slide-in-forward{0%{opacity:0;transform:translate(var(--hub-stepper-animation-distance))}to{opacity:1;transform:translate(0)}}@keyframes stepper-slide-in-backward{0%{opacity:0;transform:translate(calc(-1 * var(--hub-stepper-animation-distance)))}to{opacity:1;transform:translate(0)}}:host ::ng-deep button.stepper__button{border:1px solid var(--hub-stepper-border-color);border-radius:var(--hub-ref-radius-md, .375rem);padding:var(--hub-stepper-control-padding-y) var(--hub-stepper-control-padding-x);font-size:var(--hub-stepper-control-font-size);line-height:var(--hub-stepper-control-line-height);cursor:pointer;background-color:var(--hub-stepper-surface-color);color:var(--hub-stepper-text-color)}:host ::ng-deep button.stepper__button--back{background-color:var(--hub-stepper-background-color)}:host ::ng-deep button.stepper__button--next,:host ::ng-deep button.stepper__button--submit{background-color:var(--hub-stepper-primary-color);border-color:var(--hub-stepper-primary-color);color:var(--hub-stepper-accent-on, #ffffff)}:host ::ng-deep button.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}:host([data-variant]){--hub-stepper-accent-emphasis: color-mix(in oklch, var(--hub-stepper-accent) 80%, var(--hub-sys-color-ink, #212529));--hub-stepper-accent-subtle: color-mix(in oklch, var(--hub-stepper-accent) 12%, var(--hub-sys-surface-page, #fff));--hub-stepper-accent-on: oklch(from var(--hub-stepper-accent) clamp(0, (.62 - l) * 1000, 1) 0 h)}:host([data-variant=primary]){--hub-stepper-accent: var(--hub-sys-color-primary)}:host([data-variant=secondary]){--hub-stepper-accent: var(--hub-sys-color-secondary)}:host([data-variant=success]){--hub-stepper-accent: var(--hub-sys-color-success)}:host([data-variant=danger]){--hub-stepper-accent: var(--hub-sys-color-danger)}:host([data-variant=warning]){--hub-stepper-accent: var(--hub-sys-color-warning)}:host([data-variant=info]){--hub-stepper-accent: var(--hub-sys-color-info)}:host([data-variant=neutral]){--hub-stepper-accent: var(--hub-sys-color-neutral)}:host([data-variant=light]){--hub-stepper-accent: var(--hub-sys-color-light)}:host([data-variant=dark]){--hub-stepper-accent: var(--hub-sys-color-dark)}:host(.stepper--truncate-titles) .stepper__nav-title{display:inline-block;max-inline-size:var(--hub-stepper-nav-title-max-width, 12rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}\n"] }]
426
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], backLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "backLabel", required: false }] }], continueLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "continueLabel", required: false }] }], submitLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitLabel", required: false }] }], truncateTitles: [{ type: i0.Input, args: [{ isSignal: true, alias: "truncateTitles", required: false }] }], completed: [{ type: i0.Output, args: ["completed"] }], previousStep: [{ type: i0.Output, args: ["previousStep"] }], nextStep: [{ type: i0.Output, args: ["nextStep"] }], steps: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StepComponent), { isSignal: true }] }], stepperNavTpt: [{ type: i0.ContentChild, args: [i0.forwardRef(() => StepperNavDirective), { ...{ read: TemplateRef }, isSignal: true }] }], previousButton: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PreviousButtonDirective), { isSignal: true }] }], nextButton: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NextButtonDirective), { isSignal: true }] }], submitButton: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SubmitButtonDirective), { isSignal: true }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
417
427
 
418
428
  /** English dictionary for default stepper action labels. */
419
429
  const locale$9 = {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-hub-ui-stepper.mjs","sources":["../../../projects/stepper/src/lib/next-button.directive.ts","../../../projects/stepper/src/lib/previous-button.directive.ts","../../../projects/stepper/src/lib/step/step.component.ts","../../../projects/stepper/src/lib/step/step.component.html","../../../projects/stepper/src/lib/stepper-nav.directive.ts","../../../projects/stepper/src/lib/submit-button.directive.ts","../../../projects/stepper/src/lib/stepper/stepper-options.ts","../../../projects/stepper/src/lib/stepper/stepper.component.ts","../../../projects/stepper/src/lib/stepper/stepper.component.html","../../../projects/stepper/src/lib/assets/i18n/en.ts","../../../projects/stepper/src/lib/assets/i18n/es.ts","../../../projects/stepper/src/lib/assets/i18n/ca.ts","../../../projects/stepper/src/lib/assets/i18n/eu.ts","../../../projects/stepper/src/lib/assets/i18n/gl.ts","../../../projects/stepper/src/lib/assets/i18n/ast.ts","../../../projects/stepper/src/lib/assets/i18n/an.ts","../../../projects/stepper/src/lib/assets/i18n/de.ts","../../../projects/stepper/src/lib/assets/i18n/zh.ts","../../../projects/stepper/src/lib/assets/i18n/ar.ts","../../../projects/stepper/src/lib/step-trigger.directive.ts","../../../projects/stepper/src/lib/stepper.module.ts","../../../projects/stepper/src/lib/services/stepper-theme-service.ts","../../../projects/stepper/src/public-api.ts","../../../projects/stepper/src/ng-hub-ui-stepper.ts"],"sourcesContent":["import { computed, Directive, inject } from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n/**\n * Connects a projected button to the stepper \"next\" action.\n * It also keeps the button disabled state synchronized with the next step availability.\n */\n@Directive({\n\tselector: 'button[nextButton], button[continueButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--next',\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': 'stepper.goToNext()'\n\t}\n})\nexport class NextButtonDirective {\n\treadonly stepper = inject(StepperComponent);\n\n\t/** Reflects whether the control can trigger forward navigation. */\n\treadonly disabled = computed(() => {\n\t\tconst nextIndex = this.stepper.currentIndex() + 1;\n\t\tconst nextStep = this.stepper.steps()?.[nextIndex];\n\t\treturn !nextStep || nextStep.disabled;\n\t});\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n/**\n * Connects a projected button to the stepper \"previous\" action.\n * It also keeps the button disabled state synchronized with backward navigation availability.\n */\n@Directive({\n\tselector: 'button[previousButton], button[backButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--back',\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': 'stepper.goToPrevious()'\n\t}\n})\nexport class PreviousButtonDirective {\n\treadonly stepper = inject(StepperComponent);\n\n\t/** Reflects whether the control can trigger backward navigation. */\n\treadonly disabled = computed(() => {\n\t\tconst prevIndex = this.stepper.currentIndex() - 1;\n\t\tconst prevStep = this.stepper.steps()?.[prevIndex];\n\t\treturn !prevStep || prevStep.disabled;\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tinject,\n\tOnInit,\n\tinput,\n\tsignal,\n\tTemplateRef,\n\tviewChild\n} from '@angular/core';\nimport { StepperComponent } from '../stepper/stepper.component';\n\n/** Default animation duration (ms) used by optional step transitions. */\nconst ANIMATION_DURATION = 256;\n\n/**\n * Defines a single step inside `hub-stepper`.\n * The component exposes metadata (title, disabled state, index) and a projected template as step content.\n */\n@Component({\n\tselector: 'hub-step, hub-ui-step, ng80-step',\n\ttemplateUrl: './step.component.html',\n\tstyleUrls: ['./step.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StepComponent implements OnInit {\n\t/** Parent stepper instance injected from the host context. */\n\tstepper = inject(StepperComponent);\n\n\t/**\n\t * Zero-based position of this step within the parent stepper.\n\t * Assigned automatically by `StepperComponent` — do not set this manually.\n\t */\n\treadonly index = signal<number>(0);\n\n\t/** Optional display title rendered in the step navigation. */\n\treadonly title = input<string>();\n\n\t/** Whether the step is disabled and cannot be navigated to. */\n\treadonly disabled = input(false);\n\n\t/** Template reference used by the parent stepper to render step content. */\n\treadonly innerTemplate = viewChild.required<TemplateRef<any>>('innerTemplate');\n\n\t/** Returns the animation state key consumed by content transitions. */\n\tget animationState() {\n\t\treturn '*';\n\t}\n\n\t/** Runs initial validation checks for component inputs. */\n\tngOnInit(): void {\n\t\tif (!this.title()) {\n\t\t\tconsole.warn('StepComponent: title is recommended for accessibility');\n\t\t}\n\t}\n\n\t/**\n\t * Returns whether the step can be navigated to.\n\t *\n\t * @returns `true` when the step is enabled.\n\t */\n\tisAccessible(): boolean {\n\t\treturn !this.disabled;\n\t}\n}\n","<ng-template #innerTemplate>\n\t<div\n\t\tclass=\"step__content\"\n\t\t[attr.data-step-index]=\"index()\"\n\t\t[attr.aria-label]=\"title()\"\n\t>\n\t\t<ng-content></ng-content>\n\t</div>\n</ng-template>\n","import { TemplateRef, Directive } from '@angular/core';\n\n/**\n * Marks an `ng-template` as a custom navigation template for `hub-stepper`.\n */\n@Directive({\n selector: '[hubStepperNav], [stepperNav]'\n})\nexport class StepperNavDirective {\n\t/** Captured template reference projected into the parent stepper. */\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n/**\n * Connects a projected button to the stepper completion action.\n * It disables the host button when the current step is disabled.\n */\n@Directive({\n\tselector: 'button[submitButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--submit',\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': 'stepper.complete()'\n\t}\n})\nexport class SubmitButtonDirective {\n\treadonly stepper = inject(StepperComponent);\n\n\t/** Reflects whether completion is currently allowed. */\n\treadonly disabled = computed(() => this.stepper.currentStep?.disabled() ?? false);\n}\n","/**\n * Direction of the step transition animation.\n */\nexport enum StepperAnimationDirection {\n\tForward = 'forward',\n\tBackward = 'backward'\n}\n\n/**\n * Available layout modes for the stepper container.\n */\nexport enum StepperLayout {\n\tVertical = 'vertical',\n\tSidebar = 'sidebar'\n}\n\n/**\n * Optional configuration object for the stepper component.\n */\nexport interface StepperOptions {\n\t/**\n\t * Controls how nav, content and footer are arranged inside the stepper grid.\n\t */\n\tlayout?: StepperLayout;\n\n\t/**\n\t * Enables right-to-left rendering for nav, content and controls.\n\t */\n\trtl?: boolean;\n}\n","import {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tcomputed,\n\tElementRef,\n\tOnDestroy,\n\teffect,\n\tinject,\n\tsignal,\n\tTemplateRef,\n\tinput,\n\toutput,\n\tcontentChild,\n\tcontentChildren\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TranslatePipe, UcfirstPipe } from 'ng-hub-ui-utils';\nimport { NextButtonDirective } from '../next-button.directive';\nimport { PreviousButtonDirective } from '../previous-button.directive';\nimport { StepComponent } from '../step/step.component';\nimport { StepperNavDirective } from '../stepper-nav.directive';\nimport { SubmitButtonDirective } from '../submit-button.directive';\nimport { StepperAnimationDirection, StepperLayout, StepperOptions } from './stepper-options';\n\n/**\n * Renders and controls a multi-step workflow.\n * It coordinates navigation, state transitions and projected templates for steps and controls.\n */\n/** Variants with exact design-system token coverage via the SCSS `@each` loop. */\nconst STEPPER_BUILT_IN_VARIANTS = new Set<string>(['primary', 'success', 'danger', 'warning', 'info']);\n\n@Component({\n\tselector: 'hub-stepper, hub-ui-stepper, ng80-stepper',\n\ttemplateUrl: './stepper.component.html',\n\tstyleUrls: ['./stepper.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgTemplateOutlet, TranslatePipe, UcfirstPipe],\n\thost: {\n\t\tclass: 'stepper',\n\t\t'[class.stepper--layout-vertical]': 'layout() === StepperLayout.Vertical',\n\t\t'[class.stepper--layout-sidebar]': 'layout() === StepperLayout.Sidebar',\n\t\t'[class.stepper--rtl]': 'isRtl()',\n\t\t'[attr.data-variant]': 'variant() ?? null',\n\t\t'[style.--hub-stepper-accent]': 'customAccent()'\n\t}\n})\nexport class StepperComponent implements AfterContentInit, OnDestroy {\n\t#cdr = inject(ChangeDetectorRef);\n\t#hostRef = inject(ElementRef<HTMLElement>);\n\t#animationFrameId: number | null = null;\n\n\t/** Exposes layout enum values to the template. */\n\treadonly StepperLayout = StepperLayout;\n\n\t/** Stores the index of the currently active step. */\n\treadonly currentIndex = signal(0);\n\n\t/** Stores whether content transition animation is currently running. */\n\treadonly contentAnimating = signal(false);\n\n\t/** Stores transition direction used by the CSS animation classes. */\n\treadonly animationDirection = signal<StepperAnimationDirection>(StepperAnimationDirection.Forward);\n\n\t/**\n\t * Semantic accent of the stepper: `'primary'` · `'success'` · `'danger'` ·\n\t * `'warning'` · `'info'`, or any custom string (read as `--hub-sys-color-<variant>`).\n\t * Re-bases `--hub-stepper-accent`, which drives the active step pill and the\n\t * next / submit controls. Defaults to primary.\n\t */\n\treadonly variant = input<string>();\n\n\t/**\n\t * Inline accent for custom (non-built-in) variants — the built-in five are\n\t * resolved by the SCSS `@each` loop, so this returns `null` for them.\n\t */\n\tprotected readonly customAccent = computed(() => {\n\t\tconst v = this.variant();\n\t\treturn v && !STEPPER_BUILT_IN_VARIANTS.has(v) ? `var(--hub-sys-color-${v})` : null;\n\t});\n\n\t/** Optional custom label for the back button. */\n\treadonly backLabel = input<string | null>(null);\n\n\t/** Optional custom label for the continue button. */\n\treadonly continueLabel = input<string | null>(null);\n\n\t/** Optional custom label for the submit button. */\n\treadonly submitLabel = input<string | null>(null);\n\n\t/** Emits once the user completes the last step. */\n\treadonly completed = output<void>();\n\n\t/** Emits the new index when moving to the previous step. */\n\treadonly previousStep = output<number>();\n\n\t/** Emits the new index when moving to the next step. */\n\treadonly nextStep = output<number>();\n\n\t/** Content-projected step definitions. */\n\treadonly steps = contentChildren(StepComponent);\n\n\t/** Automatically assigns each step its zero-based position when the steps collection changes. */\n\tprotected readonly assignStepIndexes = effect(() => {\n\t\tthis.steps().forEach((step, i) => step.index.set(i));\n\t});\n\n\t/** Optional content-projected template for custom navigation. */\n\treadonly stepperNavTpt = contentChild(StepperNavDirective, { read: TemplateRef });\n\n\t/** Optional custom projected previous button. */\n\treadonly previousButton = contentChild(PreviousButtonDirective);\n\n\t/** Optional custom projected next button. */\n\treadonly nextButton = contentChild(NextButtonDirective);\n\n\t/** Optional custom projected submit button. */\n\treadonly submitButton = contentChild(SubmitButtonDirective);\n\n\t/**\n\t * Optional visual and layout configuration for the stepper container.\n\t */\n\treadonly options = input<StepperOptions>({});\n\n\t/**\n\t * Returns the active layout mode.\n\t *\n\t * @returns The configured layout or the vertical default.\n\t */\n\tlayout(): StepperLayout {\n\t\treturn this.options()?.layout ?? StepperLayout.Vertical;\n\t}\n\n\t/**\n\t * Returns whether right-to-left mode is enabled.\n\t *\n\t * @returns `true` when RTL mode is active.\n\t */\n\tisRtl(): boolean {\n\t\treturn this.options()?.rtl ?? false;\n\t}\n\n\t/** Returns the active step component instance or `null` when unavailable. */\n\tget currentStep(): StepComponent | null {\n\t\treturn this.steps()?.[this.currentIndex()] ?? null;\n\t}\n\n\t/** Returns whether host classes enable animated transitions. */\n\thasAnimationClass(): boolean {\n\t\treturn this.#hostRef.nativeElement.classList.contains('stepper--animated');\n\t}\n\n\t/** Returns whether transition direction is forward. */\n\tisForwardAnimation(): boolean {\n\t\treturn this.animationDirection() === StepperAnimationDirection.Forward;\n\t}\n\n\t/** Returns whether transition direction is backward. */\n\tisBackwardAnimation(): boolean {\n\t\treturn this.animationDirection() === StepperAnimationDirection.Backward;\n\t}\n\n\t/** Initializes projected step metadata after content projection. */\n\tngAfterContentInit(): void {\n\t\tthis.initializeSteps();\n\t}\n\n\t/** Clears pending animation frame callbacks on component destroy. */\n\tngOnDestroy(): void {\n\t\tthis.clearAnimationFrame();\n\t}\n\n\t/**\n\t * Triggers initial change detection for projected steps.\n\t */\n\tprivate initializeSteps(): void {\n\t\tthis.#cdr.detectChanges();\n\t}\n\n\t/**\n\t * Navigates to the previous step index.\n\t */\n\tgoToPrevious(): void {\n\t\tthis.goTo(this.currentIndex() - 1);\n\t}\n\n\t/**\n\t * Navigates to the next step index.\n\t */\n\tgoToNext(): void {\n\t\tthis.goTo(this.currentIndex() + 1);\n\t}\n\n\t/**\n\t * Navigates to a specific step index when it is valid.\n\t *\n\t * @param index Target step index.\n\t */\n\tgoTo(index: number): void {\n\t\tif (this.isStepIndexInBounds(index)) {\n\t\t\tconst previousIndex = this.currentIndex();\n\t\t\tif (index === previousIndex) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.animationDirection.set(index > previousIndex ? StepperAnimationDirection.Forward : StepperAnimationDirection.Backward);\n\t\t\tthis.currentIndex.set(index);\n\t\t\tthis.playContentTransition();\n\t\t\tthis.#cdr.detectChanges();\n\t\t\tif (index > previousIndex) {\n\t\t\t\tthis.nextStep.emit(index);\n\t\t\t} else if (index < previousIndex) {\n\t\t\t\tthis.previousStep.emit(index);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(`Invalid step index: ${index}`);\n\t\t}\n\t}\n\n\t/**\n\t * Returns whether the target step can be activated.\n\t *\n\t * @param index Target step index.\n\t * @returns `true` when index is in bounds and the step is not disabled.\n\t */\n\tcanNavigateTo(index: number): boolean {\n\t\treturn this.isStepIndexInBounds(index) && this.isValidStepIndex(index);\n\t}\n\n\t/**\n\t * Completes the stepper workflow and emits the completion event.\n\t */\n\tcomplete(): void {\n\t\tthis.completed.emit();\n\t}\n\n\t/**\n\t * Returns whether a step at the provided index is enabled.\n\t *\n\t * @param index Step index to validate.\n\t * @returns `true` when the step exists and is enabled.\n\t */\n\tisValidStepIndex(index: number): boolean {\n\t\treturn !this.steps()?.[index]?.disabled();\n\t}\n\n\t/**\n\t * Returns whether the provided index is within the steps collection bounds.\n\t *\n\t * @param index Step index to validate.\n\t * @returns `true` when the index points to an existing step.\n\t */\n\tisStepIndexInBounds(index: number): boolean {\n\t\treturn index >= 0 && index < this.steps().length;\n\t}\n\n\t/**\n\t * Starts and schedules the content transition animation lifecycle.\n\t */\n\tprivate playContentTransition(): void {\n\t\tthis.clearAnimationFrame();\n\t\tthis.contentAnimating.set(false);\n\t\tif (!this.hasAnimationClass()) {\n\t\t\treturn;\n\t\t}\n\t\tthis.#animationFrameId = globalThis.requestAnimationFrame(() => {\n\t\t\tthis.contentAnimating.set(true);\n\t\t\tthis.#cdr.detectChanges();\n\t\t});\n\t}\n\n\t/**\n\t * Clears the pending animation frame used to trigger content transitions.\n\t */\n\tprivate clearAnimationFrame(): void {\n\t\tif (this.#animationFrameId !== null) {\n\t\t\tglobalThis.cancelAnimationFrame(this.#animationFrameId);\n\t\t\tthis.#animationFrameId = null;\n\t\t}\n\t}\n\n\t/**\n\t * Handles animation end events and resets the active transition state.\n\t *\n\t * @param event DOM animation end event.\n\t */\n\tonContentAnimationEnd(event: AnimationEvent): void {\n\t\tif (event.target !== event.currentTarget) {\n\t\t\treturn;\n\t\t}\n\t\tthis.contentAnimating.set(false);\n\t\tthis.#cdr.detectChanges();\n\t}\n}\n","<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n <ng-container\n [ngTemplateOutlet]=\"stepperNavTpt() || defaultNavTpt\"\n [ngTemplateOutletContext]=\"{ steps: steps(), currentIndex: currentIndex() }\"\n ></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div\n class=\"stepper__content\"\n [class.stepper__content--animated]=\"hasAnimationClass()\"\n [class.stepper__content--animating]=\"contentAnimating()\"\n [class.stepper__content--forward]=\"isForwardAnimation()\"\n [class.stepper__content--backward]=\"isBackwardAnimation()\"\n>\n <div class=\"stepper__content-panel\" (animationend)=\"onContentAnimationEnd($event)\">\n <ng-container\n [ngTemplateOutlet]=\"currentStep?.innerTemplate()\"\n ></ng-container>\n </div>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n @if (currentIndex() > 0) {\n <ng-content select=\"button[previousButton]\"></ng-content>\n @if (!previousButton()) {\n <button\n class=\"stepper__button stepper__button--back\"\n (click)=\"goToPrevious()\"\n [disabled]=\"!canNavigateTo(currentIndex() - 1)\"\n >\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n }\n {{ backLabel() ?? ('BACK' | translate | ucfirst) }}\n </button>\n }\n }\n\n @if (currentIndex() < steps().length - 1) {\n <ng-content select=\"button[nextButton]\"></ng-content>\n @if (!nextButton()) {\n <button\n class=\"stepper__button stepper__button--next\"\n (click)=\"goToNext()\"\n [disabled]=\"!canNavigateTo(currentIndex() + 1)\"\n >\n {{ continueLabel() ?? ('CONTINUE' | translate | ucfirst) }}\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n }\n </button>\n }\n }\n\n @if (currentIndex() === steps().length - 1) {\n <ng-content select=\"button[submitButton]\"></ng-content>\n @if (!submitButton()) {\n <button\n class=\"stepper__button stepper__button--submit\"\n (click)=\"complete()\"\n [disabled]=\"!isValidStepIndex(currentIndex())\"\n >\n {{ submitLabel() ?? ('SUBMIT' | translate | ucfirst) }}\n </button>\n }\n }\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n <ul class=\"stepper__nav-list\">\n @for (step of steps; track $index; let i = $index) {\n <li class=\"stepper__nav-item\">\n <ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tdefaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title(),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n ></ng-container>\n </li>\n }\n </ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n #defaultNavTriggerTpt\n let-title=\"title\"\n let-index=\"index\"\n let-isCurrent=\"isCurrent\"\n let-isCompleted=\"isCompleted\"\n >\n <button\n class=\"stepper__nav-trigger\"\n [class.stepper__nav-trigger--current]=\"isCurrent\"\n [class.stepper__nav-trigger--completed]=\"isCompleted\"\n [disabled]=\"!canNavigateTo(index)\"\n (click)=\"goTo(index)\"\n >\n @if (title) {\n <span class=\"stepper__nav-title\">{{ title }}</span>\n } @else {\n <span class=\"stepper__nav-title\">Step {{ index + 1 }}</span>\n }\n </button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n","/** English dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'en',\n\tdata: {\n\t\tBACK: 'back',\n\t\tCONTINUE: 'continue',\n\t\tSUBMIT: 'submit'\n\t}\n};\n","/** Castilian dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'es',\n\tdata: {\n\t\tBACK: 'volver',\n\t\tCONTINUE: 'continuar',\n\t\tSUBMIT: 'enviar'\n\t}\n};\n","/** Catalan dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'ca',\n\tdata: {\n\t\tBACK: 'enrere',\n\t\tCONTINUE: 'continua',\n\t\tSUBMIT: 'envia'\n\t}\n};\n","/** Basque dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'eu',\n\tdata: {\n\t\tBACK: 'atzera',\n\t\tCONTINUE: 'jarraitu',\n\t\tSUBMIT: 'bidali'\n\t}\n};\n","/** Galician dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'gl',\n\tdata: {\n\t\tBACK: 'volver',\n\t\tCONTINUE: 'continuar',\n\t\tSUBMIT: 'enviar'\n\t}\n};\n","/** Asturleonese dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'ast',\n\tdata: {\n\t\tBACK: 'tornar',\n\t\tCONTINUE: 'siguir',\n\t\tSUBMIT: 'unviar'\n\t}\n};\n","/** Aragonese dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'an',\n\tdata: {\n\t\tBACK: 'dezaga',\n\t\tCONTINUE: 'continar',\n\t\tSUBMIT: 'ninviar'\n\t}\n};\n","/** German dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'de',\n\tdata: {\n\t\tBACK: 'zuruck',\n\t\tCONTINUE: 'weiter',\n\t\tSUBMIT: 'senden'\n\t}\n};\n","/** Chinese dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'zh',\n\tdata: {\n\t\tBACK: '返回',\n\t\tCONTINUE: '继续',\n\t\tSUBMIT: '提交'\n\t}\n};\n","/** Arabic dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'ar',\n\tdata: {\n\t\tBACK: 'رجوع',\n\t\tCONTINUE: 'متابعة',\n\t\tSUBMIT: 'إرسال'\n\t}\n};\n","import { TemplateRef, Directive } from '@angular/core';\n\n/**\n * Marks an `ng-template` as a custom trigger template for an individual step.\n */\n@Directive({\n selector: '[hubStepTrigger] [stepTrigger]'\n})\nexport class StepTriggerDirective {\n\t/** Captured template reference projected into the parent stepper. */\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { HUB_TRANSLATION_CONFIG, HubTranslationService } from 'ng-hub-ui-utils';\nimport { locale as enLocale } from './assets/i18n/en';\nimport { locale as esLocale } from './assets/i18n/es';\nimport { locale as caLocale } from './assets/i18n/ca';\nimport { locale as euLocale } from './assets/i18n/eu';\nimport { locale as glLocale } from './assets/i18n/gl';\nimport { locale as astLocale } from './assets/i18n/ast';\nimport { locale as anLocale } from './assets/i18n/an';\nimport { locale as deLocale } from './assets/i18n/de';\nimport { locale as zhLocale } from './assets/i18n/zh';\nimport { locale as arLocale } from './assets/i18n/ar';\nimport { StepTriggerDirective } from './step-trigger.directive';\nimport { StepComponent } from './step/step.component';\nimport { StepperNavDirective } from './stepper-nav.directive';\nimport { StepperComponent } from './stepper/stepper.component';\nimport { PreviousButtonDirective } from './previous-button.directive';\nimport { NextButtonDirective } from './next-button.directive';\nimport { SubmitButtonDirective } from './submit-button.directive';\nimport { StepperConfig } from './stepper-config';\n\n/** Default language used when no explicit language is provided. */\nconst DEFAULT_LANGUAGE = 'es';\n\n/** Built-in dictionaries shipped with the stepper library. */\nconst STEPPER_DICTIONARIES = {\n\t[enLocale.lang]: enLocale.data,\n\t[esLocale.lang]: esLocale.data,\n\t[caLocale.lang]: caLocale.data,\n\t[euLocale.lang]: euLocale.data,\n\t[glLocale.lang]: glLocale.data,\n\t[astLocale.lang]: astLocale.data,\n\t[anLocale.lang]: anLocale.data,\n\t[deLocale.lang]: deLocale.data,\n\t[zhLocale.lang]: zhLocale.data,\n\t[arLocale.lang]: arLocale.data\n};\n\n/** All stepper building blocks as a convenience array. */\nconst STEPPER_STANDALONE = [\n\tStepperComponent,\n\tStepComponent,\n\tStepTriggerDirective,\n\tStepperNavDirective,\n\tPreviousButtonDirective,\n\tNextButtonDirective,\n\tSubmitButtonDirective\n] as const;\n\n@NgModule({\n\timports: [...STEPPER_STANDALONE],\n\texports: [...STEPPER_STANDALONE]\n})\n/**\n * Angular module that re-exports all stepper standalone building blocks for convenience.\n */\nexport class StepperModule {\n\t/**\n\t * Registers built-in dictionaries and resolves the active translation language.\n\t *\n\t * @param config Optional language and fallback language override.\n\t * @returns Module providers with translation configuration.\n\t */\n\tstatic forRoot(config?: StepperConfig): ModuleWithProviders<StepperModule> {\n\t\treturn {\n\t\t\tngModule: StepperModule,\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: HUB_TRANSLATION_CONFIG,\n\t\t\t\t\tuseValue: {\n\t\t\t\t\t\tdictionaries: STEPPER_DICTIONARIES,\n\t\t\t\t\t\tlanguage: config?.language ?? DEFAULT_LANGUAGE,\n\t\t\t\t\t\tfallbackLanguage: config?.fallbackLanguage ?? 'en'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tHubTranslationService\n\t\t\t]\n\t\t};\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, Renderer2, RendererFactory2, inject } from '@angular/core';\n\n/**\n * Applies runtime CSS variable overrides for the stepper design tokens.\n */\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class StepperThemeService {\n\t/** Angular renderer used to update root-level CSS variables safely. */\n\tprivate renderer: Renderer2;\n\n\t/** Injected document token; SSR-safe alternative to the global `document`. */\n\tprivate readonly document = inject(DOCUMENT);\n\n\t/**\n\t * Creates a renderer instance for dynamic style updates.\n\t *\n\t * @param rendererFactory Angular renderer factory.\n\t */\n\tconstructor(rendererFactory: RendererFactory2) {\n\t\tthis.renderer = rendererFactory.createRenderer(null, null);\n\t}\n\n\t/**\n\t * Applies the provided stepper theme map to CSS custom properties.\n\t *\n\t * @param theme Key-value map of stepper token names and CSS values.\n\t */\n\tsetTheme(theme: { [key: string]: string }) {\n\t\tObject.keys(theme).forEach((key) => {\n\t\t\tthis.renderer.setStyle(this.document.documentElement, `--hub-stepper-${key}`, theme[key]);\n\t\t});\n\t}\n}\n","/*\n * Public API Surface of stepper\n */\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/step/step.component';\nexport * from './lib/stepper.module';\nexport * from './lib/previous-button.directive';\nexport * from './lib/next-button.directive';\nexport * from './lib/submit-button.directive';\nexport * from './lib/step-trigger.directive';\nexport * from './lib/stepper-nav.directive';\nexport * from './lib/services/stepper-theme-service';\nexport * from './lib/stepper/stepper-options';\nexport * from './lib/stepper-config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["locale","enLocale","esLocale","caLocale","euLocale","glLocale","astLocale","anLocale","deLocale","zhLocale","arLocale"],"mappings":"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"}
1
+ {"version":3,"file":"ng-hub-ui-stepper.mjs","sources":["../../../projects/stepper/src/lib/next-button.directive.ts","../../../projects/stepper/src/lib/previous-button.directive.ts","../../../projects/stepper/src/lib/step/step.component.ts","../../../projects/stepper/src/lib/step/step.component.html","../../../projects/stepper/src/lib/stepper-nav.directive.ts","../../../projects/stepper/src/lib/submit-button.directive.ts","../../../projects/stepper/src/lib/stepper/stepper-options.ts","../../../projects/stepper/src/lib/stepper/stepper.component.ts","../../../projects/stepper/src/lib/stepper/stepper.component.html","../../../projects/stepper/src/lib/assets/i18n/en.ts","../../../projects/stepper/src/lib/assets/i18n/es.ts","../../../projects/stepper/src/lib/assets/i18n/ca.ts","../../../projects/stepper/src/lib/assets/i18n/eu.ts","../../../projects/stepper/src/lib/assets/i18n/gl.ts","../../../projects/stepper/src/lib/assets/i18n/ast.ts","../../../projects/stepper/src/lib/assets/i18n/an.ts","../../../projects/stepper/src/lib/assets/i18n/de.ts","../../../projects/stepper/src/lib/assets/i18n/zh.ts","../../../projects/stepper/src/lib/assets/i18n/ar.ts","../../../projects/stepper/src/lib/step-trigger.directive.ts","../../../projects/stepper/src/lib/stepper.module.ts","../../../projects/stepper/src/lib/services/stepper-theme-service.ts","../../../projects/stepper/src/public-api.ts","../../../projects/stepper/src/ng-hub-ui-stepper.ts"],"sourcesContent":["import { computed, Directive, inject } from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n/**\n * Connects a projected button to the stepper \"next\" action.\n * It also keeps the button disabled state synchronized with the next step availability.\n */\n@Directive({\n\tselector: 'button[nextButton], button[continueButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--next',\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': 'stepper.goToNext()'\n\t}\n})\nexport class NextButtonDirective {\n\treadonly stepper = inject(StepperComponent);\n\n\t/** Reflects whether the control can trigger forward navigation. */\n\treadonly disabled = computed(() => {\n\t\tconst nextIndex = this.stepper.currentIndex() + 1;\n\t\tconst nextStep = this.stepper.steps()?.[nextIndex];\n\t\treturn !nextStep || nextStep.disabled;\n\t});\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n/**\n * Connects a projected button to the stepper \"previous\" action.\n * It also keeps the button disabled state synchronized with backward navigation availability.\n */\n@Directive({\n\tselector: 'button[previousButton], button[backButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--back',\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': 'stepper.goToPrevious()'\n\t}\n})\nexport class PreviousButtonDirective {\n\treadonly stepper = inject(StepperComponent);\n\n\t/** Reflects whether the control can trigger backward navigation. */\n\treadonly disabled = computed(() => {\n\t\tconst prevIndex = this.stepper.currentIndex() - 1;\n\t\tconst prevStep = this.stepper.steps()?.[prevIndex];\n\t\treturn !prevStep || prevStep.disabled;\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tinject,\n\tOnInit,\n\tinput,\n\tsignal,\n\tTemplateRef,\n\tviewChild\n} from '@angular/core';\nimport { StepperComponent } from '../stepper/stepper.component';\n\n/** Default animation duration (ms) used by optional step transitions. */\nconst ANIMATION_DURATION = 256;\n\n/**\n * Defines a single step inside `hub-stepper`.\n * The component exposes metadata (title, disabled state, index) and a projected template as step content.\n */\n@Component({\n\tselector: 'hub-step, hub-ui-step, ng80-step',\n\ttemplateUrl: './step.component.html',\n\tstyleUrls: ['./step.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StepComponent implements OnInit {\n\t/** Parent stepper instance injected from the host context. */\n\tstepper = inject(StepperComponent);\n\n\t/**\n\t * Zero-based position of this step within the parent stepper.\n\t * Assigned automatically by `StepperComponent` — do not set this manually.\n\t */\n\treadonly index = signal<number>(0);\n\n\t/** Optional display title rendered in the step navigation. */\n\treadonly title = input<string>();\n\n\t/** Whether the step is disabled and cannot be navigated to. */\n\treadonly disabled = input(false);\n\n\t/** Template reference used by the parent stepper to render step content. */\n\treadonly innerTemplate = viewChild.required<TemplateRef<any>>('innerTemplate');\n\n\t/** Returns the animation state key consumed by content transitions. */\n\tget animationState() {\n\t\treturn '*';\n\t}\n\n\t/** Runs initial validation checks for component inputs. */\n\tngOnInit(): void {\n\t\tif (!this.title()) {\n\t\t\tconsole.warn('StepComponent: title is recommended for accessibility');\n\t\t}\n\t}\n\n\t/**\n\t * Returns whether the step can be navigated to.\n\t *\n\t * @returns `true` when the step is enabled.\n\t */\n\tisAccessible(): boolean {\n\t\treturn !this.disabled;\n\t}\n}\n","<ng-template #innerTemplate>\n\t<div\n\t\tclass=\"step__content\"\n\t\t[attr.data-step-index]=\"index()\"\n\t\t[attr.aria-label]=\"title()\"\n\t>\n\t\t<ng-content></ng-content>\n\t</div>\n</ng-template>\n","import { TemplateRef, Directive } from '@angular/core';\n\n/**\n * Marks an `ng-template` as a custom navigation template for `hub-stepper`.\n */\n@Directive({\n selector: '[hubStepperNav], [stepperNav]'\n})\nexport class StepperNavDirective {\n\t/** Captured template reference projected into the parent stepper. */\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n/**\n * Connects a projected button to the stepper completion action.\n * It disables the host button when the current step is disabled.\n */\n@Directive({\n\tselector: 'button[submitButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--submit',\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': 'stepper.complete()'\n\t}\n})\nexport class SubmitButtonDirective {\n\treadonly stepper = inject(StepperComponent);\n\n\t/** Reflects whether completion is currently allowed. */\n\treadonly disabled = computed(() => this.stepper.currentStep?.disabled() ?? false);\n}\n","/**\n * Direction of the step transition animation.\n */\nexport enum StepperAnimationDirection {\n\tForward = 'forward',\n\tBackward = 'backward'\n}\n\n/**\n * Available layout modes for the stepper container.\n */\nexport enum StepperLayout {\n\tVertical = 'vertical',\n\tSidebar = 'sidebar'\n}\n\n/**\n * Optional configuration object for the stepper component.\n */\nexport interface StepperOptions {\n\t/**\n\t * Controls how nav, content and footer are arranged inside the stepper grid.\n\t */\n\tlayout?: StepperLayout;\n\n\t/**\n\t * Enables right-to-left rendering for nav, content and controls.\n\t */\n\trtl?: boolean;\n}\n","import {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tcomputed,\n\tElementRef,\n\tOnDestroy,\n\teffect,\n\tinject,\n\tsignal,\n\tTemplateRef,\n\tinput,\n\toutput,\n\tcontentChild,\n\tcontentChildren\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { HubOverflowTooltipDirective, TranslatePipe, UcfirstPipe } from 'ng-hub-ui-utils';\nimport { NextButtonDirective } from '../next-button.directive';\nimport { PreviousButtonDirective } from '../previous-button.directive';\nimport { StepComponent } from '../step/step.component';\nimport { StepperNavDirective } from '../stepper-nav.directive';\nimport { SubmitButtonDirective } from '../submit-button.directive';\nimport { StepperAnimationDirection, StepperLayout, StepperOptions } from './stepper-options';\n\n/**\n * Renders and controls a multi-step workflow.\n * It coordinates navigation, state transitions and projected templates for steps and controls.\n */\n/** Variants with exact design-system token coverage via the SCSS `@each` loop. */\nconst STEPPER_BUILT_IN_VARIANTS = new Set<string>(['primary', 'success', 'danger', 'warning', 'info']);\n\n@Component({\n\tselector: 'hub-stepper, hub-ui-stepper, ng80-stepper',\n\ttemplateUrl: './stepper.component.html',\n\tstyleUrls: ['./stepper.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgTemplateOutlet, TranslatePipe, UcfirstPipe, HubOverflowTooltipDirective],\n\thost: {\n\t\tclass: 'stepper',\n\t\t'[class.stepper--layout-vertical]': 'layout() === StepperLayout.Vertical',\n\t\t'[class.stepper--layout-sidebar]': 'layout() === StepperLayout.Sidebar',\n\t\t'[class.stepper--rtl]': 'isRtl()',\n\t\t'[class.stepper--truncate-titles]': 'truncateTitles()',\n\t\t'[attr.data-variant]': 'variant() ?? null',\n\t\t'[style.--hub-stepper-accent]': 'customAccent()'\n\t}\n})\nexport class StepperComponent implements AfterContentInit, OnDestroy {\n\t#cdr = inject(ChangeDetectorRef);\n\t#hostRef = inject(ElementRef<HTMLElement>);\n\t#animationFrameId: number | null = null;\n\n\t/** Exposes layout enum values to the template. */\n\treadonly StepperLayout = StepperLayout;\n\n\t/** Stores the index of the currently active step. */\n\treadonly currentIndex = signal(0);\n\n\t/** Stores whether content transition animation is currently running. */\n\treadonly contentAnimating = signal(false);\n\n\t/** Stores transition direction used by the CSS animation classes. */\n\treadonly animationDirection = signal<StepperAnimationDirection>(StepperAnimationDirection.Forward);\n\n\t/**\n\t * Semantic accent of the stepper: `'primary'` · `'success'` · `'danger'` ·\n\t * `'warning'` · `'info'`, or any custom string (read as `--hub-sys-color-<variant>`).\n\t * Re-bases `--hub-stepper-accent`, which drives the active step pill and the\n\t * next / submit controls. Defaults to primary.\n\t */\n\treadonly variant = input<string>();\n\n\t/**\n\t * Inline accent for custom (non-built-in) variants — the built-in five are\n\t * resolved by the SCSS `@each` loop, so this returns `null` for them.\n\t */\n\tprotected readonly customAccent = computed(() => {\n\t\tconst v = this.variant();\n\t\treturn v && !STEPPER_BUILT_IN_VARIANTS.has(v) ? `var(--hub-sys-color-${v})` : null;\n\t});\n\n\t/** Optional custom label for the back button. */\n\treadonly backLabel = input<string | null>(null);\n\n\t/** Optional custom label for the continue button. */\n\treadonly continueLabel = input<string | null>(null);\n\n\t/** Optional custom label for the submit button. */\n\treadonly submitLabel = input<string | null>(null);\n\n\t/**\n\t * Opt-in truncation of the nav step titles. When `true`, each title is clipped\n\t * to `--hub-stepper-nav-title-max-width` (default `12rem`) with an ellipsis and,\n\t * if it overflows, exposes its full text as a tooltip (the hub-ui tooltip by\n\t * default; swappable with `provideHubTooltip`). Off by default, so the standard\n\t * nav layout is unchanged.\n\t */\n\treadonly truncateTitles = input(false);\n\n\t/** Emits once the user completes the last step. */\n\treadonly completed = output<void>();\n\n\t/** Emits the new index when moving to the previous step. */\n\treadonly previousStep = output<number>();\n\n\t/** Emits the new index when moving to the next step. */\n\treadonly nextStep = output<number>();\n\n\t/** Content-projected step definitions. */\n\treadonly steps = contentChildren(StepComponent);\n\n\t/** Automatically assigns each step its zero-based position when the steps collection changes. */\n\tprotected readonly assignStepIndexes = effect(() => {\n\t\tthis.steps().forEach((step, i) => step.index.set(i));\n\t});\n\n\t/** Optional content-projected template for custom navigation. */\n\treadonly stepperNavTpt = contentChild(StepperNavDirective, { read: TemplateRef });\n\n\t/** Optional custom projected previous button. */\n\treadonly previousButton = contentChild(PreviousButtonDirective);\n\n\t/** Optional custom projected next button. */\n\treadonly nextButton = contentChild(NextButtonDirective);\n\n\t/** Optional custom projected submit button. */\n\treadonly submitButton = contentChild(SubmitButtonDirective);\n\n\t/**\n\t * Optional visual and layout configuration for the stepper container.\n\t */\n\treadonly options = input<StepperOptions>({});\n\n\t/**\n\t * Returns the active layout mode.\n\t *\n\t * @returns The configured layout or the vertical default.\n\t */\n\tlayout(): StepperLayout {\n\t\treturn this.options()?.layout ?? StepperLayout.Vertical;\n\t}\n\n\t/**\n\t * Returns whether right-to-left mode is enabled.\n\t *\n\t * @returns `true` when RTL mode is active.\n\t */\n\tisRtl(): boolean {\n\t\treturn this.options()?.rtl ?? false;\n\t}\n\n\t/** Returns the active step component instance or `null` when unavailable. */\n\tget currentStep(): StepComponent | null {\n\t\treturn this.steps()?.[this.currentIndex()] ?? null;\n\t}\n\n\t/** Returns whether host classes enable animated transitions. */\n\thasAnimationClass(): boolean {\n\t\treturn this.#hostRef.nativeElement.classList.contains('stepper--animated');\n\t}\n\n\t/** Returns whether transition direction is forward. */\n\tisForwardAnimation(): boolean {\n\t\treturn this.animationDirection() === StepperAnimationDirection.Forward;\n\t}\n\n\t/** Returns whether transition direction is backward. */\n\tisBackwardAnimation(): boolean {\n\t\treturn this.animationDirection() === StepperAnimationDirection.Backward;\n\t}\n\n\t/** Initializes projected step metadata after content projection. */\n\tngAfterContentInit(): void {\n\t\tthis.initializeSteps();\n\t}\n\n\t/** Clears pending animation frame callbacks on component destroy. */\n\tngOnDestroy(): void {\n\t\tthis.clearAnimationFrame();\n\t}\n\n\t/**\n\t * Triggers initial change detection for projected steps.\n\t */\n\tprivate initializeSteps(): void {\n\t\tthis.#cdr.detectChanges();\n\t}\n\n\t/**\n\t * Navigates to the previous step index.\n\t */\n\tgoToPrevious(): void {\n\t\tthis.goTo(this.currentIndex() - 1);\n\t}\n\n\t/**\n\t * Navigates to the next step index.\n\t */\n\tgoToNext(): void {\n\t\tthis.goTo(this.currentIndex() + 1);\n\t}\n\n\t/**\n\t * Navigates to a specific step index when it is valid.\n\t *\n\t * @param index Target step index.\n\t */\n\tgoTo(index: number): void {\n\t\tif (this.isStepIndexInBounds(index)) {\n\t\t\tconst previousIndex = this.currentIndex();\n\t\t\tif (index === previousIndex) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.animationDirection.set(index > previousIndex ? StepperAnimationDirection.Forward : StepperAnimationDirection.Backward);\n\t\t\tthis.currentIndex.set(index);\n\t\t\tthis.playContentTransition();\n\t\t\tthis.#cdr.detectChanges();\n\t\t\tif (index > previousIndex) {\n\t\t\t\tthis.nextStep.emit(index);\n\t\t\t} else if (index < previousIndex) {\n\t\t\t\tthis.previousStep.emit(index);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(`Invalid step index: ${index}`);\n\t\t}\n\t}\n\n\t/**\n\t * Returns whether the target step can be activated.\n\t *\n\t * @param index Target step index.\n\t * @returns `true` when index is in bounds and the step is not disabled.\n\t */\n\tcanNavigateTo(index: number): boolean {\n\t\treturn this.isStepIndexInBounds(index) && this.isValidStepIndex(index);\n\t}\n\n\t/**\n\t * Completes the stepper workflow and emits the completion event.\n\t */\n\tcomplete(): void {\n\t\tthis.completed.emit();\n\t}\n\n\t/**\n\t * Returns whether a step at the provided index is enabled.\n\t *\n\t * @param index Step index to validate.\n\t * @returns `true` when the step exists and is enabled.\n\t */\n\tisValidStepIndex(index: number): boolean {\n\t\treturn !this.steps()?.[index]?.disabled();\n\t}\n\n\t/**\n\t * Returns whether the provided index is within the steps collection bounds.\n\t *\n\t * @param index Step index to validate.\n\t * @returns `true` when the index points to an existing step.\n\t */\n\tisStepIndexInBounds(index: number): boolean {\n\t\treturn index >= 0 && index < this.steps().length;\n\t}\n\n\t/**\n\t * Starts and schedules the content transition animation lifecycle.\n\t */\n\tprivate playContentTransition(): void {\n\t\tthis.clearAnimationFrame();\n\t\tthis.contentAnimating.set(false);\n\t\tif (!this.hasAnimationClass()) {\n\t\t\treturn;\n\t\t}\n\t\tthis.#animationFrameId = globalThis.requestAnimationFrame(() => {\n\t\t\tthis.contentAnimating.set(true);\n\t\t\tthis.#cdr.detectChanges();\n\t\t});\n\t}\n\n\t/**\n\t * Clears the pending animation frame used to trigger content transitions.\n\t */\n\tprivate clearAnimationFrame(): void {\n\t\tif (this.#animationFrameId !== null) {\n\t\t\tglobalThis.cancelAnimationFrame(this.#animationFrameId);\n\t\t\tthis.#animationFrameId = null;\n\t\t}\n\t}\n\n\t/**\n\t * Handles animation end events and resets the active transition state.\n\t *\n\t * @param event DOM animation end event.\n\t */\n\tonContentAnimationEnd(event: AnimationEvent): void {\n\t\tif (event.target !== event.currentTarget) {\n\t\t\treturn;\n\t\t}\n\t\tthis.contentAnimating.set(false);\n\t\tthis.#cdr.detectChanges();\n\t}\n}\n","<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n <ng-container\n [ngTemplateOutlet]=\"stepperNavTpt() || defaultNavTpt\"\n [ngTemplateOutletContext]=\"{ steps: steps(), currentIndex: currentIndex() }\"\n ></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div\n class=\"stepper__content\"\n [class.stepper__content--animated]=\"hasAnimationClass()\"\n [class.stepper__content--animating]=\"contentAnimating()\"\n [class.stepper__content--forward]=\"isForwardAnimation()\"\n [class.stepper__content--backward]=\"isBackwardAnimation()\"\n>\n <div class=\"stepper__content-panel\" (animationend)=\"onContentAnimationEnd($event)\">\n <ng-container\n [ngTemplateOutlet]=\"currentStep?.innerTemplate()\"\n ></ng-container>\n </div>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n @if (currentIndex() > 0) {\n <ng-content select=\"button[previousButton]\"></ng-content>\n @if (!previousButton()) {\n <button\n class=\"stepper__button stepper__button--back\"\n (click)=\"goToPrevious()\"\n [disabled]=\"!canNavigateTo(currentIndex() - 1)\"\n >\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n }\n {{ backLabel() ?? ('BACK' | translate | ucfirst) }}\n </button>\n }\n }\n\n @if (currentIndex() < steps().length - 1) {\n <ng-content select=\"button[nextButton]\"></ng-content>\n @if (!nextButton()) {\n <button\n class=\"stepper__button stepper__button--next\"\n (click)=\"goToNext()\"\n [disabled]=\"!canNavigateTo(currentIndex() + 1)\"\n >\n {{ continueLabel() ?? ('CONTINUE' | translate | ucfirst) }}\n @if (isRtl()) {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8592;</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">&#8594;</span>\n }\n </button>\n }\n }\n\n @if (currentIndex() === steps().length - 1) {\n <ng-content select=\"button[submitButton]\"></ng-content>\n @if (!submitButton()) {\n <button\n class=\"stepper__button stepper__button--submit\"\n (click)=\"complete()\"\n [disabled]=\"!isValidStepIndex(currentIndex())\"\n >\n {{ submitLabel() ?? ('SUBMIT' | translate | ucfirst) }}\n </button>\n }\n }\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n <ul class=\"stepper__nav-list\">\n @for (step of steps; track $index; let i = $index) {\n <li class=\"stepper__nav-item\">\n <ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tdefaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title(),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n ></ng-container>\n </li>\n }\n </ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n #defaultNavTriggerTpt\n let-title=\"title\"\n let-index=\"index\"\n let-isCurrent=\"isCurrent\"\n let-isCompleted=\"isCompleted\"\n >\n <button\n class=\"stepper__nav-trigger\"\n [class.stepper__nav-trigger--current]=\"isCurrent\"\n [class.stepper__nav-trigger--completed]=\"isCompleted\"\n [disabled]=\"!canNavigateTo(index)\"\n (click)=\"goTo(index)\"\n >\n @if (title) {\n <span class=\"stepper__nav-title\" [hubOverflowTooltip]=\"title\">{{ title }}</span>\n } @else {\n <span class=\"stepper__nav-title\" [hubOverflowTooltip]=\"'Step ' + (index + 1)\">Step {{ index + 1 }}</span>\n }\n </button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n","/** English dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'en',\n\tdata: {\n\t\tBACK: 'back',\n\t\tCONTINUE: 'continue',\n\t\tSUBMIT: 'submit'\n\t}\n};\n","/** Castilian dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'es',\n\tdata: {\n\t\tBACK: 'volver',\n\t\tCONTINUE: 'continuar',\n\t\tSUBMIT: 'enviar'\n\t}\n};\n","/** Catalan dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'ca',\n\tdata: {\n\t\tBACK: 'enrere',\n\t\tCONTINUE: 'continua',\n\t\tSUBMIT: 'envia'\n\t}\n};\n","/** Basque dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'eu',\n\tdata: {\n\t\tBACK: 'atzera',\n\t\tCONTINUE: 'jarraitu',\n\t\tSUBMIT: 'bidali'\n\t}\n};\n","/** Galician dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'gl',\n\tdata: {\n\t\tBACK: 'volver',\n\t\tCONTINUE: 'continuar',\n\t\tSUBMIT: 'enviar'\n\t}\n};\n","/** Asturleonese dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'ast',\n\tdata: {\n\t\tBACK: 'tornar',\n\t\tCONTINUE: 'siguir',\n\t\tSUBMIT: 'unviar'\n\t}\n};\n","/** Aragonese dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'an',\n\tdata: {\n\t\tBACK: 'dezaga',\n\t\tCONTINUE: 'continar',\n\t\tSUBMIT: 'ninviar'\n\t}\n};\n","/** German dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'de',\n\tdata: {\n\t\tBACK: 'zuruck',\n\t\tCONTINUE: 'weiter',\n\t\tSUBMIT: 'senden'\n\t}\n};\n","/** Chinese dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'zh',\n\tdata: {\n\t\tBACK: '返回',\n\t\tCONTINUE: '继续',\n\t\tSUBMIT: '提交'\n\t}\n};\n","/** Arabic dictionary for default stepper action labels. */\nexport const locale = {\n\tlang: 'ar',\n\tdata: {\n\t\tBACK: 'رجوع',\n\t\tCONTINUE: 'متابعة',\n\t\tSUBMIT: 'إرسال'\n\t}\n};\n","import { TemplateRef, Directive } from '@angular/core';\n\n/**\n * Marks an `ng-template` as a custom trigger template for an individual step.\n */\n@Directive({\n selector: '[hubStepTrigger] [stepTrigger]'\n})\nexport class StepTriggerDirective {\n\t/** Captured template reference projected into the parent stepper. */\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { HUB_TRANSLATION_CONFIG, HubTranslationService } from 'ng-hub-ui-utils';\nimport { locale as enLocale } from './assets/i18n/en';\nimport { locale as esLocale } from './assets/i18n/es';\nimport { locale as caLocale } from './assets/i18n/ca';\nimport { locale as euLocale } from './assets/i18n/eu';\nimport { locale as glLocale } from './assets/i18n/gl';\nimport { locale as astLocale } from './assets/i18n/ast';\nimport { locale as anLocale } from './assets/i18n/an';\nimport { locale as deLocale } from './assets/i18n/de';\nimport { locale as zhLocale } from './assets/i18n/zh';\nimport { locale as arLocale } from './assets/i18n/ar';\nimport { StepTriggerDirective } from './step-trigger.directive';\nimport { StepComponent } from './step/step.component';\nimport { StepperNavDirective } from './stepper-nav.directive';\nimport { StepperComponent } from './stepper/stepper.component';\nimport { PreviousButtonDirective } from './previous-button.directive';\nimport { NextButtonDirective } from './next-button.directive';\nimport { SubmitButtonDirective } from './submit-button.directive';\nimport { StepperConfig } from './stepper-config';\n\n/** Default language used when no explicit language is provided. */\nconst DEFAULT_LANGUAGE = 'es';\n\n/** Built-in dictionaries shipped with the stepper library. */\nconst STEPPER_DICTIONARIES = {\n\t[enLocale.lang]: enLocale.data,\n\t[esLocale.lang]: esLocale.data,\n\t[caLocale.lang]: caLocale.data,\n\t[euLocale.lang]: euLocale.data,\n\t[glLocale.lang]: glLocale.data,\n\t[astLocale.lang]: astLocale.data,\n\t[anLocale.lang]: anLocale.data,\n\t[deLocale.lang]: deLocale.data,\n\t[zhLocale.lang]: zhLocale.data,\n\t[arLocale.lang]: arLocale.data\n};\n\n/** All stepper building blocks as a convenience array. */\nconst STEPPER_STANDALONE = [\n\tStepperComponent,\n\tStepComponent,\n\tStepTriggerDirective,\n\tStepperNavDirective,\n\tPreviousButtonDirective,\n\tNextButtonDirective,\n\tSubmitButtonDirective\n] as const;\n\n@NgModule({\n\timports: [...STEPPER_STANDALONE],\n\texports: [...STEPPER_STANDALONE]\n})\n/**\n * Angular module that re-exports all stepper standalone building blocks for convenience.\n */\nexport class StepperModule {\n\t/**\n\t * Registers built-in dictionaries and resolves the active translation language.\n\t *\n\t * @param config Optional language and fallback language override.\n\t * @returns Module providers with translation configuration.\n\t */\n\tstatic forRoot(config?: StepperConfig): ModuleWithProviders<StepperModule> {\n\t\treturn {\n\t\t\tngModule: StepperModule,\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: HUB_TRANSLATION_CONFIG,\n\t\t\t\t\tuseValue: {\n\t\t\t\t\t\tdictionaries: STEPPER_DICTIONARIES,\n\t\t\t\t\t\tlanguage: config?.language ?? DEFAULT_LANGUAGE,\n\t\t\t\t\t\tfallbackLanguage: config?.fallbackLanguage ?? 'en'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tHubTranslationService\n\t\t\t]\n\t\t};\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, Renderer2, RendererFactory2, inject } from '@angular/core';\n\n/**\n * Applies runtime CSS variable overrides for the stepper design tokens.\n */\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class StepperThemeService {\n\t/** Angular renderer used to update root-level CSS variables safely. */\n\tprivate renderer: Renderer2;\n\n\t/** Injected document token; SSR-safe alternative to the global `document`. */\n\tprivate readonly document = inject(DOCUMENT);\n\n\t/**\n\t * Creates a renderer instance for dynamic style updates.\n\t *\n\t * @param rendererFactory Angular renderer factory.\n\t */\n\tconstructor(rendererFactory: RendererFactory2) {\n\t\tthis.renderer = rendererFactory.createRenderer(null, null);\n\t}\n\n\t/**\n\t * Applies the provided stepper theme map to CSS custom properties.\n\t *\n\t * @param theme Key-value map of stepper token names and CSS values.\n\t */\n\tsetTheme(theme: { [key: string]: string }) {\n\t\tObject.keys(theme).forEach((key) => {\n\t\t\tthis.renderer.setStyle(this.document.documentElement, `--hub-stepper-${key}`, theme[key]);\n\t\t});\n\t}\n}\n","/*\n * Public API Surface of stepper\n */\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/step/step.component';\nexport * from './lib/stepper.module';\nexport * from './lib/previous-button.directive';\nexport * from './lib/next-button.directive';\nexport * from './lib/submit-button.directive';\nexport * from './lib/step-trigger.directive';\nexport * from './lib/stepper-nav.directive';\nexport * from './lib/services/stepper-theme-service';\nexport * from './lib/stepper/stepper-options';\nexport * from './lib/stepper-config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["locale","enLocale","esLocale","caLocale","euLocale","glLocale","astLocale","anLocale","deLocale","zhLocale","arLocale"],"mappings":"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"}
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-hub-ui-stepper",
3
- "version": "22.2.0",
3
+ "version": "22.3.0",
4
4
  "description": "A flexible and customizable stepper component for Angular applications",
5
5
  "keywords": [
6
6
  "angular",
@@ -125,6 +125,14 @@ declare class StepperComponent implements AfterContentInit, OnDestroy {
125
125
  readonly continueLabel: _angular_core.InputSignal<string | null>;
126
126
  /** Optional custom label for the submit button. */
127
127
  readonly submitLabel: _angular_core.InputSignal<string | null>;
128
+ /**
129
+ * Opt-in truncation of the nav step titles. When `true`, each title is clipped
130
+ * to `--hub-stepper-nav-title-max-width` (default `12rem`) with an ellipsis and,
131
+ * if it overflows, exposes its full text as a tooltip (the hub-ui tooltip by
132
+ * default; swappable with `provideHubTooltip`). Off by default, so the standard
133
+ * nav layout is unchanged.
134
+ */
135
+ readonly truncateTitles: _angular_core.InputSignal<boolean>;
128
136
  /** Emits once the user completes the last step. */
129
137
  readonly completed: _angular_core.OutputEmitterRef<void>;
130
138
  /** Emits the new index when moving to the previous step. */
@@ -229,7 +237,7 @@ declare class StepperComponent implements AfterContentInit, OnDestroy {
229
237
  */
230
238
  onContentAnimationEnd(event: AnimationEvent): void;
231
239
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StepperComponent, never>;
232
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StepperComponent, "hub-stepper, hub-ui-stepper, ng80-stepper", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "continueLabel": { "alias": "continueLabel"; "required": false; "isSignal": true; }; "submitLabel": { "alias": "submitLabel"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "completed": "completed"; "previousStep": "previousStep"; "nextStep": "nextStep"; }, ["steps", "stepperNavTpt", "previousButton", "nextButton", "submitButton"], ["button[previousButton]", "button[nextButton]", "button[submitButton]"], true, never>;
240
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StepperComponent, "hub-stepper, hub-ui-stepper, ng80-stepper", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "continueLabel": { "alias": "continueLabel"; "required": false; "isSignal": true; }; "submitLabel": { "alias": "submitLabel"; "required": false; "isSignal": true; }; "truncateTitles": { "alias": "truncateTitles"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "completed": "completed"; "previousStep": "previousStep"; "nextStep": "nextStep"; }, ["steps", "stepperNavTpt", "previousButton", "nextButton", "submitButton"], ["button[previousButton]", "button[nextButton]", "button[submitButton]"], true, never>;
233
241
  }
234
242
 
235
243
  /**
Binary file