ng-hub-ui-stepper 21.2.0 → 22.2.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
|
@@ -1,26 +1,46 @@
|
|
|
1
1
|
# ng-hub-ui-stepper
|
|
2
2
|
|
|
3
|
+
[Español](./README.es.md) | **English**
|
|
4
|
+
|
|
3
5
|
[](https://www.npmjs.com/package/ng-hub-ui-stepper)
|
|
4
6
|
[](https://github.com/carlos-morcillo/ng-hub-ui-stepper/blob/main/LICENSE)
|
|
5
7
|
|
|
6
8
|
A flexible, customizable, and accessible stepper component for Angular 21+. Perfect for multi-step forms, wizards, and guided user experiences with a focus on developer experience and modern standards.
|
|
7
9
|
|
|
8
10
|
> [!IMPORTANT]
|
|
9
|
-
> This version (21.2.
|
|
11
|
+
> This version (21.2.1) is built for **Angular 21** and uses the new **Signals** architecture.
|
|
12
|
+
|
|
13
|
+
## Documentation and Live Examples
|
|
14
|
+
|
|
15
|
+
This package is part of [Hub UI](https://hubui.dev/), a collection of Angular component libraries for standalone apps.
|
|
16
|
+
|
|
17
|
+
- Docs: https://hubui.dev/stepper/overview/
|
|
18
|
+
- Live examples: https://hubui.dev/stepper/examples/
|
|
19
|
+
- Hub UI: https://hubui.dev/
|
|
10
20
|
|
|
11
21
|
## 🧩 Library Family `ng-hub-ui`
|
|
12
22
|
|
|
13
23
|
This library is part of the **ng-hub-ui** ecosystem:
|
|
14
24
|
|
|
15
|
-
- [**ng-hub-ui-accordion**](https://www.npmjs.com/package/ng-hub-ui-accordion)
|
|
25
|
+
- [**ng-hub-ui-accordion**](https://www.npmjs.com/package/ng-hub-ui-accordion) (deprecated — use ng-hub-ui-panels)
|
|
26
|
+
- [**ng-hub-ui-action-sheet**](https://www.npmjs.com/package/ng-hub-ui-action-sheet)
|
|
16
27
|
- [**ng-hub-ui-avatar**](https://www.npmjs.com/package/ng-hub-ui-avatar)
|
|
17
28
|
- [**ng-hub-ui-board**](https://www.npmjs.com/package/ng-hub-ui-board)
|
|
18
29
|
- [**ng-hub-ui-breadcrumbs**](https://www.npmjs.com/package/ng-hub-ui-breadcrumbs)
|
|
19
30
|
- [**ng-hub-ui-calendar**](https://www.npmjs.com/package/ng-hub-ui-calendar)
|
|
31
|
+
- [**ng-hub-ui-dropdown**](https://www.npmjs.com/package/ng-hub-ui-dropdown)
|
|
32
|
+
- [**ng-hub-ui-ds**](https://www.npmjs.com/package/ng-hub-ui-ds)
|
|
33
|
+
- [**ng-hub-ui-forms**](https://www.npmjs.com/package/ng-hub-ui-forms)
|
|
34
|
+
- [**ng-hub-ui-history**](https://www.npmjs.com/package/ng-hub-ui-history)
|
|
35
|
+
- [**ng-hub-ui-milestones**](https://www.npmjs.com/package/ng-hub-ui-milestones)
|
|
20
36
|
- [**ng-hub-ui-modal**](https://www.npmjs.com/package/ng-hub-ui-modal)
|
|
37
|
+
- [**ng-hub-ui-nav**](https://www.npmjs.com/package/ng-hub-ui-nav)
|
|
21
38
|
- [**ng-hub-ui-paginable**](https://www.npmjs.com/package/ng-hub-ui-paginable)
|
|
39
|
+
- [**ng-hub-ui-panels**](https://www.npmjs.com/package/ng-hub-ui-panels)
|
|
22
40
|
- [**ng-hub-ui-portal**](https://www.npmjs.com/package/ng-hub-ui-portal)
|
|
23
|
-
- [**ng-hub-ui-
|
|
41
|
+
- [**ng-hub-ui-skeleton**](https://www.npmjs.com/package/ng-hub-ui-skeleton)
|
|
42
|
+
- [**ng-hub-ui-sortable**](https://www.npmjs.com/package/ng-hub-ui-sortable)
|
|
43
|
+
- [**ng-hub-ui-stepper**](https://www.npmjs.com/package/ng-hub-ui-stepper) ← You are here
|
|
24
44
|
- [**ng-hub-ui-utils**](https://www.npmjs.com/package/ng-hub-ui-utils)
|
|
25
45
|
|
|
26
46
|
## Table of Contents
|
|
@@ -154,6 +174,7 @@ Project your own buttons to override the default footer.
|
|
|
154
174
|
| `backLabel` | `string` | `'Back'` | Label for the back button. |
|
|
155
175
|
| `continueLabel` | `string` | `'Continue'` | Label for the continue button. |
|
|
156
176
|
| `submitLabel` | `string` | `'Submit'` | Label for the submit button. |
|
|
177
|
+
| `variant` | `string` | `'primary'` | Semantic accent for the active step pill and the next / submit controls. Built-in values: `primary`, `success`, `danger`, `warning`, `info`. Any other string is also accepted and resolves through `--hub-sys-color-<variant>`. |
|
|
157
178
|
| `options` | `StepperOptions` | `{}` | Visual and layout configuration. |
|
|
158
179
|
|
|
159
180
|
| Output | Type | Description |
|
|
@@ -198,6 +219,33 @@ Customize the component using CSS variables. For a complete list of available to
|
|
|
198
219
|
}
|
|
199
220
|
```
|
|
200
221
|
|
|
222
|
+
### Semantic accent
|
|
223
|
+
|
|
224
|
+
The `--hub-stepper-accent` token drives the active step pill and the next / submit controls. It defaults to `var(--hub-sys-color-primary)`. The easiest way to set it is the `variant` input (see [API Reference](#steppercomponent)), but you can also override the token directly:
|
|
225
|
+
|
|
226
|
+
```css
|
|
227
|
+
.my-stepper {
|
|
228
|
+
--hub-stepper-accent: var(--hub-sys-color-success);
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Sass mixin
|
|
233
|
+
|
|
234
|
+
For full theming in a single call, the package ships a `hub-stepper-theme()` Sass mixin. Every parameter is optional and defaults to `null`, so only the ones you pass are emitted as `--hub-stepper-*` overrides:
|
|
235
|
+
|
|
236
|
+
```scss
|
|
237
|
+
@use 'ng-hub-ui-stepper/styles/mixins/stepper-theme' as *;
|
|
238
|
+
|
|
239
|
+
.checkout-stepper {
|
|
240
|
+
@include hub-stepper-theme(
|
|
241
|
+
$accent: var(--hub-sys-color-success),
|
|
242
|
+
$gap: 1.5rem,
|
|
243
|
+
$nav-link-active-color: #fff,
|
|
244
|
+
$sidebar-width: 220px
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
201
249
|
## Contributing
|
|
202
250
|
|
|
203
251
|
We welcome contributions! Please follow our [Commit Guidelines](https://github.com/carlos-morcillo/ng-hub-ui/blob/main/CONTRIBUTING.md).
|
|
@@ -217,4 +265,3 @@ If you find this project helpful, consider supporting its development:
|
|
|
217
265
|
## License
|
|
218
266
|
|
|
219
267
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
220
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
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
|
-
import { NgTemplateOutlet } from '@angular/common';
|
|
3
|
+
import { NgTemplateOutlet, DOCUMENT } from '@angular/common';
|
|
4
4
|
import { TranslatePipe, UcfirstPipe, HUB_TRANSLATION_CONFIG, HubTranslationService } from 'ng-hub-ui-utils';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -14,11 +14,12 @@ class NextButtonDirective {
|
|
|
14
14
|
const nextIndex = this.stepper.currentIndex() + 1;
|
|
15
15
|
const nextStep = this.stepper.steps()?.[nextIndex];
|
|
16
16
|
return !nextStep || nextStep.disabled;
|
|
17
|
-
},
|
|
18
|
-
|
|
19
|
-
static
|
|
17
|
+
}, /* @ts-ignore */
|
|
18
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NextButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
20
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: NextButtonDirective, isStandalone: true, selector: "button[nextButton], button[continueButton]", host: { listeners: { "click": "stepper.goToNext()" }, properties: { "disabled": "disabled()" }, classAttribute: "stepper__button stepper__button--next" }, ngImport: i0 });
|
|
20
21
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NextButtonDirective, decorators: [{
|
|
22
23
|
type: Directive,
|
|
23
24
|
args: [{
|
|
24
25
|
selector: 'button[nextButton], button[continueButton]',
|
|
@@ -42,11 +43,12 @@ class PreviousButtonDirective {
|
|
|
42
43
|
const prevIndex = this.stepper.currentIndex() - 1;
|
|
43
44
|
const prevStep = this.stepper.steps()?.[prevIndex];
|
|
44
45
|
return !prevStep || prevStep.disabled;
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
static
|
|
46
|
+
}, /* @ts-ignore */
|
|
47
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
48
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: PreviousButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
49
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: PreviousButtonDirective, isStandalone: true, selector: "button[previousButton], button[backButton]", host: { listeners: { "click": "stepper.goToPrevious()" }, properties: { "disabled": "disabled()" }, classAttribute: "stepper__button stepper__button--back" }, ngImport: i0 });
|
|
48
50
|
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: PreviousButtonDirective, decorators: [{
|
|
50
52
|
type: Directive,
|
|
51
53
|
args: [{
|
|
52
54
|
selector: 'button[previousButton], button[backButton]',
|
|
@@ -72,11 +74,14 @@ class StepComponent {
|
|
|
72
74
|
* Zero-based position of this step within the parent stepper.
|
|
73
75
|
* Assigned automatically by `StepperComponent` — do not set this manually.
|
|
74
76
|
*/
|
|
75
|
-
index = signal(0,
|
|
77
|
+
index = signal(0, /* @ts-ignore */
|
|
78
|
+
...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
|
|
76
79
|
/** Optional display title rendered in the step navigation. */
|
|
77
|
-
title = input(
|
|
80
|
+
title = input(/* @ts-ignore */
|
|
81
|
+
...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
|
|
78
82
|
/** Whether the step is disabled and cannot be navigated to. */
|
|
79
|
-
disabled = input(false,
|
|
83
|
+
disabled = input(false, /* @ts-ignore */
|
|
84
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
80
85
|
/** Template reference used by the parent stepper to render step content. */
|
|
81
86
|
innerTemplate = viewChild.required('innerTemplate');
|
|
82
87
|
/** Returns the animation state key consumed by content transitions. */
|
|
@@ -97,10 +102,10 @@ class StepComponent {
|
|
|
97
102
|
isAccessible() {
|
|
98
103
|
return !this.disabled;
|
|
99
104
|
}
|
|
100
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
101
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
105
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
106
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.1", type: StepComponent, isStandalone: true, selector: "hub-step, hub-ui-step, ng80-step", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "innerTemplate", first: true, predicate: ["innerTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<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", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
102
107
|
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepComponent, decorators: [{
|
|
104
109
|
type: Component,
|
|
105
110
|
args: [{ selector: 'hub-step, hub-ui-step, ng80-step', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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" }]
|
|
106
111
|
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], innerTemplate: [{ type: i0.ViewChild, args: ['innerTemplate', { isSignal: true }] }] } });
|
|
@@ -114,10 +119,10 @@ class StepperNavDirective {
|
|
|
114
119
|
constructor(template) {
|
|
115
120
|
this.template = template;
|
|
116
121
|
}
|
|
117
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
118
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
122
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperNavDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
123
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: StepperNavDirective, isStandalone: true, selector: "[hubStepperNav], [stepperNav]", ngImport: i0 });
|
|
119
124
|
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperNavDirective, decorators: [{
|
|
121
126
|
type: Directive,
|
|
122
127
|
args: [{
|
|
123
128
|
selector: '[hubStepperNav], [stepperNav]'
|
|
@@ -131,11 +136,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
131
136
|
class SubmitButtonDirective {
|
|
132
137
|
stepper = inject(StepperComponent);
|
|
133
138
|
/** Reflects whether completion is currently allowed. */
|
|
134
|
-
disabled = computed(() => this.stepper.currentStep?.disabled() ?? false,
|
|
135
|
-
|
|
136
|
-
static
|
|
139
|
+
disabled = computed(() => this.stepper.currentStep?.disabled() ?? false, /* @ts-ignore */
|
|
140
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
141
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SubmitButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
142
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: SubmitButtonDirective, isStandalone: true, selector: "button[submitButton]", host: { listeners: { "click": "stepper.complete()" }, properties: { "disabled": "disabled()" }, classAttribute: "stepper__button stepper__button--submit" }, ngImport: i0 });
|
|
137
143
|
}
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SubmitButtonDirective, decorators: [{
|
|
139
145
|
type: Directive,
|
|
140
146
|
args: [{
|
|
141
147
|
selector: 'button[submitButton]',
|
|
@@ -169,6 +175,8 @@ var StepperLayout;
|
|
|
169
175
|
* Renders and controls a multi-step workflow.
|
|
170
176
|
* It coordinates navigation, state transitions and projected templates for steps and controls.
|
|
171
177
|
*/
|
|
178
|
+
/** Variants with exact design-system token coverage via the SCSS `@each` loop. */
|
|
179
|
+
const STEPPER_BUILT_IN_VARIANTS = new Set(['primary', 'success', 'danger', 'warning', 'info']);
|
|
172
180
|
class StepperComponent {
|
|
173
181
|
#cdr = inject(ChangeDetectorRef);
|
|
174
182
|
#hostRef = inject((ElementRef));
|
|
@@ -176,17 +184,40 @@ class StepperComponent {
|
|
|
176
184
|
/** Exposes layout enum values to the template. */
|
|
177
185
|
StepperLayout = StepperLayout;
|
|
178
186
|
/** Stores the index of the currently active step. */
|
|
179
|
-
currentIndex = signal(0,
|
|
187
|
+
currentIndex = signal(0, /* @ts-ignore */
|
|
188
|
+
...(ngDevMode ? [{ debugName: "currentIndex" }] : /* istanbul ignore next */ []));
|
|
180
189
|
/** Stores whether content transition animation is currently running. */
|
|
181
|
-
contentAnimating = signal(false,
|
|
190
|
+
contentAnimating = signal(false, /* @ts-ignore */
|
|
191
|
+
...(ngDevMode ? [{ debugName: "contentAnimating" }] : /* istanbul ignore next */ []));
|
|
182
192
|
/** Stores transition direction used by the CSS animation classes. */
|
|
183
|
-
animationDirection = signal(StepperAnimationDirection.Forward,
|
|
193
|
+
animationDirection = signal(StepperAnimationDirection.Forward, /* @ts-ignore */
|
|
194
|
+
...(ngDevMode ? [{ debugName: "animationDirection" }] : /* istanbul ignore next */ []));
|
|
195
|
+
/**
|
|
196
|
+
* Semantic accent of the stepper: `'primary'` · `'success'` · `'danger'` ·
|
|
197
|
+
* `'warning'` · `'info'`, or any custom string (read as `--hub-sys-color-<variant>`).
|
|
198
|
+
* Re-bases `--hub-stepper-accent`, which drives the active step pill and the
|
|
199
|
+
* next / submit controls. Defaults to primary.
|
|
200
|
+
*/
|
|
201
|
+
variant = input(/* @ts-ignore */
|
|
202
|
+
...(ngDevMode ? [undefined, { debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
203
|
+
/**
|
|
204
|
+
* Inline accent for custom (non-built-in) variants — the built-in five are
|
|
205
|
+
* resolved by the SCSS `@each` loop, so this returns `null` for them.
|
|
206
|
+
*/
|
|
207
|
+
customAccent = computed(() => {
|
|
208
|
+
const v = this.variant();
|
|
209
|
+
return v && !STEPPER_BUILT_IN_VARIANTS.has(v) ? `var(--hub-sys-color-${v})` : null;
|
|
210
|
+
}, /* @ts-ignore */
|
|
211
|
+
...(ngDevMode ? [{ debugName: "customAccent" }] : /* istanbul ignore next */ []));
|
|
184
212
|
/** Optional custom label for the back button. */
|
|
185
|
-
backLabel = input(null,
|
|
213
|
+
backLabel = input(null, /* @ts-ignore */
|
|
214
|
+
...(ngDevMode ? [{ debugName: "backLabel" }] : /* istanbul ignore next */ []));
|
|
186
215
|
/** Optional custom label for the continue button. */
|
|
187
|
-
continueLabel = input(null,
|
|
216
|
+
continueLabel = input(null, /* @ts-ignore */
|
|
217
|
+
...(ngDevMode ? [{ debugName: "continueLabel" }] : /* istanbul ignore next */ []));
|
|
188
218
|
/** Optional custom label for the submit button. */
|
|
189
|
-
submitLabel = input(null,
|
|
219
|
+
submitLabel = input(null, /* @ts-ignore */
|
|
220
|
+
...(ngDevMode ? [{ debugName: "submitLabel" }] : /* istanbul ignore next */ []));
|
|
190
221
|
/** Emits once the user completes the last step. */
|
|
191
222
|
completed = output();
|
|
192
223
|
/** Emits the new index when moving to the previous step. */
|
|
@@ -194,23 +225,29 @@ class StepperComponent {
|
|
|
194
225
|
/** Emits the new index when moving to the next step. */
|
|
195
226
|
nextStep = output();
|
|
196
227
|
/** Content-projected step definitions. */
|
|
197
|
-
steps = contentChildren(StepComponent,
|
|
228
|
+
steps = contentChildren(StepComponent, /* @ts-ignore */
|
|
229
|
+
...(ngDevMode ? [{ debugName: "steps" }] : /* istanbul ignore next */ []));
|
|
198
230
|
/** Automatically assigns each step its zero-based position when the steps collection changes. */
|
|
199
231
|
assignStepIndexes = effect(() => {
|
|
200
232
|
this.steps().forEach((step, i) => step.index.set(i));
|
|
201
|
-
},
|
|
233
|
+
}, /* @ts-ignore */
|
|
234
|
+
...(ngDevMode ? [{ debugName: "assignStepIndexes" }] : /* istanbul ignore next */ []));
|
|
202
235
|
/** Optional content-projected template for custom navigation. */
|
|
203
|
-
stepperNavTpt = contentChild(StepperNavDirective, { ...(ngDevMode ? { debugName: "stepperNavTpt" } : {}), read: TemplateRef });
|
|
236
|
+
stepperNavTpt = contentChild(StepperNavDirective, { ...(ngDevMode ? { debugName: "stepperNavTpt" } : /* istanbul ignore next */ {}), read: TemplateRef });
|
|
204
237
|
/** Optional custom projected previous button. */
|
|
205
|
-
previousButton = contentChild(PreviousButtonDirective,
|
|
238
|
+
previousButton = contentChild(PreviousButtonDirective, /* @ts-ignore */
|
|
239
|
+
...(ngDevMode ? [{ debugName: "previousButton" }] : /* istanbul ignore next */ []));
|
|
206
240
|
/** Optional custom projected next button. */
|
|
207
|
-
nextButton = contentChild(NextButtonDirective,
|
|
241
|
+
nextButton = contentChild(NextButtonDirective, /* @ts-ignore */
|
|
242
|
+
...(ngDevMode ? [{ debugName: "nextButton" }] : /* istanbul ignore next */ []));
|
|
208
243
|
/** Optional custom projected submit button. */
|
|
209
|
-
submitButton = contentChild(SubmitButtonDirective,
|
|
244
|
+
submitButton = contentChild(SubmitButtonDirective, /* @ts-ignore */
|
|
245
|
+
...(ngDevMode ? [{ debugName: "submitButton" }] : /* istanbul ignore next */ []));
|
|
210
246
|
/**
|
|
211
247
|
* Optional visual and layout configuration for the stepper container.
|
|
212
248
|
*/
|
|
213
|
-
options = input({},
|
|
249
|
+
options = input({}, /* @ts-ignore */
|
|
250
|
+
...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
|
|
214
251
|
/**
|
|
215
252
|
* Returns the active layout mode.
|
|
216
253
|
*
|
|
@@ -363,18 +400,20 @@ class StepperComponent {
|
|
|
363
400
|
this.contentAnimating.set(false);
|
|
364
401
|
this.#cdr.detectChanges();
|
|
365
402
|
}
|
|
366
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
367
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: StepperComponent, isStandalone: true, selector: "hub-stepper, hub-ui-stepper, ng80-stepper", inputs: { 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()" }, 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\">→</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">←</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\">←</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">→</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: [":host{--hub-stepper-primary-color: var(--hub-sys-color-primary, #009ef7);--hub-stepper-background-color: var(--hub-sys-surface-elevated, #f3f6f9);--hub-stepper-text-color: var(--hub-sys-text-primary, #181c32);--hub-stepper-border-color: var(--hub-sys-border-color-default, #d8dde6);--hub-stepper-surface-color: var(--hub-sys-surface-page, #ffffff);--hub-stepper-nav-bg: var(--hub-sys-surface-page, transparent);--hub-stepper-nav-padding: 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, #495057);--hub-stepper-nav-link-hover-color: var(--hub-sys-link-hover-color, #0d6efd);--hub-stepper-nav-link-hover-bg: var(--hub-sys-state-hover-bg, #f8f9fa);--hub-stepper-nav-link-active-color: var(--hub-ref-color-white, #ffffff);--hub-stepper-nav-link-active-bg: var(--hub-sys-color-primary, #0d6efd);--hub-stepper-nav-link-active-border-color: var(--hub-sys-color-primary, #0d6efd);--hub-stepper-nav-link-disabled-color: var(--hub-sys-text-muted, #adb5bd);--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, .75rem);--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.2);--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, .75rem);--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: 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, 18px);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, .5rem);padding:var(--hub-stepper-nav-padding);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:999px;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, .5rem);background-color:var(--hub-stepper-surface-color);padding:var(--hub-stepper-content-padding);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-ref-color-white, #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-ref-color-white, #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-ref-color-white, #ffffff)}:host ::ng-deep button.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}\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 });
|
|
403
|
+
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\">→</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">←</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\">←</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">→</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 });
|
|
368
405
|
}
|
|
369
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
406
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperComponent, decorators: [{
|
|
370
407
|
type: Component,
|
|
371
408
|
args: [{ selector: 'hub-stepper, hub-ui-stepper, ng80-stepper', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, TranslatePipe, UcfirstPipe], host: {
|
|
372
409
|
class: 'stepper',
|
|
373
410
|
'[class.stepper--layout-vertical]': 'layout() === StepperLayout.Vertical',
|
|
374
411
|
'[class.stepper--layout-sidebar]': 'layout() === StepperLayout.Sidebar',
|
|
375
|
-
'[class.stepper--rtl]': 'isRtl()'
|
|
376
|
-
}, 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\">→</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">←</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\">←</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">→</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: [":host{--hub-stepper-primary-color: var(--hub-sys-color-primary, #009ef7);--hub-stepper-background-color: var(--hub-sys-surface-elevated, #f3f6f9);--hub-stepper-text-color: var(--hub-sys-text-primary, #181c32);--hub-stepper-border-color: var(--hub-sys-border-color-default, #d8dde6);--hub-stepper-surface-color: var(--hub-sys-surface-page, #ffffff);--hub-stepper-nav-bg: var(--hub-sys-surface-page, transparent);--hub-stepper-nav-padding: 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, #495057);--hub-stepper-nav-link-hover-color: var(--hub-sys-link-hover-color, #0d6efd);--hub-stepper-nav-link-hover-bg: var(--hub-sys-state-hover-bg, #f8f9fa);--hub-stepper-nav-link-active-color: var(--hub-ref-color-white, #ffffff);--hub-stepper-nav-link-active-bg: var(--hub-sys-color-primary, #0d6efd);--hub-stepper-nav-link-active-border-color: var(--hub-sys-color-primary, #0d6efd);--hub-stepper-nav-link-disabled-color: var(--hub-sys-text-muted, #adb5bd);--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, .75rem);--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.2);--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, .75rem);--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: 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, 18px);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, .5rem);padding:var(--hub-stepper-nav-padding);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:999px;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, .5rem);background-color:var(--hub-stepper-surface-color);padding:var(--hub-stepper-content-padding);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-ref-color-white, #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-ref-color-white, #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-ref-color-white, #ffffff)}:host ::ng-deep button.stepper__button:disabled{opacity:var(--hub-stepper-disabled-opacity);cursor:not-allowed}\n"] }]
|
|
377
|
-
|
|
412
|
+
'[class.stepper--rtl]': 'isRtl()',
|
|
413
|
+
'[attr.data-variant]': 'variant() ?? null',
|
|
414
|
+
'[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\">→</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">←</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\">←</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">→</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 }] }] } });
|
|
378
417
|
|
|
379
418
|
/** English dictionary for default stepper action labels. */
|
|
380
419
|
const locale$9 = {
|
|
@@ -485,10 +524,10 @@ class StepTriggerDirective {
|
|
|
485
524
|
constructor(template) {
|
|
486
525
|
this.template = template;
|
|
487
526
|
}
|
|
488
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
489
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
527
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepTriggerDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
528
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: StepTriggerDirective, isStandalone: true, selector: "[hubStepTrigger] [stepTrigger]", ngImport: i0 });
|
|
490
529
|
}
|
|
491
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
530
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepTriggerDirective, decorators: [{
|
|
492
531
|
type: Directive,
|
|
493
532
|
args: [{
|
|
494
533
|
selector: '[hubStepTrigger] [stepTrigger]'
|
|
@@ -546,8 +585,8 @@ class StepperModule {
|
|
|
546
585
|
]
|
|
547
586
|
};
|
|
548
587
|
}
|
|
549
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
550
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
588
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
589
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: StepperModule, imports: [StepperComponent,
|
|
551
590
|
StepComponent,
|
|
552
591
|
StepTriggerDirective,
|
|
553
592
|
StepperNavDirective,
|
|
@@ -560,9 +599,9 @@ class StepperModule {
|
|
|
560
599
|
PreviousButtonDirective,
|
|
561
600
|
NextButtonDirective,
|
|
562
601
|
SubmitButtonDirective] });
|
|
563
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
602
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperModule });
|
|
564
603
|
}
|
|
565
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
604
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperModule, decorators: [{
|
|
566
605
|
type: NgModule,
|
|
567
606
|
args: [{
|
|
568
607
|
imports: [...STEPPER_STANDALONE],
|
|
@@ -576,6 +615,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
576
615
|
class StepperThemeService {
|
|
577
616
|
/** Angular renderer used to update root-level CSS variables safely. */
|
|
578
617
|
renderer;
|
|
618
|
+
/** Injected document token; SSR-safe alternative to the global `document`. */
|
|
619
|
+
document = inject(DOCUMENT);
|
|
579
620
|
/**
|
|
580
621
|
* Creates a renderer instance for dynamic style updates.
|
|
581
622
|
*
|
|
@@ -591,13 +632,13 @@ class StepperThemeService {
|
|
|
591
632
|
*/
|
|
592
633
|
setTheme(theme) {
|
|
593
634
|
Object.keys(theme).forEach((key) => {
|
|
594
|
-
this.renderer.setStyle(document.documentElement, `--hub-stepper-${key}`, theme[key]);
|
|
635
|
+
this.renderer.setStyle(this.document.documentElement, `--hub-stepper-${key}`, theme[key]);
|
|
595
636
|
});
|
|
596
637
|
}
|
|
597
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
598
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
638
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperThemeService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
639
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperThemeService, providedIn: 'root' });
|
|
599
640
|
}
|
|
600
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
641
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: StepperThemeService, decorators: [{
|
|
601
642
|
type: Injectable,
|
|
602
643
|
args: [{
|
|
603
644
|
providedIn: 'root'
|
|
@@ -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\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@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}\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/** 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\">→</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">←</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\">←</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">→</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 { Injectable, Renderer2, RendererFactory2 } 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/**\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(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 { 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\">→</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">←</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\">←</span>\n } @else {\n <span class=\"stepper__button-icon\" aria-hidden=\"true\">→</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":";;;;;AAGA;;;AAGG;MAUU,mBAAmB,CAAA;AACtB,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAGlC,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC;AAClD,QAAA,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;IACtC,CAAC;iFAAC;uGARU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,uCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,KAAK,EAAE,uCAAuC;AAC9C,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE;AACX;AACD,iBAAA;;;ACZD;;;AAGG;MAUU,uBAAuB,CAAA;AAC1B,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAGlC,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC;AAClD,QAAA,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;IACtC,CAAC;iFAAC;uGARU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,uCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,KAAK,EAAE,uCAAuC;AAC9C,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE;AACX;AACD,iBAAA;;;ACHD;AACA,MAAM,kBAAkB,GAAG,GAAG;AAE9B;;;AAGG;MAOU,aAAa,CAAA;;AAEzB,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAElC;;;AAGG;IACM,KAAK,GAAG,MAAM,CAAS,CAAC;8EAAC;;AAGzB,IAAA,KAAK,GAAG,KAAK;yFAAU;;IAGvB,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;;AAGvB,IAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAmB,eAAe,CAAC;;AAG9E,IAAA,IAAI,cAAc,GAAA;AACjB,QAAA,OAAO,GAAG;IACX;;IAGA,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC;QACtE;IACD;AAEA;;;;AAIG;IACH,YAAY,GAAA;AACX,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ;IACtB;uGAtCY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,ieCzB1B,8MASA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDgBa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACC,kCAAkC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8MAAA,EAAA;qQAmBe,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AExC9E;;AAEG;MAIU,mBAAmB,CAAA;AAEZ,IAAA,QAAA;;AAAnB,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAqB;uGAFpC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACJD;;;AAGG;MAUU,qBAAqB,CAAA;AACxB,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAGlC,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,KAAK;iFAAC;uGAJrE,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,yCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,KAAK,EAAE,yCAAyC;AAChD,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE;AACX;AACD,iBAAA;;;ACfD;;AAEG;IACS;AAAZ,CAAA,UAAY,yBAAyB,EAAA;AACpC,IAAA,yBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,yBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACtB,CAAC,EAHW,yBAAyB,KAAzB,yBAAyB,GAAA,EAAA,CAAA,CAAA;AAKrC;;AAEG;IACS;AAAZ,CAAA,UAAY,aAAa,EAAA;AACxB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACpB,CAAC,EAHW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;ACezB;;;AAGG;AACH;AACA,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;MAiBzF,gBAAgB,CAAA;AAC5B,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,IAAA,QAAQ,GAAG,MAAM,EAAC,UAAuB,EAAC;IAC1C,iBAAiB,GAAkB,IAAI;;IAG9B,aAAa,GAAG,aAAa;;IAG7B,YAAY,GAAG,MAAM,CAAC,CAAC;qFAAC;;IAGxB,gBAAgB,GAAG,MAAM,CAAC,KAAK;yFAAC;;AAGhC,IAAA,kBAAkB,GAAG,MAAM,CAA4B,yBAAyB,CAAC,OAAO;2FAAC;AAElG;;;;;AAKG;AACM,IAAA,OAAO,GAAG,KAAK;2FAAU;AAElC;;;AAGG;AACgB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAA,CAAA,CAAG,GAAG,IAAI;IACnF,CAAC;qFAAC;;IAGO,SAAS,GAAG,KAAK,CAAgB,IAAI;kFAAC;;IAGtC,aAAa,GAAG,KAAK,CAAgB,IAAI;sFAAC;;IAG1C,WAAW,GAAG,KAAK,CAAgB,IAAI;oFAAC;;IAGxC,SAAS,GAAG,MAAM,EAAQ;;IAG1B,YAAY,GAAG,MAAM,EAAU;;IAG/B,QAAQ,GAAG,MAAM,EAAU;;IAG3B,KAAK,GAAG,eAAe,CAAC,aAAa;8EAAC;;AAG5B,IAAA,iBAAiB,GAAG,MAAM,CAAC,MAAK;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;0FAAC;;IAGO,aAAa,GAAG,YAAY,CAAC,mBAAmB,qFAAI,IAAI,EAAE,WAAW,EAAA,CAAG;;IAGxE,cAAc,GAAG,YAAY,CAAC,uBAAuB;uFAAC;;IAGtD,UAAU,GAAG,YAAY,CAAC,mBAAmB;mFAAC;;IAG9C,YAAY,GAAG,YAAY,CAAC,qBAAqB;qFAAC;AAE3D;;AAEG;IACM,OAAO,GAAG,KAAK,CAAiB,EAAE;gFAAC;AAE5C;;;;AAIG;IACH,MAAM,GAAA;QACL,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,IAAI,aAAa,CAAC,QAAQ;IACxD;AAEA;;;;AAIG;IACH,KAAK,GAAA;QACJ,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,KAAK;IACpC;;AAGA,IAAA,IAAI,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,IAAI;IACnD;;IAGA,iBAAiB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC3E;;IAGA,kBAAkB,GAAA;QACjB,OAAO,IAAI,CAAC,kBAAkB,EAAE,KAAK,yBAAyB,CAAC,OAAO;IACvE;;IAGA,mBAAmB,GAAA;QAClB,OAAO,IAAI,CAAC,kBAAkB,EAAE,KAAK,yBAAyB,CAAC,QAAQ;IACxE;;IAGA,kBAAkB,GAAA;QACjB,IAAI,CAAC,eAAe,EAAE;IACvB;;IAGA,WAAW,GAAA;QACV,IAAI,CAAC,mBAAmB,EAAE;IAC3B;AAEA;;AAEG;IACK,eAAe,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC1B;AAEA;;AAEG;IACH,YAAY,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACnC;AAEA;;AAEG;IACH,QAAQ,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACnC;AAEA;;;;AAIG;AACH,IAAA,IAAI,CAAC,KAAa,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE;AACzC,YAAA,IAAI,KAAK,KAAK,aAAa,EAAE;gBAC5B;YACD;YACA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,GAAG,aAAa,GAAG,yBAAyB,CAAC,OAAO,GAAG,yBAAyB,CAAC,QAAQ,CAAC;AAC3H,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACzB,YAAA,IAAI,KAAK,GAAG,aAAa,EAAE;AAC1B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B;AAAO,iBAAA,IAAI,KAAK,GAAG,aAAa,EAAE;AACjC,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B;QACD;aAAO;AACN,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,KAAK,CAAA,CAAE,CAAC;QAC9C;IACD;AAEA;;;;;AAKG;AACH,IAAA,aAAa,CAAC,KAAa,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACvE;AAEA;;AAEG;IACH,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACtB;AAEA;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,QAAQ,EAAE;IAC1C;AAEA;;;;;AAKG;AACH,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAChC,QAAA,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM;IACjD;AAEA;;AAEG;IACK,qBAAqB,GAAA;QAC5B,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC9B;QACD;QACA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,qBAAqB,CAAC,MAAK;AAC9D,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC1B,QAAA,CAAC,CAAC;IACH;AAEA;;AAEG;IACK,mBAAmB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AACpC,YAAA,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACvD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC9B;IACD;AAEA;;;;AAIG;AACH,IAAA,qBAAqB,CAAC,KAAqB,EAAA;QAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE;YACzC;QACD;AACA,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC1B;uGApPY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0rCAqDK,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQR,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,8EAGvC,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG3B,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGjB,qBAAqB,gECtH3D,ixHA2HA,EAAA,MAAA,EAAA,CAAA,+7UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrFW,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,6CAAE,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAU1C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAf5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2CAA2C,EAAA,eAAA,EAGpC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,gBAAgB,EAAE,aAAa,EAAE,WAAW,CAAC,EAAA,IAAA,EACjD;AACL,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,kCAAkC,EAAE,qCAAqC;AACzE,wBAAA,iCAAiC,EAAE,oCAAoC;AACvE,wBAAA,sBAAsB,EAAE,SAAS;AACjC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,8BAA8B,EAAE;AAChC,qBAAA,EAAA,QAAA,EAAA,ixHAAA,EAAA,MAAA,EAAA,CAAA,+7UAAA,CAAA,EAAA;AAuDgC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,aAAa,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAQR,mBAAmB,CAAA,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGzC,uBAAuB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAG3B,mBAAmB,8FAGjB,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEtH3D;AACO,MAAMA,QAAM,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE;AACR;CACD;;ACRD;AACO,MAAMA,QAAM,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,MAAM,EAAE;AACR;CACD;;ACRD;AACO,MAAMA,QAAM,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE;AACR;CACD;;ACRD;AACO,MAAMA,QAAM,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE;AACR;CACD;;ACRD;AACO,MAAMA,QAAM,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,MAAM,EAAE;AACR;CACD;;ACRD;AACO,MAAMA,QAAM,GAAG;AACrB,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,MAAM,EAAE;AACR;CACD;;ACRD;AACO,MAAMA,QAAM,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE;AACR;CACD;;ACRD;AACO,MAAMA,QAAM,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,MAAM,EAAE;AACR;CACD;;ACRD;AACO,MAAMA,QAAM,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE;AACR;CACD;;ACRD;AACO,MAAM,MAAM,GAAG;AACrB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,MAAM,EAAE;AACR;CACD;;ACND;;AAEG;MAIU,oBAAoB,CAAA;AAEb,IAAA,QAAA;;AAAnB,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAqB;uGAFpC,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACcD;AACA,MAAM,gBAAgB,GAAG,IAAI;AAE7B;AACA,MAAM,oBAAoB,GAAG;AAC5B,IAAA,CAACC,QAAQ,CAAC,IAAI,GAAGA,QAAQ,CAAC,IAAI;AAC9B,IAAA,CAACC,QAAQ,CAAC,IAAI,GAAGA,QAAQ,CAAC,IAAI;AAC9B,IAAA,CAACC,QAAQ,CAAC,IAAI,GAAGA,QAAQ,CAAC,IAAI;AAC9B,IAAA,CAACC,QAAQ,CAAC,IAAI,GAAGA,QAAQ,CAAC,IAAI;AAC9B,IAAA,CAACC,QAAQ,CAAC,IAAI,GAAGA,QAAQ,CAAC,IAAI;AAC9B,IAAA,CAACC,QAAS,CAAC,IAAI,GAAGA,QAAS,CAAC,IAAI;AAChC,IAAA,CAACC,QAAQ,CAAC,IAAI,GAAGA,QAAQ,CAAC,IAAI;AAC9B,IAAA,CAACC,QAAQ,CAAC,IAAI,GAAGA,QAAQ,CAAC,IAAI;AAC9B,IAAA,CAACC,QAAQ,CAAC,IAAI,GAAGA,QAAQ,CAAC,IAAI;AAC9B,IAAA,CAACC,MAAQ,CAAC,IAAI,GAAGA,MAAQ,CAAC;CAC1B;AAED;AACA,MAAM,kBAAkB,GAAG;IAC1B,gBAAgB;IAChB,aAAa;IACb,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB;CACS;AAMV;;AAEG;MACU,aAAa,CAAA;AACzB;;;;;AAKG;IACH,OAAO,OAAO,CAAC,MAAsB,EAAA;QACpC,OAAO;AACN,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE;AACV,gBAAA;AACC,oBAAA,OAAO,EAAE,sBAAsB;AAC/B,oBAAA,QAAQ,EAAE;AACT,wBAAA,YAAY,EAAE,oBAAoB;AAClC,wBAAA,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,gBAAgB;AAC9C,wBAAA,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,IAAI;AAC9C;AACD,iBAAA;gBACD;AACA;SACD;IACF;uGAtBY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAhBzB,gBAAgB;YAChB,aAAa;YACb,oBAAoB;YACpB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;AACnB,YAAA,qBAAqB,aANrB,gBAAgB;YAChB,aAAa;YACb,oBAAoB;YACpB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,qBAAqB,CAAA,EAAA,CAAA;wGAUT,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC;AAChC,oBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB;AAC/B,iBAAA;;;ACjDD;;AAEG;MAIU,mBAAmB,CAAA;;AAEvB,IAAA,QAAQ;;AAGC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5C;;;;AAIG;AACH,IAAA,WAAA,CAAY,eAAiC,EAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IAC3D;AAEA;;;;AAIG;AACH,IAAA,QAAQ,CAAC,KAAgC,EAAA;QACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAA,cAAA,EAAiB,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1F,QAAA,CAAC,CAAC;IACH;uGAzBY,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFnB,MAAM,EAAA,CAAA;;2FAEN,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE;AACZ,iBAAA;;;ACRD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ng-hub-ui-stepper",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "22.2.0",
|
|
4
4
|
"description": "A flexible and customizable stepper component for Angular applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -17,16 +17,16 @@
|
|
|
17
17
|
"workflow",
|
|
18
18
|
"form-wizard"
|
|
19
19
|
],
|
|
20
|
-
"author": "Carlos Morcillo
|
|
20
|
+
"author": "Carlos Morcillo <carlos.morcillo@me.com> (https://www.carlosmorcillo.com)",
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"repository": {
|
|
23
23
|
"type": "git",
|
|
24
|
-
"url": "https://github.com/carlos-morcillo/ng-hub-ui-stepper.git"
|
|
24
|
+
"url": "git+https://github.com/carlos-morcillo/ng-hub-ui-stepper.git"
|
|
25
25
|
},
|
|
26
26
|
"bugs": {
|
|
27
27
|
"url": "https://github.com/carlos-morcillo/ng-hub-ui-stepper/issues"
|
|
28
28
|
},
|
|
29
|
-
"homepage": "https://
|
|
29
|
+
"homepage": "https://hubui.dev/",
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@angular/common": ">=21.1.2",
|
|
32
32
|
"@angular/core": ">=21.1.2",
|
|
@@ -50,5 +50,6 @@
|
|
|
50
50
|
"types": "./types/ng-hub-ui-stepper.d.ts",
|
|
51
51
|
"default": "./fesm2022/ng-hub-ui-stepper.mjs"
|
|
52
52
|
}
|
|
53
|
-
}
|
|
53
|
+
},
|
|
54
|
+
"type": "module"
|
|
54
55
|
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// hub-stepper-theme — one-call theming for `<hub-stepper>`
|
|
3
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
4
|
+
//
|
|
5
|
+
// Override any of the `--hub-stepper-*` design tokens in a single include.
|
|
6
|
+
// Every parameter is OPTIONAL and defaults to `null`: only the parameters you
|
|
7
|
+
// pass are emitted, so the rest keep the component's defaults. Token-based and
|
|
8
|
+
// self-contained (no Bootstrap dependencies).
|
|
9
|
+
//
|
|
10
|
+
// The semantic `variant` accent is applied automatically; use this mixin to
|
|
11
|
+
// restyle the shell — surfaces, nav pills, controls, spacing — or to set a
|
|
12
|
+
// brand accent on a custom selector.
|
|
13
|
+
//
|
|
14
|
+
// @example
|
|
15
|
+
//
|
|
16
|
+
// @use 'ng-hub-ui-stepper/styles/mixins/stepper-theme' as *;
|
|
17
|
+
//
|
|
18
|
+
// .checkout-stepper {
|
|
19
|
+
// @include hub-stepper-theme(
|
|
20
|
+
// $accent: var(--hub-sys-color-success),
|
|
21
|
+
// $gap: 1.5rem,
|
|
22
|
+
// $nav-link-active-color: #fff,
|
|
23
|
+
// $sidebar-width: 220px
|
|
24
|
+
// );
|
|
25
|
+
// }
|
|
26
|
+
//
|
|
27
|
+
// scss-docs-start hub-stepper-theme
|
|
28
|
+
@mixin hub-stepper-theme(
|
|
29
|
+
// ── Accent & surfaces ──
|
|
30
|
+
$accent: null,
|
|
31
|
+
$surface: null,
|
|
32
|
+
$background: null,
|
|
33
|
+
$text: null,
|
|
34
|
+
$border: null,
|
|
35
|
+
$gap: null,
|
|
36
|
+
$disabled-opacity: null,
|
|
37
|
+
// ── Nav (container) ──
|
|
38
|
+
$nav-bg: null,
|
|
39
|
+
$nav-padding-x: null,
|
|
40
|
+
$nav-padding-y: null,
|
|
41
|
+
$nav-border-width: null,
|
|
42
|
+
$nav-border-color: null,
|
|
43
|
+
$nav-gap: null,
|
|
44
|
+
// ── Nav links / step pills ──
|
|
45
|
+
$nav-link-color: null,
|
|
46
|
+
$nav-link-hover-color: null,
|
|
47
|
+
$nav-link-hover-bg: null,
|
|
48
|
+
$nav-link-active-color: null,
|
|
49
|
+
$nav-link-active-bg: null,
|
|
50
|
+
$nav-link-active-border-color: null,
|
|
51
|
+
$nav-link-disabled-color: null,
|
|
52
|
+
// ── Step trigger (pill) ──
|
|
53
|
+
$trigger-padding-x: null,
|
|
54
|
+
$trigger-padding-y: null,
|
|
55
|
+
$trigger-gap: null,
|
|
56
|
+
$trigger-font-size: null,
|
|
57
|
+
// ── Controls (footer buttons) ──
|
|
58
|
+
$controls-gap: null,
|
|
59
|
+
$controls-justify: null,
|
|
60
|
+
$control-padding-x: null,
|
|
61
|
+
$control-padding-y: null,
|
|
62
|
+
$control-font-size: null,
|
|
63
|
+
// ── Sidebar layout ──
|
|
64
|
+
$sidebar-width: null
|
|
65
|
+
) {
|
|
66
|
+
// Accent & surfaces
|
|
67
|
+
@if $accent != null {
|
|
68
|
+
// Feed the single accent slot AND re-derive the role family locally, so a
|
|
69
|
+
// brand accent applied via this mixin on a custom selector recomputes
|
|
70
|
+
// `-emphasis` / `-subtle` / `-on` (the `:host` derivations do not cascade
|
|
71
|
+
// to a different selector). No token is duplicated — the slot stays the
|
|
72
|
+
// single source of truth.
|
|
73
|
+
--hub-stepper-accent: #{$accent};
|
|
74
|
+
--hub-stepper-accent-emphasis: color-mix(in oklch, var(--hub-stepper-accent) 80%, var(--hub-sys-color-ink, #212529));
|
|
75
|
+
--hub-stepper-accent-subtle: color-mix(in oklch, var(--hub-stepper-accent) 12%, var(--hub-sys-surface-page, #fff));
|
|
76
|
+
--hub-stepper-accent-on: oklch(from var(--hub-stepper-accent) clamp(0, (0.62 - l) * 1000, 1) 0 h);
|
|
77
|
+
}
|
|
78
|
+
@if $surface != null {
|
|
79
|
+
--hub-stepper-surface-color: #{$surface};
|
|
80
|
+
}
|
|
81
|
+
@if $background != null {
|
|
82
|
+
--hub-stepper-background-color: #{$background};
|
|
83
|
+
}
|
|
84
|
+
@if $text != null {
|
|
85
|
+
--hub-stepper-text-color: #{$text};
|
|
86
|
+
}
|
|
87
|
+
@if $border != null {
|
|
88
|
+
--hub-stepper-border-color: #{$border};
|
|
89
|
+
}
|
|
90
|
+
@if $gap != null {
|
|
91
|
+
--hub-stepper-gap: #{$gap};
|
|
92
|
+
}
|
|
93
|
+
@if $disabled-opacity != null {
|
|
94
|
+
--hub-stepper-disabled-opacity: #{$disabled-opacity};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Nav container
|
|
98
|
+
@if $nav-bg != null {
|
|
99
|
+
--hub-stepper-nav-bg: #{$nav-bg};
|
|
100
|
+
}
|
|
101
|
+
@if $nav-padding-x != null {
|
|
102
|
+
--hub-stepper-nav-padding-x: #{$nav-padding-x};
|
|
103
|
+
}
|
|
104
|
+
@if $nav-padding-y != null {
|
|
105
|
+
--hub-stepper-nav-padding-y: #{$nav-padding-y};
|
|
106
|
+
}
|
|
107
|
+
@if $nav-border-width != null {
|
|
108
|
+
--hub-stepper-nav-border-width: #{$nav-border-width};
|
|
109
|
+
}
|
|
110
|
+
@if $nav-border-color != null {
|
|
111
|
+
--hub-stepper-nav-border-color: #{$nav-border-color};
|
|
112
|
+
}
|
|
113
|
+
@if $nav-gap != null {
|
|
114
|
+
--hub-stepper-nav-gap: #{$nav-gap};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Nav links / step pills
|
|
118
|
+
@if $nav-link-color != null {
|
|
119
|
+
--hub-stepper-nav-link-color: #{$nav-link-color};
|
|
120
|
+
}
|
|
121
|
+
@if $nav-link-hover-color != null {
|
|
122
|
+
--hub-stepper-nav-link-hover-color: #{$nav-link-hover-color};
|
|
123
|
+
}
|
|
124
|
+
@if $nav-link-hover-bg != null {
|
|
125
|
+
--hub-stepper-nav-link-hover-bg: #{$nav-link-hover-bg};
|
|
126
|
+
}
|
|
127
|
+
@if $nav-link-active-color != null {
|
|
128
|
+
--hub-stepper-nav-link-active-color: #{$nav-link-active-color};
|
|
129
|
+
}
|
|
130
|
+
@if $nav-link-active-bg != null {
|
|
131
|
+
--hub-stepper-nav-link-active-bg: #{$nav-link-active-bg};
|
|
132
|
+
}
|
|
133
|
+
@if $nav-link-active-border-color != null {
|
|
134
|
+
--hub-stepper-nav-link-active-border-color: #{$nav-link-active-border-color};
|
|
135
|
+
}
|
|
136
|
+
@if $nav-link-disabled-color != null {
|
|
137
|
+
--hub-stepper-nav-link-disabled-color: #{$nav-link-disabled-color};
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Step trigger
|
|
141
|
+
@if $trigger-padding-x != null {
|
|
142
|
+
--hub-stepper-nav-trigger-padding-x: #{$trigger-padding-x};
|
|
143
|
+
}
|
|
144
|
+
@if $trigger-padding-y != null {
|
|
145
|
+
--hub-stepper-nav-trigger-padding-y: #{$trigger-padding-y};
|
|
146
|
+
}
|
|
147
|
+
@if $trigger-gap != null {
|
|
148
|
+
--hub-stepper-nav-trigger-gap: #{$trigger-gap};
|
|
149
|
+
}
|
|
150
|
+
@if $trigger-font-size != null {
|
|
151
|
+
--hub-stepper-nav-trigger-font-size: #{$trigger-font-size};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Controls
|
|
155
|
+
@if $controls-gap != null {
|
|
156
|
+
--hub-stepper-controls-gap: #{$controls-gap};
|
|
157
|
+
}
|
|
158
|
+
@if $controls-justify != null {
|
|
159
|
+
--hub-stepper-controls-justify: #{$controls-justify};
|
|
160
|
+
}
|
|
161
|
+
@if $control-padding-x != null {
|
|
162
|
+
--hub-stepper-control-padding-x: #{$control-padding-x};
|
|
163
|
+
}
|
|
164
|
+
@if $control-padding-y != null {
|
|
165
|
+
--hub-stepper-control-padding-y: #{$control-padding-y};
|
|
166
|
+
}
|
|
167
|
+
@if $control-font-size != null {
|
|
168
|
+
--hub-stepper-control-font-size: #{$control-font-size};
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Sidebar layout
|
|
172
|
+
@if $sidebar-width != null {
|
|
173
|
+
--hub-stepper-sidebar-width: #{$sidebar-width};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// scss-docs-end hub-stepper-theme
|
|
@@ -97,10 +97,6 @@ interface StepperOptions {
|
|
|
97
97
|
rtl?: boolean;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
/**
|
|
101
|
-
* Renders and controls a multi-step workflow.
|
|
102
|
-
* It coordinates navigation, state transitions and projected templates for steps and controls.
|
|
103
|
-
*/
|
|
104
100
|
declare class StepperComponent implements AfterContentInit, OnDestroy {
|
|
105
101
|
#private;
|
|
106
102
|
/** Exposes layout enum values to the template. */
|
|
@@ -111,6 +107,18 @@ declare class StepperComponent implements AfterContentInit, OnDestroy {
|
|
|
111
107
|
readonly contentAnimating: _angular_core.WritableSignal<boolean>;
|
|
112
108
|
/** Stores transition direction used by the CSS animation classes. */
|
|
113
109
|
readonly animationDirection: _angular_core.WritableSignal<StepperAnimationDirection>;
|
|
110
|
+
/**
|
|
111
|
+
* Semantic accent of the stepper: `'primary'` · `'success'` · `'danger'` ·
|
|
112
|
+
* `'warning'` · `'info'`, or any custom string (read as `--hub-sys-color-<variant>`).
|
|
113
|
+
* Re-bases `--hub-stepper-accent`, which drives the active step pill and the
|
|
114
|
+
* next / submit controls. Defaults to primary.
|
|
115
|
+
*/
|
|
116
|
+
readonly variant: _angular_core.InputSignal<string | undefined>;
|
|
117
|
+
/**
|
|
118
|
+
* Inline accent for custom (non-built-in) variants — the built-in five are
|
|
119
|
+
* resolved by the SCSS `@each` loop, so this returns `null` for them.
|
|
120
|
+
*/
|
|
121
|
+
protected readonly customAccent: _angular_core.Signal<string | null>;
|
|
114
122
|
/** Optional custom label for the back button. */
|
|
115
123
|
readonly backLabel: _angular_core.InputSignal<string | null>;
|
|
116
124
|
/** Optional custom label for the continue button. */
|
|
@@ -221,7 +229,7 @@ declare class StepperComponent implements AfterContentInit, OnDestroy {
|
|
|
221
229
|
*/
|
|
222
230
|
onContentAnimationEnd(event: AnimationEvent): void;
|
|
223
231
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StepperComponent, never>;
|
|
224
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StepperComponent, "hub-stepper, hub-ui-stepper, ng80-stepper", never, { "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>;
|
|
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>;
|
|
225
233
|
}
|
|
226
234
|
|
|
227
235
|
/**
|
|
@@ -279,6 +287,8 @@ declare class StepperModule {
|
|
|
279
287
|
declare class StepperThemeService {
|
|
280
288
|
/** Angular renderer used to update root-level CSS variables safely. */
|
|
281
289
|
private renderer;
|
|
290
|
+
/** Injected document token; SSR-safe alternative to the global `document`. */
|
|
291
|
+
private readonly document;
|
|
282
292
|
/**
|
|
283
293
|
* Creates a renderer instance for dynamic style updates.
|
|
284
294
|
*
|