@cute-widgets/base 20.0.1
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/CHANGELOG.md +1 -0
- package/LICENSE.md +191 -0
- package/README.md +190 -0
- package/abstract/index.d.ts +327 -0
- package/alert/index.d.ts +68 -0
- package/autocomplete/index.d.ts +442 -0
- package/badge/index.d.ts +26 -0
- package/bottom-sheet/index.d.ts +231 -0
- package/button/index.d.ts +182 -0
- package/button-toggle/index.d.ts +225 -0
- package/card/index.d.ts +163 -0
- package/checkbox/index.d.ts +174 -0
- package/chips/index.d.ts +963 -0
- package/collapse/index.d.ts +97 -0
- package/core/animation/index.d.ts +43 -0
- package/core/datetime/index.d.ts +404 -0
- package/core/directives/index.d.ts +168 -0
- package/core/error/index.d.ts +74 -0
- package/core/index.d.ts +1039 -0
- package/core/interfaces/index.d.ts +114 -0
- package/core/layout/index.d.ts +53 -0
- package/core/line/index.d.ts +37 -0
- package/core/nav/index.d.ts +321 -0
- package/core/observers/index.d.ts +124 -0
- package/core/option/index.d.ts +185 -0
- package/core/pipes/index.d.ts +53 -0
- package/core/ripple/index.d.ts +66 -0
- package/core/testing/index.d.ts +154 -0
- package/core/theming/index.d.ts +118 -0
- package/core/types/index.d.ts +53 -0
- package/core/utils/index.d.ts +129 -0
- package/cute-widgets-base-20.0.1.tgz +0 -0
- package/datepicker/index.d.ts +1817 -0
- package/dialog/index.d.ts +484 -0
- package/divider/index.d.ts +24 -0
- package/expansion/README.md +8 -0
- package/expansion/index.d.ts +308 -0
- package/fesm2022/cute-widgets-base-abstract.mjs +547 -0
- package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-alert.mjs +198 -0
- package/fesm2022/cute-widgets-base-alert.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs +1217 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-badge.mjs +75 -0
- package/fesm2022/cute-widgets-base-badge.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs +416 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs +640 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button.mjs +546 -0
- package/fesm2022/cute-widgets-base-button.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-card.mjs +471 -0
- package/fesm2022/cute-widgets-base-card.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs +390 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-chips.mjs +2360 -0
- package/fesm2022/cute-widgets-base-chips.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-collapse.mjs +259 -0
- package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs +53 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs +568 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs +404 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-error.mjs +105 -0
- package/fesm2022/cute-widgets-base-core-error.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs +74 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-line.mjs +87 -0
- package/fesm2022/cute-widgets-base-core-line.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs +863 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs +304 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-option.mjs +373 -0
- package/fesm2022/cute-widgets-base-core-option.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs +97 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs +172 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs +210 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs +314 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-types.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-types.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs +257 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core.mjs +1600 -0
- package/fesm2022/cute-widgets-base-core.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs +4827 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-dialog.mjs +1046 -0
- package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-divider.mjs +86 -0
- package/fesm2022/cute-widgets-base-divider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-expansion.mjs +623 -0
- package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-form-field.mjs +969 -0
- package/fesm2022/cute-widgets-base-form-field.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs +715 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-icon.mjs +1105 -0
- package/fesm2022/cute-widgets-base-icon.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-input.mjs +726 -0
- package/fesm2022/cute-widgets-base-input.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs +95 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs +166 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout.mjs +250 -0
- package/fesm2022/cute-widgets-base-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-list.mjs +1557 -0
- package/fesm2022/cute-widgets-base-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-menu.mjs +1283 -0
- package/fesm2022/cute-widgets-base-menu.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-navbar.mjs +359 -0
- package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-paginator.mjs +485 -0
- package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-progress.mjs +321 -0
- package/fesm2022/cute-widgets-base-progress.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-radio.mjs +637 -0
- package/fesm2022/cute-widgets-base-radio.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-select.mjs +1208 -0
- package/fesm2022/cute-widgets-base-select.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs +1095 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-slider.mjs +99 -0
- package/fesm2022/cute-widgets-base-slider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs +897 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sort.mjs +639 -0
- package/fesm2022/cute-widgets-base-sort.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-spinner.mjs +154 -0
- package/fesm2022/cute-widgets-base-spinner.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-stepper.mjs +673 -0
- package/fesm2022/cute-widgets-base-stepper.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-table.mjs +1023 -0
- package/fesm2022/cute-widgets-base-table.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tabs.mjs +729 -0
- package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs +965 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs +120 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs +947 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tree.mjs +598 -0
- package/fesm2022/cute-widgets-base-tree.mjs.map +1 -0
- package/fesm2022/cute-widgets-base.mjs +68 -0
- package/fesm2022/cute-widgets-base.mjs.map +1 -0
- package/form-field/index.d.ts +401 -0
- package/grid-list/index.d.ts +361 -0
- package/icon/index.d.ts +477 -0
- package/index.d.ts +3 -0
- package/input/index.d.ts +256 -0
- package/layout/container/index.d.ts +31 -0
- package/layout/index.d.ts +78 -0
- package/layout/stack/index.d.ts +52 -0
- package/list/index.d.ts +659 -0
- package/menu/index.d.ts +497 -0
- package/navbar/index.d.ts +91 -0
- package/package.json +279 -0
- package/paginator/index.d.ts +216 -0
- package/progress/index.d.ts +130 -0
- package/radio/index.d.ts +259 -0
- package/select/index.d.ts +426 -0
- package/sidenav/index.d.ts +369 -0
- package/slider/index.d.ts +48 -0
- package/snack-bar/index.d.ts +374 -0
- package/sort/index.d.ts +334 -0
- package/spinner/index.d.ts +70 -0
- package/stepper/index.d.ts +295 -0
- package/table/index.d.ts +395 -0
- package/tabs/index.d.ts +307 -0
- package/timepicker/index.d.ts +350 -0
- package/toolbar/index.d.ts +36 -0
- package/tooltip/index.d.ts +299 -0
- package/tree/index.d.ts +314 -0
|
@@ -0,0 +1,673 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Directive, inject, TemplateRef, ViewContainerRef, ContentChild, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, Injectable, ChangeDetectorRef, booleanAttribute, NgZone, Renderer2, signal, QueryList, EventEmitter, input, ElementRef, Output, ContentChildren, ViewChildren, NgModule } from '@angular/core';
|
|
3
|
+
import { CdkStepLabel, CdkStep, CdkStepHeader, CdkStepper, CdkStepperNext, CdkStepperPrevious, CdkStepperModule } from '@angular/cdk/stepper';
|
|
4
|
+
import { ErrorStateMatcher } from '@cute-widgets/base/core/error';
|
|
5
|
+
import { TemplatePortal, CdkPortalOutlet } from '@angular/cdk/portal';
|
|
6
|
+
import { Subscription, Subject } from 'rxjs';
|
|
7
|
+
import { switchMap, map, startWith, takeUntil } from 'rxjs/operators';
|
|
8
|
+
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
9
|
+
import { CuteIcon } from '@cute-widgets/base/icon';
|
|
10
|
+
import { NgTemplateOutlet, CommonModule } from '@angular/common';
|
|
11
|
+
import { Platform } from '@angular/cdk/platform';
|
|
12
|
+
import { _animationsDisabled } from '@cute-widgets/base/core';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @license Apache-2.0
|
|
16
|
+
*
|
|
17
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
18
|
+
*
|
|
19
|
+
* You may not use this file except in compliance with the License
|
|
20
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
21
|
+
*
|
|
22
|
+
* This code is a modification of the `@angular/material` original
|
|
23
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
24
|
+
*/
|
|
25
|
+
class CuteStepLabel extends CdkStepLabel {
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepLabel, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
27
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteStepLabel, isStandalone: true, selector: "[cuteStepLabel], [cute-step-label]", usesInheritance: true, ngImport: i0 }); }
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepLabel, decorators: [{
|
|
30
|
+
type: Directive,
|
|
31
|
+
args: [{
|
|
32
|
+
selector: '[cuteStepLabel], [cute-step-label]',
|
|
33
|
+
standalone: true,
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
class CuteStepLabelTitle {
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepLabelTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
38
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteStepLabelTitle, isStandalone: true, selector: "[cuteStepLabelTitle], [cute-step-label-title]", host: { properties: { "class.fw-bold": "true" } }, ngImport: i0 }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepLabelTitle, decorators: [{
|
|
41
|
+
type: Directive,
|
|
42
|
+
args: [{
|
|
43
|
+
selector: '[cuteStepLabelTitle], [cute-step-label-title]',
|
|
44
|
+
host: {
|
|
45
|
+
'[class.fw-bold]': 'true',
|
|
46
|
+
},
|
|
47
|
+
standalone: true,
|
|
48
|
+
}]
|
|
49
|
+
}] });
|
|
50
|
+
class CuteStepLabelDescription {
|
|
51
|
+
constructor(_elementRef) {
|
|
52
|
+
this._elementRef = _elementRef;
|
|
53
|
+
}
|
|
54
|
+
isErrorState() {
|
|
55
|
+
return this._elementRef.nativeElement.closest(".cute-step-label-error") != null;
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepLabelDescription, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteStepLabelDescription, isStandalone: true, selector: "[cuteStepLabelDescription], [cuteStepLabelDesc], [cute-step-label-desc]", host: { properties: { "class.opacity-75": "true", "style.font-size": "\"smaller\"", "style.margin-bottom.px": "0" } }, ngImport: i0 }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepLabelDescription, decorators: [{
|
|
61
|
+
type: Directive,
|
|
62
|
+
args: [{
|
|
63
|
+
selector: '[cuteStepLabelDescription], [cuteStepLabelDesc], [cute-step-label-desc]',
|
|
64
|
+
host: {
|
|
65
|
+
//'[class]': '!isErrorState() ? "text-body-secondary": "opacity-75"',
|
|
66
|
+
'[class.opacity-75]': 'true',
|
|
67
|
+
'[style.font-size]': '"smaller"', //'"calc(var(--bs-body-font-size)*0.875)"',
|
|
68
|
+
'[style.margin-bottom.px]': '0',
|
|
69
|
+
},
|
|
70
|
+
standalone: true,
|
|
71
|
+
}]
|
|
72
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @license Apache-2.0
|
|
76
|
+
*
|
|
77
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
78
|
+
*
|
|
79
|
+
* You may not use this file except in compliance with the License
|
|
80
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
81
|
+
*
|
|
82
|
+
* This code is a modification of the `@angular/material` original
|
|
83
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
84
|
+
*/
|
|
85
|
+
/**
|
|
86
|
+
* Content for a `cute-step` that will be rendered lazily.
|
|
87
|
+
*/
|
|
88
|
+
class CuteStepContent {
|
|
89
|
+
constructor() {
|
|
90
|
+
this._template = inject(TemplateRef);
|
|
91
|
+
}
|
|
92
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
93
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteStepContent, isStandalone: true, selector: "ng-template[cuteStepContent]", ngImport: i0 }); }
|
|
94
|
+
}
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepContent, decorators: [{
|
|
96
|
+
type: Directive,
|
|
97
|
+
args: [{
|
|
98
|
+
selector: 'ng-template[cuteStepContent]',
|
|
99
|
+
standalone: true,
|
|
100
|
+
}]
|
|
101
|
+
}], ctorParameters: () => [] });
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @license Apache-2.0
|
|
105
|
+
*
|
|
106
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
107
|
+
*
|
|
108
|
+
* You may not use this file except in compliance with the License
|
|
109
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
110
|
+
*
|
|
111
|
+
* This code is a modification of the `@angular/material` original
|
|
112
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
113
|
+
*/
|
|
114
|
+
class CuteStep extends CdkStep {
|
|
115
|
+
constructor() {
|
|
116
|
+
super(...arguments);
|
|
117
|
+
this._errorStateMatcher = inject(ErrorStateMatcher, { skipSelf: true });
|
|
118
|
+
this._viewContainerRef = inject(ViewContainerRef);
|
|
119
|
+
this._isSelected = Subscription.EMPTY;
|
|
120
|
+
/** Content for step label given by `<ng-template cuteStepLabel>`. */
|
|
121
|
+
// We need an initializer here to avoid a TS error.
|
|
122
|
+
this.stepLabel = undefined;
|
|
123
|
+
}
|
|
124
|
+
ngAfterContentInit() {
|
|
125
|
+
this._isSelected = this._stepper.steps.changes
|
|
126
|
+
.pipe(switchMap(() => {
|
|
127
|
+
return this._stepper.selectionChange.pipe(map(event => event.selectedStep === this), startWith(this._stepper.selected === this));
|
|
128
|
+
}))
|
|
129
|
+
.subscribe(isSelected => {
|
|
130
|
+
if (isSelected && this._lazyContent && !this._portal) {
|
|
131
|
+
this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
ngOnDestroy() {
|
|
136
|
+
this._isSelected.unsubscribe();
|
|
137
|
+
}
|
|
138
|
+
/** Custom error state matcher that additionally checks for the validity of interacted form. */
|
|
139
|
+
isErrorState(control, form) {
|
|
140
|
+
const originalErrorState = this._errorStateMatcher.isErrorState(control, form);
|
|
141
|
+
// Custom error state checks for the validity of form that is not submitted or touched
|
|
142
|
+
// since a user can trigger a form change by calling for another step without directly
|
|
143
|
+
// interacting with the current form.
|
|
144
|
+
const customErrorState = !!(control && control.invalid && this.interacted);
|
|
145
|
+
return originalErrorState || customErrorState;
|
|
146
|
+
}
|
|
147
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStep, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
148
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CuteStep, isStandalone: true, selector: "cute-step", inputs: { color: "color", description: "description" }, host: { attributes: { "hidden": "" }, classAttribute: "cute-step" }, providers: [
|
|
149
|
+
{ provide: ErrorStateMatcher, useExisting: CuteStep },
|
|
150
|
+
{ provide: CdkStep, useExisting: CuteStep },
|
|
151
|
+
], queries: [{ propertyName: "stepLabel", first: true, predicate: CuteStepLabel, descendants: true }, { propertyName: "_lazyContent", first: true, predicate: CuteStepContent, descendants: true }], exportAs: ["cuteStep"], usesInheritance: true, ngImport: i0, template: "<ng-template>\r\n <ng-content></ng-content>\r\n <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
152
|
+
}
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStep, decorators: [{
|
|
154
|
+
type: Component,
|
|
155
|
+
args: [{ selector: 'cute-step', providers: [
|
|
156
|
+
{ provide: ErrorStateMatcher, useExisting: CuteStep },
|
|
157
|
+
{ provide: CdkStep, useExisting: CuteStep },
|
|
158
|
+
], exportAs: 'cuteStep', host: {
|
|
159
|
+
'class': 'cute-step',
|
|
160
|
+
'hidden': '', // Hide the steps, so they don't affect the layout.
|
|
161
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CdkPortalOutlet], template: "<ng-template>\r\n <ng-content></ng-content>\r\n <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\r\n</ng-template>\r\n" }]
|
|
162
|
+
}], propDecorators: { stepLabel: [{
|
|
163
|
+
type: ContentChild,
|
|
164
|
+
args: [CuteStepLabel]
|
|
165
|
+
}], color: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], description: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], _lazyContent: [{
|
|
170
|
+
type: ContentChild,
|
|
171
|
+
args: [CuteStepContent, { static: false }]
|
|
172
|
+
}] } });
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* @license Apache-2.0
|
|
176
|
+
*
|
|
177
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
178
|
+
*
|
|
179
|
+
* You may not use this file except in compliance with the License
|
|
180
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
181
|
+
*
|
|
182
|
+
* This code is a modification of the `@angular/material` original
|
|
183
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
184
|
+
*/
|
|
185
|
+
/** Stepper data that is required for internationalization. */
|
|
186
|
+
class CuteStepperIntl {
|
|
187
|
+
constructor() {
|
|
188
|
+
/**
|
|
189
|
+
* Stream that emits whenever the labels here are changed. Use this to notify
|
|
190
|
+
* components if the labels have changed after initialization.
|
|
191
|
+
*/
|
|
192
|
+
this.changes = new Subject();
|
|
193
|
+
/** Label that is rendered below optional steps. */
|
|
194
|
+
this.optionalLabel = 'Optional';
|
|
195
|
+
/** Label that is used to indicate a step as completed to screen readers. */
|
|
196
|
+
this.completedLabel = 'Completed';
|
|
197
|
+
/** Label that is used to indicate a step as editable to screen readers. */
|
|
198
|
+
this.editableLabel = 'Editable';
|
|
199
|
+
}
|
|
200
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
201
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperIntl, providedIn: 'root' }); }
|
|
202
|
+
}
|
|
203
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperIntl, decorators: [{
|
|
204
|
+
type: Injectable,
|
|
205
|
+
args: [{ providedIn: 'root' }]
|
|
206
|
+
}] });
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* @license Apache-2.0
|
|
210
|
+
*
|
|
211
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
212
|
+
*
|
|
213
|
+
* You may not use this file except in compliance with the License
|
|
214
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
215
|
+
*
|
|
216
|
+
* This code is a modification of the `@angular/material` original
|
|
217
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
218
|
+
*/
|
|
219
|
+
class CuteStepHeader extends CdkStepHeader {
|
|
220
|
+
constructor() {
|
|
221
|
+
super();
|
|
222
|
+
this._intl = inject(CuteStepperIntl);
|
|
223
|
+
this._focusMonitor = inject(FocusMonitor);
|
|
224
|
+
/** Label of the given step. */
|
|
225
|
+
this.label = null;
|
|
226
|
+
/** Index of the given step. */
|
|
227
|
+
this.index = -1;
|
|
228
|
+
/** Whether the given step is selected. */
|
|
229
|
+
this.selected = false;
|
|
230
|
+
/** Whether the given step label is active. */
|
|
231
|
+
this.active = false;
|
|
232
|
+
/** Whether the given step is optional. */
|
|
233
|
+
this.optional = false;
|
|
234
|
+
/** Whether the ripple should be disabled. */
|
|
235
|
+
this.disableRipple = false;
|
|
236
|
+
const changeDetectorRef = inject(ChangeDetectorRef);
|
|
237
|
+
this._intlSubscription = this._intl.changes.subscribe(() => changeDetectorRef.markForCheck());
|
|
238
|
+
}
|
|
239
|
+
ngAfterViewInit() {
|
|
240
|
+
this._focusMonitor.monitor(this._elementRef, true);
|
|
241
|
+
}
|
|
242
|
+
ngOnDestroy() {
|
|
243
|
+
this._intlSubscription.unsubscribe();
|
|
244
|
+
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
245
|
+
}
|
|
246
|
+
/** Focuses the step header. */
|
|
247
|
+
focus(origin, options) {
|
|
248
|
+
if (origin) {
|
|
249
|
+
this._focusMonitor.focusVia(this._elementRef, origin, options);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
this._elementRef.nativeElement.focus(options);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/** Returns string label of given step if it is a text label. */
|
|
256
|
+
_stringLabel() {
|
|
257
|
+
return this.label instanceof CuteStepLabel ? null : this.label;
|
|
258
|
+
}
|
|
259
|
+
/** Returns CuteStepLabel if the label of given step is a template label. */
|
|
260
|
+
_templateLabel() {
|
|
261
|
+
return this.label instanceof CuteStepLabel ? this.label : null;
|
|
262
|
+
}
|
|
263
|
+
/** Returns the host HTML element. */
|
|
264
|
+
_getHostElement() {
|
|
265
|
+
return this._elementRef.nativeElement;
|
|
266
|
+
}
|
|
267
|
+
/** Template context variables that are exposed to the `cuteStepperIcon` instances. */
|
|
268
|
+
_getIconContext() {
|
|
269
|
+
return {
|
|
270
|
+
index: this.index,
|
|
271
|
+
active: this.active,
|
|
272
|
+
optional: this.optional,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
_getDefaultTextForState(state) {
|
|
276
|
+
if (state == 'number') {
|
|
277
|
+
return `${this.index + 1}`;
|
|
278
|
+
}
|
|
279
|
+
if (state == 'done') {
|
|
280
|
+
return 'bi-check-lg';
|
|
281
|
+
}
|
|
282
|
+
if (state == 'edit') {
|
|
283
|
+
return 'bi-pencil-fill';
|
|
284
|
+
}
|
|
285
|
+
if (state == 'error') {
|
|
286
|
+
return 'bi-exclamation-triangle-fill';
|
|
287
|
+
}
|
|
288
|
+
return state;
|
|
289
|
+
}
|
|
290
|
+
_hasEmptyLabel() {
|
|
291
|
+
return (!this._stringLabel() &&
|
|
292
|
+
!this._templateLabel() &&
|
|
293
|
+
!this._hasOptionalLabel() &&
|
|
294
|
+
!this._hasErrorLabel());
|
|
295
|
+
}
|
|
296
|
+
_hasOptionalLabel() {
|
|
297
|
+
return this.optional && this.state !== 'error';
|
|
298
|
+
}
|
|
299
|
+
_hasErrorLabel() {
|
|
300
|
+
return this.state === 'error';
|
|
301
|
+
}
|
|
302
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
303
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CuteStepHeader, isStandalone: true, selector: "cute-step-header", inputs: { state: "state", label: "label", errorMessage: "errorMessage", iconOverrides: "iconOverrides", index: "index", selected: ["selected", "selected", booleanAttribute], active: ["active", "active", booleanAttribute], optional: ["optional", "optional", booleanAttribute], disableRipple: ["disableRipple", "disableRipple", booleanAttribute], color: "color" }, host: { attributes: { "role": "tab" }, properties: { "class.cute-step-header-empty-label": "_hasEmptyLabel()", "class": "\"cute-\" + (color || \"primary\")" }, classAttribute: "cute-step-header" }, usesInheritance: true, ngImport: i0, template: "<div class=\"cute-step-icon-state-{{state}} cute-step-icon\" [class.cute-step-icon-selected]=\"selected\">\r\n <div class=\"cute-step-icon-content\">\r\n @if (iconOverrides && iconOverrides[state]) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"iconOverrides[state]\"\r\n [ngTemplateOutletContext]=\"_getIconContext()\">\r\n </ng-container>\r\n } @else {\r\n @switch (state) {\r\n @case ('number') {\r\n <span aria-hidden=\"true\">{{_getDefaultTextForState(state)}}</span>\r\n }\r\n @default {\r\n @if (state === 'done') {\r\n <span class=\"cdk-visually-hidden\">{{_intl.completedLabel}}</span>\r\n } @else if (state === 'edit') {\r\n <span class=\"cdk-visually-hidden\">{{_intl.editableLabel}}</span>\r\n }\r\n\r\n <cute-icon aria-hidden=\"true\" fontIcon=\"{{_getDefaultTextForState(state)}}\"></cute-icon>\r\n }\r\n }\r\n }\r\n </div>\r\n</div>\r\n<div class=\"cute-step-label\"\r\n [class.cute-step-label-active]=\"active\"\r\n [class.cute-step-label-selected]=\"selected\"\r\n [class.cute-step-label-error]=\"state == 'error'\">\r\n @if (_templateLabel(); as templateLabel) {\r\n <!-- If there is a label template, use it. -->\r\n <div class=\"cute-step-text-label\">\r\n <ng-container [ngTemplateOutlet]=\"templateLabel.template\"></ng-container>\r\n </div>\r\n } @else if (_stringLabel()) {\r\n <!-- If there is no label template, fall back to the text label. -->\r\n <div class=\"cute-step-text-label\">\r\n <span>{{label}}</span>\r\n </div>\r\n }\r\n\r\n @if (optional && state != 'error') {\r\n <div class=\"cute-step-optional\">{{_intl.optionalLabel}}</div>\r\n }\r\n\r\n @if (state === 'error') {\r\n <div class=\"cute-step-sub-label-error\">{{errorMessage}}</div>\r\n }\r\n</div>\r\n", styles: [".cute-step-header{--cute-stepper-theme-foreground-color: var(--bs-btn-color, white);--cute-stepper-theme-background-color: var(--bs-btn-bg, rgb(0,0,200));--cute-header-icon-foreground-color: var(--bs-body-bg, white);--cute-header-icon-background-color: var(--bs-body-color, rgba(var(--bs-body-color-rgb), .54));--cute-header-icon-selected-foreground-color: var(--cute-stepper-theme-foreground-color);--cute-header-icon-selected-background-color: var(--cute-stepper-theme-background-color);--cute-header-done-state-icon-foreground-color: var(--cute-stepper-theme-foreground-color);--cute-header-done-state-icon-background-color: var(--cute-stepper-theme-background-color);--cute-header-edit-state-icon-foreground-color: var(--cute-stepper-theme-foreground-color);--cute-header-edit-state-icon-background-color: var(--cute-stepper-theme-background-color);--cute-header-error-state-icon-foreground-color: var(--bs-form-invalid-color);--cute-header-error-state-icon-background-color: transparent;--cute-header-hover-state-layer-color: rgba(var(--bs-body-color-rgb), .04);--cute-header-hover-state-layer-shape: var(--bs-border-radius);--cute-header-focus-state-layer-color: rgba(var(--bs-body-color-rgb), .04);--cute-header-focus-state-layer-shape: var(--bs-border-radius);--cute-header-label-text-color: rgba(var(--bs-body-color-rgb), .54);--cute-header-label-text-weight: inherit;--cute-header-optional-label-text-color: rgba(var(--bs-body-color-rgb), .54);--cute-header-selected-state-label-text-color: rgba(var(--bs-body-color-rgb), .87);--cute-header-selected-state-label-text-weight: 500;--cute-header-error-state-label-text-color: var(--bs-form-invalid-color);--cute-header-error-state-label-text-size: var(--bs-body-font-size);overflow:hidden;outline:none;cursor:pointer;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:transparent}.cute-step-header:focus .cute-focus-indicator:before{content:\"\"}.cute-step-header:hover[aria-disabled=true]{cursor:default}.cute-step-header:hover:not([aria-disabled=true]),.cute-step-header:hover[aria-disabled=false]{background-color:var(--cute-header-hover-state-layer-color);border-radius:var(--cute-header-hover-state-layer-shape)}.cute-step-header.cdk-keyboard-focused,.cute-step-header.cdk-program-focused{background-color:var(--cute-header-focus-state-layer-color);border-radius:var(--cute-header-focus-state-layer-shape)}@media (hover: none){.cute-step-header:hover{background:none}}@media (forced-colors: active){.cute-step-header{outline:solid 1px}.cute-step-header[aria-selected=true] .cute-step-label{text-decoration:underline}.cute-step-header[aria-disabled=true]{outline-color:GrayText}.cute-step-header[aria-disabled=true] .cute-step-label,.cute-step-header[aria-disabled=true] .cute-step-icon,.cute-step-header[aria-disabled=true] .cute-step-optional{color:GrayText}}.cute-step-optional{font-size:12px;color:var(--cute-header-optional-label-text-color)}.cute-step-sub-label-error{font-size:12px;font-weight:400}.cute-step-icon{border-radius:50%;height:32px;width:32px;flex-shrink:0;position:relative;color:var(--cute-header-icon-foreground-color);background-color:var(--cute-header-icon-background-color)}.cute-step-icon-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.cute-step-icon .cute-icon{font-size:16px;height:16px;width:16px}.cute-step-icon-state-error{background-color:var(--cute-header-error-state-icon-background-color);color:var(--cute-header-error-state-icon-foreground-color)}.cute-step-icon-state-error .cute-icon{font-size:24px;height:24px;width:24px}.cute-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle;font-family:var(--cute-header-label-text-font);font-size:var(--cute-header-label-text-size);font-weight:var(--cute-header-label-text-weight);color:var(--cute-header-label-text-color)}.cute-step-label.cute-step-label-active{color:var(--cute-header-selected-state-label-text-color)}.cute-step-label.cute-step-label-error{color:var(--cute-header-error-state-label-text-color);font-size:var(--cute-header-error-state-label-text-size)}.cute-step-label.cute-step-label-selected{font-size:var(--cute-header-selected-state-label-text-size);font-weight:var(--cute-header-selected-state-label-text-weight)}.cute-step-text-label{text-overflow:ellipsis;overflow:hidden}.cute-step-text-label:has(>:nth-child(2)){display:flex;flex-direction:column}.cute-step-text-label:has(>:nth-child(2))>*{text-overflow:ellipsis;overflow:hidden}.cute-step-header .cute-step-header-ripple{inset:0;position:absolute;pointer-events:none}.cute-step-icon-selected{background-color:var(--cute-header-icon-selected-background-color);color:var(--cute-header-icon-selected-foreground-color)}.cute-step-icon-state-done{background-color:var(--cute-header-done-state-icon-background-color);color:var(--cute-header-done-state-icon-foreground-color)}.cute-step-icon-state-edit{background-color:var(--cute-header-edit-state-icon-background-color);color:var(--cute-header-edit-state-icon-foreground-color)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CuteIcon, selector: "cute-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon", "autoPrefix", "rotation", "featureIcon"], exportAs: ["cuteIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
304
|
+
}
|
|
305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepHeader, decorators: [{
|
|
306
|
+
type: Component,
|
|
307
|
+
args: [{ selector: 'cute-step-header', host: {
|
|
308
|
+
'class': 'cute-step-header',
|
|
309
|
+
'[class.cute-step-header-empty-label]': '_hasEmptyLabel()',
|
|
310
|
+
'[class]': '"cute-" + (color || "primary")',
|
|
311
|
+
'role': 'tab', // ignore cdk role in favor of setting appropriately in html
|
|
312
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, CuteIcon], template: "<div class=\"cute-step-icon-state-{{state}} cute-step-icon\" [class.cute-step-icon-selected]=\"selected\">\r\n <div class=\"cute-step-icon-content\">\r\n @if (iconOverrides && iconOverrides[state]) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"iconOverrides[state]\"\r\n [ngTemplateOutletContext]=\"_getIconContext()\">\r\n </ng-container>\r\n } @else {\r\n @switch (state) {\r\n @case ('number') {\r\n <span aria-hidden=\"true\">{{_getDefaultTextForState(state)}}</span>\r\n }\r\n @default {\r\n @if (state === 'done') {\r\n <span class=\"cdk-visually-hidden\">{{_intl.completedLabel}}</span>\r\n } @else if (state === 'edit') {\r\n <span class=\"cdk-visually-hidden\">{{_intl.editableLabel}}</span>\r\n }\r\n\r\n <cute-icon aria-hidden=\"true\" fontIcon=\"{{_getDefaultTextForState(state)}}\"></cute-icon>\r\n }\r\n }\r\n }\r\n </div>\r\n</div>\r\n<div class=\"cute-step-label\"\r\n [class.cute-step-label-active]=\"active\"\r\n [class.cute-step-label-selected]=\"selected\"\r\n [class.cute-step-label-error]=\"state == 'error'\">\r\n @if (_templateLabel(); as templateLabel) {\r\n <!-- If there is a label template, use it. -->\r\n <div class=\"cute-step-text-label\">\r\n <ng-container [ngTemplateOutlet]=\"templateLabel.template\"></ng-container>\r\n </div>\r\n } @else if (_stringLabel()) {\r\n <!-- If there is no label template, fall back to the text label. -->\r\n <div class=\"cute-step-text-label\">\r\n <span>{{label}}</span>\r\n </div>\r\n }\r\n\r\n @if (optional && state != 'error') {\r\n <div class=\"cute-step-optional\">{{_intl.optionalLabel}}</div>\r\n }\r\n\r\n @if (state === 'error') {\r\n <div class=\"cute-step-sub-label-error\">{{errorMessage}}</div>\r\n }\r\n</div>\r\n", styles: [".cute-step-header{--cute-stepper-theme-foreground-color: var(--bs-btn-color, white);--cute-stepper-theme-background-color: var(--bs-btn-bg, rgb(0,0,200));--cute-header-icon-foreground-color: var(--bs-body-bg, white);--cute-header-icon-background-color: var(--bs-body-color, rgba(var(--bs-body-color-rgb), .54));--cute-header-icon-selected-foreground-color: var(--cute-stepper-theme-foreground-color);--cute-header-icon-selected-background-color: var(--cute-stepper-theme-background-color);--cute-header-done-state-icon-foreground-color: var(--cute-stepper-theme-foreground-color);--cute-header-done-state-icon-background-color: var(--cute-stepper-theme-background-color);--cute-header-edit-state-icon-foreground-color: var(--cute-stepper-theme-foreground-color);--cute-header-edit-state-icon-background-color: var(--cute-stepper-theme-background-color);--cute-header-error-state-icon-foreground-color: var(--bs-form-invalid-color);--cute-header-error-state-icon-background-color: transparent;--cute-header-hover-state-layer-color: rgba(var(--bs-body-color-rgb), .04);--cute-header-hover-state-layer-shape: var(--bs-border-radius);--cute-header-focus-state-layer-color: rgba(var(--bs-body-color-rgb), .04);--cute-header-focus-state-layer-shape: var(--bs-border-radius);--cute-header-label-text-color: rgba(var(--bs-body-color-rgb), .54);--cute-header-label-text-weight: inherit;--cute-header-optional-label-text-color: rgba(var(--bs-body-color-rgb), .54);--cute-header-selected-state-label-text-color: rgba(var(--bs-body-color-rgb), .87);--cute-header-selected-state-label-text-weight: 500;--cute-header-error-state-label-text-color: var(--bs-form-invalid-color);--cute-header-error-state-label-text-size: var(--bs-body-font-size);overflow:hidden;outline:none;cursor:pointer;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:transparent}.cute-step-header:focus .cute-focus-indicator:before{content:\"\"}.cute-step-header:hover[aria-disabled=true]{cursor:default}.cute-step-header:hover:not([aria-disabled=true]),.cute-step-header:hover[aria-disabled=false]{background-color:var(--cute-header-hover-state-layer-color);border-radius:var(--cute-header-hover-state-layer-shape)}.cute-step-header.cdk-keyboard-focused,.cute-step-header.cdk-program-focused{background-color:var(--cute-header-focus-state-layer-color);border-radius:var(--cute-header-focus-state-layer-shape)}@media (hover: none){.cute-step-header:hover{background:none}}@media (forced-colors: active){.cute-step-header{outline:solid 1px}.cute-step-header[aria-selected=true] .cute-step-label{text-decoration:underline}.cute-step-header[aria-disabled=true]{outline-color:GrayText}.cute-step-header[aria-disabled=true] .cute-step-label,.cute-step-header[aria-disabled=true] .cute-step-icon,.cute-step-header[aria-disabled=true] .cute-step-optional{color:GrayText}}.cute-step-optional{font-size:12px;color:var(--cute-header-optional-label-text-color)}.cute-step-sub-label-error{font-size:12px;font-weight:400}.cute-step-icon{border-radius:50%;height:32px;width:32px;flex-shrink:0;position:relative;color:var(--cute-header-icon-foreground-color);background-color:var(--cute-header-icon-background-color)}.cute-step-icon-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.cute-step-icon .cute-icon{font-size:16px;height:16px;width:16px}.cute-step-icon-state-error{background-color:var(--cute-header-error-state-icon-background-color);color:var(--cute-header-error-state-icon-foreground-color)}.cute-step-icon-state-error .cute-icon{font-size:24px;height:24px;width:24px}.cute-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle;font-family:var(--cute-header-label-text-font);font-size:var(--cute-header-label-text-size);font-weight:var(--cute-header-label-text-weight);color:var(--cute-header-label-text-color)}.cute-step-label.cute-step-label-active{color:var(--cute-header-selected-state-label-text-color)}.cute-step-label.cute-step-label-error{color:var(--cute-header-error-state-label-text-color);font-size:var(--cute-header-error-state-label-text-size)}.cute-step-label.cute-step-label-selected{font-size:var(--cute-header-selected-state-label-text-size);font-weight:var(--cute-header-selected-state-label-text-weight)}.cute-step-text-label{text-overflow:ellipsis;overflow:hidden}.cute-step-text-label:has(>:nth-child(2)){display:flex;flex-direction:column}.cute-step-text-label:has(>:nth-child(2))>*{text-overflow:ellipsis;overflow:hidden}.cute-step-header .cute-step-header-ripple{inset:0;position:absolute;pointer-events:none}.cute-step-icon-selected{background-color:var(--cute-header-icon-selected-background-color);color:var(--cute-header-icon-selected-foreground-color)}.cute-step-icon-state-done{background-color:var(--cute-header-done-state-icon-background-color);color:var(--cute-header-done-state-icon-foreground-color)}.cute-step-icon-state-edit{background-color:var(--cute-header-edit-state-icon-background-color);color:var(--cute-header-edit-state-icon-foreground-color)}\n"] }]
|
|
313
|
+
}], ctorParameters: () => [], propDecorators: { state: [{
|
|
314
|
+
type: Input
|
|
315
|
+
}], label: [{
|
|
316
|
+
type: Input
|
|
317
|
+
}], errorMessage: [{
|
|
318
|
+
type: Input
|
|
319
|
+
}], iconOverrides: [{
|
|
320
|
+
type: Input
|
|
321
|
+
}], index: [{
|
|
322
|
+
type: Input
|
|
323
|
+
}], selected: [{
|
|
324
|
+
type: Input,
|
|
325
|
+
args: [{ transform: booleanAttribute }]
|
|
326
|
+
}], active: [{
|
|
327
|
+
type: Input,
|
|
328
|
+
args: [{ transform: booleanAttribute }]
|
|
329
|
+
}], optional: [{
|
|
330
|
+
type: Input,
|
|
331
|
+
args: [{ transform: booleanAttribute }]
|
|
332
|
+
}], disableRipple: [{
|
|
333
|
+
type: Input,
|
|
334
|
+
args: [{ transform: booleanAttribute }]
|
|
335
|
+
}], color: [{
|
|
336
|
+
type: Input
|
|
337
|
+
}] } });
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* @license Apache-2.0
|
|
341
|
+
*
|
|
342
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
343
|
+
*
|
|
344
|
+
* You may not use this file except in compliance with the License
|
|
345
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
346
|
+
*
|
|
347
|
+
* This code is a modification of the `@angular/material` original
|
|
348
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
349
|
+
*/
|
|
350
|
+
/**
|
|
351
|
+
* Template to be used to override the icons inside the step header.
|
|
352
|
+
*/
|
|
353
|
+
class CuteStepperIcon {
|
|
354
|
+
constructor() {
|
|
355
|
+
this.templateRef = inject(TemplateRef);
|
|
356
|
+
}
|
|
357
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
358
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteStepperIcon, isStandalone: true, selector: "ng-template[cuteStepperIcon]", inputs: { name: ["cuteStepperIcon", "name"] }, ngImport: i0 }); }
|
|
359
|
+
}
|
|
360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperIcon, decorators: [{
|
|
361
|
+
type: Directive,
|
|
362
|
+
args: [{
|
|
363
|
+
selector: 'ng-template[cuteStepperIcon]',
|
|
364
|
+
standalone: true,
|
|
365
|
+
}]
|
|
366
|
+
}], ctorParameters: () => [], propDecorators: { name: [{
|
|
367
|
+
type: Input,
|
|
368
|
+
args: ['cuteStepperIcon']
|
|
369
|
+
}] } });
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* @license Apache-2.0
|
|
373
|
+
*
|
|
374
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
375
|
+
*
|
|
376
|
+
* You may not use this file except in compliance with the License
|
|
377
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
378
|
+
*
|
|
379
|
+
* This code is a modification of the `@angular/material` original
|
|
380
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
381
|
+
*/
|
|
382
|
+
class CuteStepper extends CdkStepper {
|
|
383
|
+
/** Duration for the animation. Will be normalized to milliseconds if no units are set. */
|
|
384
|
+
get animationDuration() { return this._animationDuration; }
|
|
385
|
+
set animationDuration(value) {
|
|
386
|
+
this._animationDuration = /^\d+$/.test(value) ? value + 'ms' : value;
|
|
387
|
+
}
|
|
388
|
+
constructor() {
|
|
389
|
+
super();
|
|
390
|
+
this._ngZone = inject(NgZone);
|
|
391
|
+
this._renderer = inject(Renderer2);
|
|
392
|
+
this._animationsDisabled = _animationsDisabled();
|
|
393
|
+
this._isAnimating = signal(false, ...(ngDevMode ? [{ debugName: "_isAnimating" }] : []));
|
|
394
|
+
/** The list of step headers of the steps in the stepper. */
|
|
395
|
+
this._stepHeader = undefined;
|
|
396
|
+
/** Full list of steps inside the stepper, including inside nested steppers. */
|
|
397
|
+
this._steps = undefined;
|
|
398
|
+
/** Steps that belong to the current stepper excluding ones from nested steppers. */
|
|
399
|
+
this.steps = new QueryList();
|
|
400
|
+
/** Event emitted when the current step is done transitioning in. */
|
|
401
|
+
this.animationDone = new EventEmitter();
|
|
402
|
+
/** Whether ripples should be disabled for the step headers. */
|
|
403
|
+
this.disableRipple = false;
|
|
404
|
+
/**
|
|
405
|
+
* Whether the label should display in bottom or end position.
|
|
406
|
+
* Only applies in the `horizontal` orientation.
|
|
407
|
+
*/
|
|
408
|
+
this.labelPosition = 'end';
|
|
409
|
+
/**
|
|
410
|
+
* Position of the stepper's header.
|
|
411
|
+
* Only applies in the `horizontal` orientation.
|
|
412
|
+
*/
|
|
413
|
+
this.headerPosition = 'top';
|
|
414
|
+
/** The content prefix to use in the stepper header. */
|
|
415
|
+
this.headerPrefix = input(null, ...(ngDevMode ? [{ debugName: "headerPrefix" }] : []));
|
|
416
|
+
/** Consumer-specified template-refs to be used to override the header icons. */
|
|
417
|
+
this._iconOverrides = {};
|
|
418
|
+
this._animationDuration = '';
|
|
419
|
+
/** Whether the stepper is rendering on the server. */
|
|
420
|
+
this._isServer = !inject(Platform).isBrowser;
|
|
421
|
+
this._handleTransitionend = (event) => {
|
|
422
|
+
const target = event.target;
|
|
423
|
+
if (!target) {
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
// Because we bind a single `transitionend` handler on the host node and because transition
|
|
427
|
+
// events bubble, we have to filter down to only the active step so don't emit events too
|
|
428
|
+
// often. We check the orientation and `property` name first to reduce the amount of times
|
|
429
|
+
// we need to check the DOM.
|
|
430
|
+
const isHorizontalActiveElement = this.orientation === 'horizontal' &&
|
|
431
|
+
event.propertyName === 'transform' &&
|
|
432
|
+
target.classList.contains('cute-horizontal-stepper-content-current');
|
|
433
|
+
const isVerticalActiveElement = this.orientation === 'vertical' &&
|
|
434
|
+
event.propertyName === 'grid-template-rows' &&
|
|
435
|
+
target.classList.contains('cute-vertical-content-container-active');
|
|
436
|
+
// Finally we need to ensure that the animated element is a direct descendant,
|
|
437
|
+
// rather than one coming from a nested stepper.
|
|
438
|
+
const shouldEmit = (isHorizontalActiveElement || isVerticalActiveElement) &&
|
|
439
|
+
this._animatedContainers?.find(ref => ref.nativeElement === target);
|
|
440
|
+
if (shouldEmit) {
|
|
441
|
+
this._onAnimationDone();
|
|
442
|
+
}
|
|
443
|
+
};
|
|
444
|
+
const elementRef = inject(ElementRef);
|
|
445
|
+
const nodeName = elementRef.nativeElement.nodeName.toLowerCase();
|
|
446
|
+
this.orientation = nodeName === 'cute-vertical-stepper' ? 'vertical' : 'horizontal';
|
|
447
|
+
}
|
|
448
|
+
ngAfterContentInit() {
|
|
449
|
+
super.ngAfterContentInit();
|
|
450
|
+
this._icons?.forEach(({ name, templateRef }) => {
|
|
451
|
+
if (name) {
|
|
452
|
+
this._iconOverrides[name] = templateRef;
|
|
453
|
+
}
|
|
454
|
+
});
|
|
455
|
+
// Mark the component for change detection whenever the content children query changes
|
|
456
|
+
this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => this._stateChanged());
|
|
457
|
+
// Transition events won't fire if animations are disabled so we simulate them.
|
|
458
|
+
this.selectedIndexChange.pipe(takeUntil(this._destroyed)).subscribe(() => {
|
|
459
|
+
const duration = this._getAnimationDuration();
|
|
460
|
+
if (duration === '0ms' || duration === '0s') {
|
|
461
|
+
this._onAnimationDone();
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
this._isAnimating.set(true);
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
this._ngZone.runOutsideAngular(() => {
|
|
468
|
+
if (!this._animationsDisabled) {
|
|
469
|
+
setTimeout(() => {
|
|
470
|
+
// Delay enabling the animations so we don't animate the initial state.
|
|
471
|
+
this._elementRef.nativeElement.classList.add('cute-stepper-animations-enabled');
|
|
472
|
+
// Bind this outside the zone since it fires for all transitions inside the stepper.
|
|
473
|
+
this._cleanupTransition = this._renderer.listen(this._elementRef.nativeElement, 'transitionend', this._handleTransitionend);
|
|
474
|
+
}, 200);
|
|
475
|
+
}
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
ngAfterViewInit() {
|
|
479
|
+
super.ngAfterViewInit();
|
|
480
|
+
// Prior to #30314 the stepper had animation `done` events bound to each animated container.
|
|
481
|
+
// The animations module was firing them on initialization and for each subsequent animation.
|
|
482
|
+
// Since the events were bound in the template, it had the unintended side effect of triggering
|
|
483
|
+
// change detection as well. It appears that this side effect ended up being load-bearing,
|
|
484
|
+
// because it was ensuring that the content elements (e.g. `matStepLabel`) that are defined
|
|
485
|
+
// in subcomponents actually get picked up in a timely fashion. This subscription simulates
|
|
486
|
+
// the same change detection by using `queueMicrotask` similarly to the animations' module.
|
|
487
|
+
if (typeof queueMicrotask === 'function') {
|
|
488
|
+
let hasEmittedInitial = false;
|
|
489
|
+
this._animatedContainers?.changes
|
|
490
|
+
.pipe(startWith(null), takeUntil(this._destroyed))
|
|
491
|
+
.subscribe(() => queueMicrotask(() => {
|
|
492
|
+
// Simulate the initial `animationDone` event
|
|
493
|
+
// that gets emitted by the animations module.
|
|
494
|
+
if (!hasEmittedInitial) {
|
|
495
|
+
hasEmittedInitial = true;
|
|
496
|
+
this.animationDone.emit();
|
|
497
|
+
}
|
|
498
|
+
this._stateChanged();
|
|
499
|
+
}));
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
ngOnDestroy() {
|
|
503
|
+
super.ngOnDestroy();
|
|
504
|
+
this._cleanupTransition?.();
|
|
505
|
+
}
|
|
506
|
+
_getAnimationDuration() {
|
|
507
|
+
if (this._animationsDisabled) {
|
|
508
|
+
return '0ms';
|
|
509
|
+
}
|
|
510
|
+
if (this.animationDuration) {
|
|
511
|
+
return this.animationDuration;
|
|
512
|
+
}
|
|
513
|
+
return this.orientation === 'horizontal' ? '500ms' : '225ms';
|
|
514
|
+
}
|
|
515
|
+
_onAnimationDone() {
|
|
516
|
+
this._isAnimating.set(false);
|
|
517
|
+
this.animationDone.emit();
|
|
518
|
+
}
|
|
519
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
520
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CuteStepper, isStandalone: true, selector: "cute-stepper, cute-vertical-stepper, cute-horizontal-stepper, [cuteStepper]", inputs: { disableRipple: { classPropertyName: "disableRipple", publicName: "disableRipple", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: false, isRequired: false, transformFunction: null }, headerPosition: { classPropertyName: "headerPosition", publicName: "headerPosition", isSignal: false, isRequired: false, transformFunction: null }, headerPrefix: { classPropertyName: "headerPrefix", publicName: "headerPrefix", isSignal: true, isRequired: false, transformFunction: null }, animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { animationDone: "animationDone" }, host: { attributes: { "role": "tablist" }, properties: { "class.cute-stepper-horizontal": "orientation === \"horizontal\"", "class.cute-stepper-vertical": "orientation === \"vertical\"", "class.cute-stepper-label-position-end": "orientation === \"horizontal\" && labelPosition == \"end\"", "class.cute-stepper-label-position-bottom": "orientation === \"horizontal\" && labelPosition == \"bottom\"", "class.cute-stepper-header-position-bottom": "headerPosition === \"bottom\"", "class.cute-stepper-animating": "_isAnimating()", "style.--cute-stepper-animation-duration": "_getAnimationDuration()", "attr.aria-orientation": "orientation" }, classAttribute: "cute-stepper container" }, providers: [
|
|
521
|
+
{ provide: CdkStepper, useExisting: CuteStepper },
|
|
522
|
+
], queries: [{ propertyName: "_steps", predicate: CuteStep, descendants: true }, { propertyName: "_icons", predicate: CuteStepperIcon, descendants: true }], viewQueries: [{ propertyName: "_stepHeader", predicate: CuteStepHeader, descendants: true }, { propertyName: "_animatedContainers", predicate: ["animatedContainer"], descendants: true }], exportAs: ["cuteStepper", "cuteVerticalStepper", "cuteHorizontalStepper"], usesInheritance: true, ngImport: i0, template: "<!--\r\n We need to project the content somewhere to avoid hydration errors. Some observations:\r\n 1. This is only necessary on the server.\r\n 2. We get a hydration error if there aren't any nodes after the `ng-content`.\r\n 3. We get a hydration error if `ng-content` is wrapped in another element.\r\n-->\r\n@if (_isServer) {\r\n <ng-content/>\r\n}\r\n\r\n@switch (orientation) {\r\n @case ('horizontal') {\r\n <div class=\"cute-horizontal-stepper-wrapper\">\r\n <div class=\"cute-horizontal-stepper-header-container\">\r\n @for (step of steps; track step) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"stepTemplate\"\r\n [ngTemplateOutletContext]=\"{step: step}\">\r\n </ng-container>\r\n @if (!$last) {\r\n <div class=\"cute-stepper-horizontal-line\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"cute-horizontal-content-container\">\r\n @for (step of steps; track step) {\r\n <div\r\n #animatedContainer\r\n class=\"cute-horizontal-stepper-content\"\r\n role=\"tabpanel\"\r\n [id]=\"_getStepContentId($index)\"\r\n [attr.aria-labelledby]=\"_getStepLabelId($index)\"\r\n [class]=\"'cute-horizontal-stepper-content-' + _getAnimationDirection($index)\"\r\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\r\n <ng-container [ngTemplateOutlet]=\"step.content\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @case ('vertical') {\r\n @for (step of steps; track step) {\r\n <div class=\"cute-step\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"stepTemplate\"\r\n [ngTemplateOutletContext]=\"{step}\"/>\r\n <div\r\n #animatedContainer\r\n class=\"cute-vertical-content-container\"\r\n [class.cute-stepper-vertical-line]=\"!$last\"\r\n [class.cute-vertical-content-container-active]=\"selectedIndex === $index\"\r\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\r\n <div class=\"cute-vertical-stepper-content\"\r\n role=\"tabpanel\"\r\n [id]=\"_getStepContentId($index)\"\r\n [attr.aria-labelledby]=\"_getStepLabelId($index)\">\r\n <div class=\"cute-vertical-content\">\r\n <ng-container [ngTemplateOutlet]=\"step.content\"/>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n}\r\n\r\n<!-- Common step templating -->\r\n<!--\r\n We use Bootstrap's 'btn-{color}' CSS class for the specified theme color.\r\n See: [class]=\"color ? 'btn-'+color : ''\"\r\n-->\r\n<ng-template let-step=\"step\" #stepTemplate>\r\n @let i = step.index();\r\n @let isNavigable = step.isNavigable();\r\n <cute-step-header\r\n [class.cute-horizontal-stepper-header]=\"orientation === 'horizontal'\"\r\n [class.cute-vertical-stepper-header]=\"orientation === 'vertical'\"\r\n [class]=\"color ? 'btn-'+color : ''\"\r\n (click)=\"step.select()\"\r\n (keydown)=\"_onKeydown($event)\"\r\n [tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\r\n [id]=\"_getStepLabelId(i)\"\r\n [attr.aria-posinset]=\"i + 1\"\r\n [attr.aria-setsize]=\"steps.length\"\r\n [attr.aria-controls]=\"_getStepContentId(i)\"\r\n [attr.aria-selected]=\"step.isSelected()\"\r\n [attr.aria-label]=\"step.ariaLabel || null\"\r\n [attr.aria-labelledby]=\"(!step.ariaLabel && step.ariaLabelledby) ? step.ariaLabelledby : null\"\r\n [attr.aria-disabled]=\"isNavigable ? null : 'true'\"\r\n [index]=\"i\"\r\n [state]=\"step.indicatorType()\"\r\n [label]=\"step.stepLabel || step.label\"\r\n [selected]=\"step.isSelected()\"\r\n [active]=\"isNavigable\"\r\n [optional]=\"step.optional\"\r\n [errorMessage]=\"step.errorMessage\"\r\n [iconOverrides]=\"_iconOverrides\"\r\n [disableRipple]=\"disableRipple || !isNavigable\"\r\n [color]=\"step.color || color\">\r\n </cute-step-header>\r\n</ng-template>\r\n", styles: [".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cute-stepper{--cute-stepper-container-color: var(--bs-body-bg);--cute-stepper-line-color: var(--bs-border-color-translucent);display:block}.cute-stepper-vertical,.cute-stepper-horizontal{display:block;font-family:var(--bs-body-font-family);background:var(--bs-body-bg)}.cute-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header-container{align-items:flex-start}.cute-stepper-header-position-bottom .cute-horizontal-stepper-header-container{order:1}.cute-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px;border-top-color:var(--cute-stepper-line-color)}.cute-stepper-label-position-bottom .cute-stepper-horizontal-line{margin:0;min-width:0;position:relative;top:36px}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:first-child):before,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:last-child):before,.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:last-child):after,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:first-child):after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px)}.cute-horizontal-stepper-header{display:flex;overflow:hidden;align-items:center;padding:0 24px;height:72px}.cute-horizontal-stepper-header .cute-step-icon{margin-right:8px;flex:none}[dir=rtl] .cute-horizontal-stepper-header .cute-step-icon{margin-right:0;margin-left:8px}.cute-horizontal-stepper-header:before,.cute-horizontal-stepper-header:after{border-top-color:var(--cute-stepper-line-color)}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header{padding:20px 24px}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:before,.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:after{top:36px}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header{box-sizing:border-box;flex-direction:column;height:auto}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:last-child):after,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:first-child):after{right:0}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:first-child):before,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:last-child):before{left:0}[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:last-child:before,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:first-child:after{display:none}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header .cute-step-icon{margin-right:0;margin-left:0}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header .cute-step-label{padding:16px 0 0;text-align:center;width:100%}.cute-vertical-stepper-header{display:flex;align-items:center;height:32px;padding:20px 24px}.cute-vertical-stepper-header .cute-step-icon{margin-right:16px}[dir=rtl] .cute-vertical-stepper-header .cute-step-icon{margin-right:0;margin-left:16px}.cute-horizontal-stepper-wrapper{display:flex;flex-direction:column}.cute-horizontal-stepper-content{visibility:hidden;overflow:hidden;outline:0;height:0}.cute-stepper-animations-enabled .cute-horizontal-stepper-content{transition:transform var(--cute-stepper-animation-duration, 0) cubic-bezier(.35,0,.25,1)}.cute-horizontal-stepper-content.cute-horizontal-stepper-content-previous{transform:translate3d(-100%,0,0)}.cute-horizontal-stepper-content.cute-horizontal-stepper-content-next{transform:translate3d(100%,0,0)}.cute-horizontal-stepper-content.cute-horizontal-stepper-content-current{visibility:visible;transform:none;height:auto}.cute-stepper-horizontal:not(.cute-stepper-animating) .cute-horizontal-stepper-content.cute-horizontal-stepper-content-current{overflow:visible}.cute-horizontal-content-container{overflow:hidden;padding:0 24px 24px}@media (forced-colors: active){.cute-horizontal-content-container{outline:solid 1px}}.cute-stepper-header-position-bottom .cute-horizontal-content-container{padding:24px 24px 0}.cute-vertical-content-container{display:grid;grid-template-rows:0fr;grid-template-columns:100%;margin-left:40px;border:0;position:relative}.cute-stepper-animations-enabled .cute-vertical-content-container{transition:grid-template-rows var(--cute-stepper-animation-duration, 0) cubic-bezier(.4,0,.2,1)}.cute-vertical-content-container.cute-vertical-content-container-active{grid-template-rows:1fr}@media (forced-colors: active){.cute-vertical-content-container{outline:solid 1px}}[dir=rtl] .cute-vertical-content-container{margin-left:0;margin-right:40px}.cute-stepper-vertical-line:before{content:\"\";position:absolute;left:0;border-left-width:1px;border-left-style:solid;border-left-color:var(--cute-stepper-line-color);top:-12px;bottom:-12px}[dir=rtl] .cute-stepper-vertical-line:before{left:auto;right:0}.cute-vertical-stepper-content{overflow:hidden;outline:0;visibility:hidden}.cute-stepper-animations-enabled .cute-vertical-stepper-content{transition:visibility var(--cute-stepper-animation-duration, 0) linear}.cute-vertical-content-container-active>.cute-vertical-stepper-content{visibility:visible}.cute-vertical-content{padding:0 24px 24px}.cute-step:last-child .cute-vertical-content-container{border:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CuteStepHeader, selector: "cute-step-header", inputs: ["state", "label", "errorMessage", "iconOverrides", "index", "selected", "active", "optional", "disableRipple", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
523
|
+
}
|
|
524
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepper, decorators: [{
|
|
525
|
+
type: Component,
|
|
526
|
+
args: [{ selector: 'cute-stepper, cute-vertical-stepper, cute-horizontal-stepper, [cuteStepper]', exportAs: 'cuteStepper, cuteVerticalStepper, cuteHorizontalStepper', host: {
|
|
527
|
+
'class': 'cute-stepper container',
|
|
528
|
+
'[class.cute-stepper-horizontal]': 'orientation === "horizontal"',
|
|
529
|
+
'[class.cute-stepper-vertical]': 'orientation === "vertical"',
|
|
530
|
+
'[class.cute-stepper-label-position-end]': 'orientation === "horizontal" && labelPosition == "end"',
|
|
531
|
+
'[class.cute-stepper-label-position-bottom]': 'orientation === "horizontal" && labelPosition == "bottom"',
|
|
532
|
+
'[class.cute-stepper-header-position-bottom]': 'headerPosition === "bottom"',
|
|
533
|
+
'[class.cute-stepper-animating]': '_isAnimating()',
|
|
534
|
+
'[style.--cute-stepper-animation-duration]': '_getAnimationDuration()',
|
|
535
|
+
'[attr.aria-orientation]': 'orientation',
|
|
536
|
+
'role': 'tablist',
|
|
537
|
+
}, providers: [
|
|
538
|
+
{ provide: CdkStepper, useExisting: CuteStepper },
|
|
539
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, CuteStepHeader], template: "<!--\r\n We need to project the content somewhere to avoid hydration errors. Some observations:\r\n 1. This is only necessary on the server.\r\n 2. We get a hydration error if there aren't any nodes after the `ng-content`.\r\n 3. We get a hydration error if `ng-content` is wrapped in another element.\r\n-->\r\n@if (_isServer) {\r\n <ng-content/>\r\n}\r\n\r\n@switch (orientation) {\r\n @case ('horizontal') {\r\n <div class=\"cute-horizontal-stepper-wrapper\">\r\n <div class=\"cute-horizontal-stepper-header-container\">\r\n @for (step of steps; track step) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"stepTemplate\"\r\n [ngTemplateOutletContext]=\"{step: step}\">\r\n </ng-container>\r\n @if (!$last) {\r\n <div class=\"cute-stepper-horizontal-line\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"cute-horizontal-content-container\">\r\n @for (step of steps; track step) {\r\n <div\r\n #animatedContainer\r\n class=\"cute-horizontal-stepper-content\"\r\n role=\"tabpanel\"\r\n [id]=\"_getStepContentId($index)\"\r\n [attr.aria-labelledby]=\"_getStepLabelId($index)\"\r\n [class]=\"'cute-horizontal-stepper-content-' + _getAnimationDirection($index)\"\r\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\r\n <ng-container [ngTemplateOutlet]=\"step.content\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @case ('vertical') {\r\n @for (step of steps; track step) {\r\n <div class=\"cute-step\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"stepTemplate\"\r\n [ngTemplateOutletContext]=\"{step}\"/>\r\n <div\r\n #animatedContainer\r\n class=\"cute-vertical-content-container\"\r\n [class.cute-stepper-vertical-line]=\"!$last\"\r\n [class.cute-vertical-content-container-active]=\"selectedIndex === $index\"\r\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\r\n <div class=\"cute-vertical-stepper-content\"\r\n role=\"tabpanel\"\r\n [id]=\"_getStepContentId($index)\"\r\n [attr.aria-labelledby]=\"_getStepLabelId($index)\">\r\n <div class=\"cute-vertical-content\">\r\n <ng-container [ngTemplateOutlet]=\"step.content\"/>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n}\r\n\r\n<!-- Common step templating -->\r\n<!--\r\n We use Bootstrap's 'btn-{color}' CSS class for the specified theme color.\r\n See: [class]=\"color ? 'btn-'+color : ''\"\r\n-->\r\n<ng-template let-step=\"step\" #stepTemplate>\r\n @let i = step.index();\r\n @let isNavigable = step.isNavigable();\r\n <cute-step-header\r\n [class.cute-horizontal-stepper-header]=\"orientation === 'horizontal'\"\r\n [class.cute-vertical-stepper-header]=\"orientation === 'vertical'\"\r\n [class]=\"color ? 'btn-'+color : ''\"\r\n (click)=\"step.select()\"\r\n (keydown)=\"_onKeydown($event)\"\r\n [tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\r\n [id]=\"_getStepLabelId(i)\"\r\n [attr.aria-posinset]=\"i + 1\"\r\n [attr.aria-setsize]=\"steps.length\"\r\n [attr.aria-controls]=\"_getStepContentId(i)\"\r\n [attr.aria-selected]=\"step.isSelected()\"\r\n [attr.aria-label]=\"step.ariaLabel || null\"\r\n [attr.aria-labelledby]=\"(!step.ariaLabel && step.ariaLabelledby) ? step.ariaLabelledby : null\"\r\n [attr.aria-disabled]=\"isNavigable ? null : 'true'\"\r\n [index]=\"i\"\r\n [state]=\"step.indicatorType()\"\r\n [label]=\"step.stepLabel || step.label\"\r\n [selected]=\"step.isSelected()\"\r\n [active]=\"isNavigable\"\r\n [optional]=\"step.optional\"\r\n [errorMessage]=\"step.errorMessage\"\r\n [iconOverrides]=\"_iconOverrides\"\r\n [disableRipple]=\"disableRipple || !isNavigable\"\r\n [color]=\"step.color || color\">\r\n </cute-step-header>\r\n</ng-template>\r\n", styles: [".cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cute-stepper{--cute-stepper-container-color: var(--bs-body-bg);--cute-stepper-line-color: var(--bs-border-color-translucent);display:block}.cute-stepper-vertical,.cute-stepper-horizontal{display:block;font-family:var(--bs-body-font-family);background:var(--bs-body-bg)}.cute-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header-container{align-items:flex-start}.cute-stepper-header-position-bottom .cute-horizontal-stepper-header-container{order:1}.cute-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px;border-top-color:var(--cute-stepper-line-color)}.cute-stepper-label-position-bottom .cute-stepper-horizontal-line{margin:0;min-width:0;position:relative;top:36px}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:first-child):before,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:last-child):before,.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:last-child):after,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:first-child):after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px)}.cute-horizontal-stepper-header{display:flex;overflow:hidden;align-items:center;padding:0 24px;height:72px}.cute-horizontal-stepper-header .cute-step-icon{margin-right:8px;flex:none}[dir=rtl] .cute-horizontal-stepper-header .cute-step-icon{margin-right:0;margin-left:8px}.cute-horizontal-stepper-header:before,.cute-horizontal-stepper-header:after{border-top-color:var(--cute-stepper-line-color)}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header{padding:20px 24px}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:before,.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:after{top:36px}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header{box-sizing:border-box;flex-direction:column;height:auto}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:last-child):after,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:first-child):after{right:0}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:first-child):before,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:not(:last-child):before{left:0}[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:last-child:before,[dir=rtl] .cute-stepper-label-position-bottom .cute-horizontal-stepper-header:first-child:after{display:none}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header .cute-step-icon{margin-right:0;margin-left:0}.cute-stepper-label-position-bottom .cute-horizontal-stepper-header .cute-step-label{padding:16px 0 0;text-align:center;width:100%}.cute-vertical-stepper-header{display:flex;align-items:center;height:32px;padding:20px 24px}.cute-vertical-stepper-header .cute-step-icon{margin-right:16px}[dir=rtl] .cute-vertical-stepper-header .cute-step-icon{margin-right:0;margin-left:16px}.cute-horizontal-stepper-wrapper{display:flex;flex-direction:column}.cute-horizontal-stepper-content{visibility:hidden;overflow:hidden;outline:0;height:0}.cute-stepper-animations-enabled .cute-horizontal-stepper-content{transition:transform var(--cute-stepper-animation-duration, 0) cubic-bezier(.35,0,.25,1)}.cute-horizontal-stepper-content.cute-horizontal-stepper-content-previous{transform:translate3d(-100%,0,0)}.cute-horizontal-stepper-content.cute-horizontal-stepper-content-next{transform:translate3d(100%,0,0)}.cute-horizontal-stepper-content.cute-horizontal-stepper-content-current{visibility:visible;transform:none;height:auto}.cute-stepper-horizontal:not(.cute-stepper-animating) .cute-horizontal-stepper-content.cute-horizontal-stepper-content-current{overflow:visible}.cute-horizontal-content-container{overflow:hidden;padding:0 24px 24px}@media (forced-colors: active){.cute-horizontal-content-container{outline:solid 1px}}.cute-stepper-header-position-bottom .cute-horizontal-content-container{padding:24px 24px 0}.cute-vertical-content-container{display:grid;grid-template-rows:0fr;grid-template-columns:100%;margin-left:40px;border:0;position:relative}.cute-stepper-animations-enabled .cute-vertical-content-container{transition:grid-template-rows var(--cute-stepper-animation-duration, 0) cubic-bezier(.4,0,.2,1)}.cute-vertical-content-container.cute-vertical-content-container-active{grid-template-rows:1fr}@media (forced-colors: active){.cute-vertical-content-container{outline:solid 1px}}[dir=rtl] .cute-vertical-content-container{margin-left:0;margin-right:40px}.cute-stepper-vertical-line:before{content:\"\";position:absolute;left:0;border-left-width:1px;border-left-style:solid;border-left-color:var(--cute-stepper-line-color);top:-12px;bottom:-12px}[dir=rtl] .cute-stepper-vertical-line:before{left:auto;right:0}.cute-vertical-stepper-content{overflow:hidden;outline:0;visibility:hidden}.cute-stepper-animations-enabled .cute-vertical-stepper-content{transition:visibility var(--cute-stepper-animation-duration, 0) linear}.cute-vertical-content-container-active>.cute-vertical-stepper-content{visibility:visible}.cute-vertical-content{padding:0 24px 24px}.cute-step:last-child .cute-vertical-content-container{border:none}\n"] }]
|
|
540
|
+
}], ctorParameters: () => [], propDecorators: { _stepHeader: [{
|
|
541
|
+
type: ViewChildren,
|
|
542
|
+
args: [CuteStepHeader]
|
|
543
|
+
}], _animatedContainers: [{
|
|
544
|
+
type: ViewChildren,
|
|
545
|
+
args: ['animatedContainer']
|
|
546
|
+
}], _steps: [{
|
|
547
|
+
type: ContentChildren,
|
|
548
|
+
args: [CuteStep, { descendants: true }]
|
|
549
|
+
}], _icons: [{
|
|
550
|
+
type: ContentChildren,
|
|
551
|
+
args: [CuteStepperIcon, { descendants: true }]
|
|
552
|
+
}], animationDone: [{
|
|
553
|
+
type: Output
|
|
554
|
+
}], disableRipple: [{
|
|
555
|
+
type: Input,
|
|
556
|
+
args: [{ transform: booleanAttribute }]
|
|
557
|
+
}], color: [{
|
|
558
|
+
type: Input
|
|
559
|
+
}], labelPosition: [{
|
|
560
|
+
type: Input
|
|
561
|
+
}], headerPosition: [{
|
|
562
|
+
type: Input
|
|
563
|
+
}], headerPrefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerPrefix", required: false }] }], animationDuration: [{
|
|
564
|
+
type: Input
|
|
565
|
+
}] } });
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* @license Apache-2.0
|
|
569
|
+
*
|
|
570
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
571
|
+
*
|
|
572
|
+
* You may not use this file except in compliance with the License
|
|
573
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
574
|
+
*
|
|
575
|
+
* This code is a modification of the `@angular/material` original
|
|
576
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
577
|
+
*/
|
|
578
|
+
/** Button that moves to the next step in a stepper workflow. */
|
|
579
|
+
class CuteStepperNext extends CdkStepperNext {
|
|
580
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperNext, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
581
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteStepperNext, isStandalone: true, selector: "button[cuteStepperNext]", host: { properties: { "type": "type" }, classAttribute: "cute-stepper-next" }, usesInheritance: true, ngImport: i0 }); }
|
|
582
|
+
}
|
|
583
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperNext, decorators: [{
|
|
584
|
+
type: Directive,
|
|
585
|
+
args: [{
|
|
586
|
+
selector: 'button[cuteStepperNext]',
|
|
587
|
+
host: {
|
|
588
|
+
'class': 'cute-stepper-next',
|
|
589
|
+
'[type]': 'type',
|
|
590
|
+
},
|
|
591
|
+
standalone: true,
|
|
592
|
+
}]
|
|
593
|
+
}] });
|
|
594
|
+
/** Button that moves to the previous step in a stepper workflow. */
|
|
595
|
+
class CuteStepperPrevious extends CdkStepperPrevious {
|
|
596
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperPrevious, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
597
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteStepperPrevious, isStandalone: true, selector: "button[cuteStepperPrevious]", host: { properties: { "type": "type" }, classAttribute: "cute-stepper-previous" }, usesInheritance: true, ngImport: i0 }); }
|
|
598
|
+
}
|
|
599
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperPrevious, decorators: [{
|
|
600
|
+
type: Directive,
|
|
601
|
+
args: [{
|
|
602
|
+
selector: 'button[cuteStepperPrevious]',
|
|
603
|
+
host: {
|
|
604
|
+
'class': 'cute-stepper-previous',
|
|
605
|
+
'[type]': 'type',
|
|
606
|
+
},
|
|
607
|
+
standalone: true,
|
|
608
|
+
}]
|
|
609
|
+
}] });
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* @license Apache-2.0
|
|
613
|
+
*
|
|
614
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
615
|
+
*
|
|
616
|
+
* You may not use this file except in compliance with the License
|
|
617
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
618
|
+
*
|
|
619
|
+
* This code is a modification of the `@angular/material` original
|
|
620
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
621
|
+
*/
|
|
622
|
+
const TYPES = [
|
|
623
|
+
CuteStepper,
|
|
624
|
+
CuteStep,
|
|
625
|
+
CuteStepLabel,
|
|
626
|
+
CuteStepLabelTitle,
|
|
627
|
+
CuteStepLabelDescription,
|
|
628
|
+
CuteStepHeader,
|
|
629
|
+
CuteStepContent,
|
|
630
|
+
CuteStepperIcon,
|
|
631
|
+
CuteStepperNext,
|
|
632
|
+
CuteStepperPrevious
|
|
633
|
+
];
|
|
634
|
+
class CuteStepperModule {
|
|
635
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
636
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperModule, imports: [CommonModule, CdkStepperModule, CuteStepper,
|
|
637
|
+
CuteStep,
|
|
638
|
+
CuteStepLabel,
|
|
639
|
+
CuteStepLabelTitle,
|
|
640
|
+
CuteStepLabelDescription,
|
|
641
|
+
CuteStepHeader,
|
|
642
|
+
CuteStepContent,
|
|
643
|
+
CuteStepperIcon,
|
|
644
|
+
CuteStepperNext,
|
|
645
|
+
CuteStepperPrevious], exports: [CuteStepper,
|
|
646
|
+
CuteStep,
|
|
647
|
+
CuteStepLabel,
|
|
648
|
+
CuteStepLabelTitle,
|
|
649
|
+
CuteStepLabelDescription,
|
|
650
|
+
CuteStepHeader,
|
|
651
|
+
CuteStepContent,
|
|
652
|
+
CuteStepperIcon,
|
|
653
|
+
CuteStepperNext,
|
|
654
|
+
CuteStepperPrevious] }); }
|
|
655
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperModule, providers: [ErrorStateMatcher], imports: [CommonModule, CdkStepperModule, CuteStepper,
|
|
656
|
+
CuteStepHeader] }); }
|
|
657
|
+
}
|
|
658
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteStepperModule, decorators: [{
|
|
659
|
+
type: NgModule,
|
|
660
|
+
args: [{
|
|
661
|
+
imports: [CommonModule, CdkStepperModule, ...TYPES],
|
|
662
|
+
exports: TYPES,
|
|
663
|
+
declarations: [],
|
|
664
|
+
providers: [ErrorStateMatcher],
|
|
665
|
+
}]
|
|
666
|
+
}] });
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Generated bundle index. Do not edit.
|
|
670
|
+
*/
|
|
671
|
+
|
|
672
|
+
export { CuteStep, CuteStepContent, CuteStepHeader, CuteStepLabel, CuteStepLabelDescription, CuteStepLabelTitle, CuteStepper, CuteStepperIcon, CuteStepperIntl, CuteStepperModule, CuteStepperNext, CuteStepperPrevious };
|
|
673
|
+
//# sourceMappingURL=cute-widgets-base-stepper.mjs.map
|