@muxima-ui/stepper 1.0.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 +98 -0
- package/esm2020/index.mjs +2 -0
- package/esm2020/lib/stepper/stepper.component.mjs +72 -0
- package/esm2020/muxima-ui-stepper.mjs +5 -0
- package/fesm2015/muxima-ui-stepper.mjs +81 -0
- package/fesm2015/muxima-ui-stepper.mjs.map +1 -0
- package/fesm2020/muxima-ui-stepper.mjs +79 -0
- package/fesm2020/muxima-ui-stepper.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/lib/stepper/stepper.component.d.ts +26 -0
- package/package.json +55 -0
package/README.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Stepper
|
|
2
|
+
|
|
3
|
+
## Como instalar
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install @agt-ui/stepper --registry http://massinga.minfin.gov.ao:4873/
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
### Imports
|
|
10
|
+
|
|
11
|
+
```diff
|
|
12
|
+
import { NgModule } from '@angular/core';
|
|
13
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
14
|
+
import { AppComponent } from './app.component';
|
|
15
|
+
|
|
16
|
+
+ import { StepsComponent } from '@agt-ui/steps'
|
|
17
|
+
|
|
18
|
+
@NgModule({
|
|
19
|
+
declarations: [AppComponent],
|
|
20
|
+
+ imports: [BrowserModule, StepsComponent],
|
|
21
|
+
+ exports: [StepsComponent],
|
|
22
|
+
})
|
|
23
|
+
export class AppModule {}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Como funciona
|
|
27
|
+
|
|
28
|
+
O exemplo abaixo mostra a lógica para implementação padrão do componente
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
+ import { StepsComponent } from '@agt-ui/steps'
|
|
32
|
+
|
|
33
|
+
@Component({
|
|
34
|
+
selector: 'app-root',
|
|
35
|
+
templateUrl: './app.component.html',
|
|
36
|
+
styleUrls: ['./app.component.css'],
|
|
37
|
+
})
|
|
38
|
+
export class AppComponent {
|
|
39
|
+
currentStep = 1
|
|
40
|
+
|
|
41
|
+
@ViewChild(StepperComponent) stepper!: StepperComponent;
|
|
42
|
+
|
|
43
|
+
handleNextStep() {
|
|
44
|
+
this.stepper.next()
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
handlePrevStep() {
|
|
48
|
+
this.stepper.prev()
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
steps: Array<string> = [
|
|
52
|
+
'Detalhes do agente econômico',
|
|
53
|
+
'Detalhes do proprietário',
|
|
54
|
+
'Situação fiscal',
|
|
55
|
+
'Informações da visita',
|
|
56
|
+
'Resumo'
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
#### Explicação
|
|
63
|
+
- **steps**: Um array de strings responsável por fornecer os passos para o step
|
|
64
|
+
|
|
65
|
+
- **currentPage**: recebe o numero do passo atual [começa com 1]
|
|
66
|
+
|
|
67
|
+
- **handleNextStep**: função para avançar para o próximo passo
|
|
68
|
+
|
|
69
|
+
- **handlePrevStep**: função para voltar para o passo anterior
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
#### A seguir a utilização do componente no arquivo .html
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
<agt-stepper [steps]="steps" [(currentStep)]="currentStep" />
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
<div *ngIf="currentPage === 1">
|
|
79
|
+
<p>Detalhes de agente economico</p>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<div *ngIf="currentPage === 2">
|
|
83
|
+
<p>Detalhes do proprietário</p>
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
<div *ngIf="currentPage === 3">
|
|
87
|
+
<p>Situação fiscal</p>
|
|
88
|
+
</div>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## Storybook
|
|
93
|
+
|
|
94
|
+
Consulte o Storybook para visualizar o componente
|
|
95
|
+
|
|
96
|
+
- [@Storybook](http://camuine06.minfin.gov.ao:86/)
|
|
97
|
+
|
|
98
|
+
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './lib/stepper/stepper.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9uYXZpZ2F0aW9uL3N0ZXBwZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9zdGVwcGVyL3N0ZXBwZXIuY29tcG9uZW50JztcclxuIl19
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class StepperComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.steps = [];
|
|
8
|
+
this.currentStep = 0;
|
|
9
|
+
this.orientation = 'horizontal';
|
|
10
|
+
this.clickable = true;
|
|
11
|
+
this.stepChange = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
isActive(index) {
|
|
14
|
+
return this.currentStep === index;
|
|
15
|
+
}
|
|
16
|
+
isCompleted(index) {
|
|
17
|
+
return index < this.currentStep || this.steps[index]?.completed === true;
|
|
18
|
+
}
|
|
19
|
+
isDisabled(index) {
|
|
20
|
+
return this.steps[index]?.disabled === true;
|
|
21
|
+
}
|
|
22
|
+
goToStep(index) {
|
|
23
|
+
if (!this.clickable || this.isDisabled(index)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.currentStep = index;
|
|
27
|
+
this.stepChange.emit(index);
|
|
28
|
+
}
|
|
29
|
+
nextStep() {
|
|
30
|
+
if (this.currentStep < this.steps.length - 1) {
|
|
31
|
+
const nextIndex = this.currentStep + 1;
|
|
32
|
+
if (!this.isDisabled(nextIndex)) {
|
|
33
|
+
this.currentStep = nextIndex;
|
|
34
|
+
this.stepChange.emit(nextIndex);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
previousStep() {
|
|
39
|
+
if (this.currentStep > 0) {
|
|
40
|
+
const prevIndex = this.currentStep - 1;
|
|
41
|
+
if (!this.isDisabled(prevIndex)) {
|
|
42
|
+
this.currentStep = prevIndex;
|
|
43
|
+
this.stepChange.emit(prevIndex);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
canGoNext() {
|
|
48
|
+
return this.currentStep < this.steps.length - 1 &&
|
|
49
|
+
!this.isDisabled(this.currentStep + 1);
|
|
50
|
+
}
|
|
51
|
+
canGoPrevious() {
|
|
52
|
+
return this.currentStep > 0 &&
|
|
53
|
+
!this.isDisabled(this.currentStep - 1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
StepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
+
StepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: StepperComponent, isStandalone: true, selector: "muxima-stepper", inputs: { steps: "steps", currentStep: "currentStep", orientation: "orientation", clickable: "clickable" }, outputs: { stepChange: "stepChange" }, ngImport: i0, template: "<div class=\"muxima-stepper\" [class.vertical]=\"orientation === 'vertical'\" [class.horizontal]=\"orientation === 'horizontal'\">\n <div class=\"stepper-container\">\n <div *ngFor=\"let step of steps; let i = index\" \n class=\"step-wrapper\"\n [class.active]=\"isActive(i)\"\n [class.completed]=\"isCompleted(i)\"\n [class.disabled]=\"isDisabled(i)\"\n [class.clickable]=\"clickable && !isDisabled(i)\"\n (click)=\"goToStep(i)\">\n \n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step-circle\">\n <!-- Completed Icon -->\n <svg *ngIf=\"isCompleted(i)\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" class=\"check-icon\">\n <path d=\"M16.6668 5L7.50016 14.1667L3.3335 10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n \n <!-- Step Number or Icon -->\n <span *ngIf=\"!isCompleted(i)\" class=\"step-number\">\n <span *ngIf=\"!step.icon\">{{ i + 1 }}</span>\n <span *ngIf=\"step.icon\" class=\"step-icon\">{{ step.icon }}</span>\n </span>\n </div>\n \n <!-- Connector Line -->\n <div *ngIf=\"i < steps.length - 1\" class=\"step-connector\"></div>\n </div>\n \n <!-- Step Content -->\n <div class=\"step-content\">\n <div class=\"step-label\">{{ step.label }}</div>\n <div *ngIf=\"step.description\" class=\"step-description\">{{ step.description }}</div>\n </div>\n </div>\n </div>\n</div>\r\n", styles: [".muxima-stepper{width:100%}.stepper-container{display:flex;gap:0}.horizontal .stepper-container{flex-direction:row;align-items:flex-start}.horizontal .step-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;position:relative}.horizontal .step-wrapper.clickable{cursor:pointer}.horizontal .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.horizontal .step-indicator{display:flex;align-items:center;width:100%;margin-bottom:1rem}.horizontal .step-circle{margin:0 auto}.horizontal .step-connector{flex:1;height:3px;background:#e5e7eb;margin:0 1rem;transition:all .3s ease}.horizontal .step-wrapper.completed .step-connector,.horizontal .step-wrapper.active .step-connector{background:linear-gradient(90deg,#667eea 0%,#764ba2 100%)}.horizontal .step-content{text-align:center;width:100%}.vertical .stepper-container{flex-direction:column;align-items:stretch}.vertical .step-wrapper{display:flex;flex-direction:row;align-items:flex-start;gap:1.5rem;padding:1.5rem 0}.vertical .step-wrapper.clickable{cursor:pointer}.vertical .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.vertical .step-indicator{display:flex;flex-direction:column;align-items:center;position:relative}.vertical .step-connector{width:3px;height:100%;min-height:40px;background:#e5e7eb;margin:.5rem 0;transition:all .3s ease}.vertical .step-wrapper.completed .step-connector,.vertical .step-wrapper.active .step-connector{background:linear-gradient(180deg,#667eea 0%,#764ba2 100%)}.vertical .step-content{flex:1;padding-top:.25rem}.step-circle{width:48px;height:48px;border-radius:50%;background:white;border:3px solid #e5e7eb;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.125rem;color:#9ca3af;transition:all .3s ease;flex-shrink:0;position:relative;z-index:1}.step-wrapper.active .step-circle{border-color:#667eea;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;box-shadow:0 8px 24px #667eea66;animation:pulse 1.5s ease-in-out infinite}.step-wrapper.completed .step-circle{border-color:#10b981;background:#10b981;color:#fff}.step-wrapper.disabled .step-circle{opacity:.4;cursor:not-allowed}.check-icon{animation:checkmark .3s ease-out}.step-number{display:flex;align-items:center;justify-content:center}.step-icon{font-size:1.5rem}.step-label{font-size:.95rem;font-weight:600;color:#4b5563;margin-bottom:.25rem;transition:color .3s ease}.step-wrapper.active .step-label{color:#667eea;font-weight:700}.step-wrapper.completed .step-label{color:#10b981}.step-wrapper.disabled .step-label{color:#d1d5db}.step-description{font-size:.875rem;color:#6b7280;line-height:1.4;transition:color .3s ease}.step-wrapper.disabled .step-description{color:#d1d5db}@keyframes pulse{0%,to{box-shadow:0 8px 24px #667eea66}50%{box-shadow:0 8px 32px #667eea99}}@keyframes checkmark{0%{transform:scale(0) rotate(-45deg)}50%{transform:scale(1.2) rotate(0)}to{transform:scale(1) rotate(0)}}@media (max-width: 768px){.horizontal .stepper-container{flex-direction:column}.horizontal .step-wrapper{flex-direction:row;align-items:flex-start;gap:1rem;padding:1rem 0}.horizontal .step-indicator{flex-direction:column}.horizontal .step-connector{width:3px!important;height:100%!important;min-height:30px;margin:.5rem 0!important}.horizontal .step-content{text-align:left!important;padding-top:.25rem}.horizontal .step-circle{margin:0!important}.step-circle{width:40px;height:40px;font-size:1rem}.step-icon{font-size:1.25rem}.step-label{font-size:.875rem}.step-description{font-size:.8125rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StepperComponent, decorators: [{
|
|
59
|
+
type: Component,
|
|
60
|
+
args: [{ selector: 'muxima-stepper', standalone: true, imports: [CommonModule], template: "<div class=\"muxima-stepper\" [class.vertical]=\"orientation === 'vertical'\" [class.horizontal]=\"orientation === 'horizontal'\">\n <div class=\"stepper-container\">\n <div *ngFor=\"let step of steps; let i = index\" \n class=\"step-wrapper\"\n [class.active]=\"isActive(i)\"\n [class.completed]=\"isCompleted(i)\"\n [class.disabled]=\"isDisabled(i)\"\n [class.clickable]=\"clickable && !isDisabled(i)\"\n (click)=\"goToStep(i)\">\n \n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step-circle\">\n <!-- Completed Icon -->\n <svg *ngIf=\"isCompleted(i)\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" class=\"check-icon\">\n <path d=\"M16.6668 5L7.50016 14.1667L3.3335 10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n \n <!-- Step Number or Icon -->\n <span *ngIf=\"!isCompleted(i)\" class=\"step-number\">\n <span *ngIf=\"!step.icon\">{{ i + 1 }}</span>\n <span *ngIf=\"step.icon\" class=\"step-icon\">{{ step.icon }}</span>\n </span>\n </div>\n \n <!-- Connector Line -->\n <div *ngIf=\"i < steps.length - 1\" class=\"step-connector\"></div>\n </div>\n \n <!-- Step Content -->\n <div class=\"step-content\">\n <div class=\"step-label\">{{ step.label }}</div>\n <div *ngIf=\"step.description\" class=\"step-description\">{{ step.description }}</div>\n </div>\n </div>\n </div>\n</div>\r\n", styles: [".muxima-stepper{width:100%}.stepper-container{display:flex;gap:0}.horizontal .stepper-container{flex-direction:row;align-items:flex-start}.horizontal .step-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;position:relative}.horizontal .step-wrapper.clickable{cursor:pointer}.horizontal .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.horizontal .step-indicator{display:flex;align-items:center;width:100%;margin-bottom:1rem}.horizontal .step-circle{margin:0 auto}.horizontal .step-connector{flex:1;height:3px;background:#e5e7eb;margin:0 1rem;transition:all .3s ease}.horizontal .step-wrapper.completed .step-connector,.horizontal .step-wrapper.active .step-connector{background:linear-gradient(90deg,#667eea 0%,#764ba2 100%)}.horizontal .step-content{text-align:center;width:100%}.vertical .stepper-container{flex-direction:column;align-items:stretch}.vertical .step-wrapper{display:flex;flex-direction:row;align-items:flex-start;gap:1.5rem;padding:1.5rem 0}.vertical .step-wrapper.clickable{cursor:pointer}.vertical .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.vertical .step-indicator{display:flex;flex-direction:column;align-items:center;position:relative}.vertical .step-connector{width:3px;height:100%;min-height:40px;background:#e5e7eb;margin:.5rem 0;transition:all .3s ease}.vertical .step-wrapper.completed .step-connector,.vertical .step-wrapper.active .step-connector{background:linear-gradient(180deg,#667eea 0%,#764ba2 100%)}.vertical .step-content{flex:1;padding-top:.25rem}.step-circle{width:48px;height:48px;border-radius:50%;background:white;border:3px solid #e5e7eb;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.125rem;color:#9ca3af;transition:all .3s ease;flex-shrink:0;position:relative;z-index:1}.step-wrapper.active .step-circle{border-color:#667eea;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;box-shadow:0 8px 24px #667eea66;animation:pulse 1.5s ease-in-out infinite}.step-wrapper.completed .step-circle{border-color:#10b981;background:#10b981;color:#fff}.step-wrapper.disabled .step-circle{opacity:.4;cursor:not-allowed}.check-icon{animation:checkmark .3s ease-out}.step-number{display:flex;align-items:center;justify-content:center}.step-icon{font-size:1.5rem}.step-label{font-size:.95rem;font-weight:600;color:#4b5563;margin-bottom:.25rem;transition:color .3s ease}.step-wrapper.active .step-label{color:#667eea;font-weight:700}.step-wrapper.completed .step-label{color:#10b981}.step-wrapper.disabled .step-label{color:#d1d5db}.step-description{font-size:.875rem;color:#6b7280;line-height:1.4;transition:color .3s ease}.step-wrapper.disabled .step-description{color:#d1d5db}@keyframes pulse{0%,to{box-shadow:0 8px 24px #667eea66}50%{box-shadow:0 8px 32px #667eea99}}@keyframes checkmark{0%{transform:scale(0) rotate(-45deg)}50%{transform:scale(1.2) rotate(0)}to{transform:scale(1) rotate(0)}}@media (max-width: 768px){.horizontal .stepper-container{flex-direction:column}.horizontal .step-wrapper{flex-direction:row;align-items:flex-start;gap:1rem;padding:1rem 0}.horizontal .step-indicator{flex-direction:column}.horizontal .step-connector{width:3px!important;height:100%!important;min-height:30px;margin:.5rem 0!important}.horizontal .step-content{text-align:left!important;padding-top:.25rem}.horizontal .step-circle{margin:0!important}.step-circle{width:40px;height:40px;font-size:1rem}.step-icon{font-size:1.25rem}.step-label{font-size:.875rem}.step-description{font-size:.8125rem}}\n"] }]
|
|
61
|
+
}], propDecorators: { steps: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], currentStep: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], orientation: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], clickable: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], stepChange: [{
|
|
70
|
+
type: Output
|
|
71
|
+
}] } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9uYXZpZ2F0aW9uL3N0ZXBwZXIvc3JjL2xpYi9zdGVwcGVyL3N0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbmF2aWdhdGlvbi9zdGVwcGVyL3NyYy9saWIvc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFpQi9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFQN0I7UUFRVyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGdCQUFXLEdBQThCLFlBQVksQ0FBQztRQUN0RCxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWhCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBbURuRDtJQWpEQyxRQUFRLENBQUMsS0FBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FBQztJQUMzRSxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDOUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0MsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakM7U0FDRjtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3hDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUM7WUFDcEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7OEdBeERVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDZOQ2xCN0Isd21EQXFDQSxnaEhEdkJZLFlBQVk7NEZBSVgsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzs4QkFLZCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXAge1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBjb21wbGV0ZWQ/OiBib29sZWFuO1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtdXhpbWEtc3RlcHBlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcHBlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3RlcHBlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RlcHBlckNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgc3RlcHM6IFN0ZXBbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRTdGVwID0gMDtcclxuICBASW5wdXQoKSBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcclxuICBASW5wdXQoKSBjbGlja2FibGUgPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgc3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBpc0FjdGl2ZShpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcCA9PT0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBpc0NvbXBsZXRlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaW5kZXggPCB0aGlzLmN1cnJlbnRTdGVwIHx8IHRoaXMuc3RlcHNbaW5kZXhdPy5jb21wbGV0ZWQgPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0Rpc2FibGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnN0ZXBzW2luZGV4XT8uZGlzYWJsZWQgPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBnb1RvU3RlcChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2xpY2thYmxlIHx8IHRoaXMuaXNEaXNhYmxlZChpbmRleCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50U3RlcCA9IGluZGV4O1xyXG4gICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFN0ZXAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3RlcCA8IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLmN1cnJlbnRTdGVwICsgMTtcclxuICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQobmV4dEluZGV4KSkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBuZXh0SW5kZXg7XHJcbiAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQobmV4dEluZGV4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJldmlvdXNTdGVwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFN0ZXAgPiAwKSB7XHJcbiAgICAgIGNvbnN0IHByZXZJbmRleCA9IHRoaXMuY3VycmVudFN0ZXAgLSAxO1xyXG4gICAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZChwcmV2SW5kZXgpKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHByZXZJbmRleDtcclxuICAgICAgICB0aGlzLnN0ZXBDaGFuZ2UuZW1pdChwcmV2SW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5Hb05leHQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcCA8IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSAmJiBcclxuICAgICAgICAgICAhdGhpcy5pc0Rpc2FibGVkKHRoaXMuY3VycmVudFN0ZXAgKyAxKTtcclxuICB9XHJcblxyXG4gIGNhbkdvUHJldmlvdXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcCA+IDAgJiYgXHJcbiAgICAgICAgICAgIXRoaXMuaXNEaXNhYmxlZCh0aGlzLmN1cnJlbnRTdGVwIC0gMSk7XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwibXV4aW1hLXN0ZXBwZXJcIiBbY2xhc3MudmVydGljYWxdPVwib3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCdcIiBbY2xhc3MuaG9yaXpvbnRhbF09XCJvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnXCI+XG4gIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHM7IGxldCBpID0gaW5kZXhcIiBcbiAgICAgICAgIGNsYXNzPVwic3RlcC13cmFwcGVyXCJcbiAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3RpdmUoaSlcIlxuICAgICAgICAgW2NsYXNzLmNvbXBsZXRlZF09XCJpc0NvbXBsZXRlZChpKVwiXG4gICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChpKVwiXG4gICAgICAgICBbY2xhc3MuY2xpY2thYmxlXT1cImNsaWNrYWJsZSAmJiAhaXNEaXNhYmxlZChpKVwiXG4gICAgICAgICAoY2xpY2spPVwiZ29Ub1N0ZXAoaSlcIj5cbiAgICAgIFxuICAgICAgPCEtLSBTdGVwIEluZGljYXRvciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWluZGljYXRvclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1jaXJjbGVcIj5cbiAgICAgICAgICA8IS0tIENvbXBsZXRlZCBJY29uIC0tPlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCJpc0NvbXBsZXRlZChpKVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwiY2hlY2staWNvblwiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xNi42NjY4IDVMNy41MDAxNiAxNC4xNjY3TDMuMzMzNSAxMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgXG4gICAgICAgICAgPCEtLSBTdGVwIE51bWJlciBvciBJY29uIC0tPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzQ29tcGxldGVkKGkpXCIgY2xhc3M9XCJzdGVwLW51bWJlclwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc3RlcC5pY29uXCI+e3sgaSArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInN0ZXAuaWNvblwiIGNsYXNzPVwic3RlcC1pY29uXCI+e3sgc3RlcC5pY29uIH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICA8IS0tIENvbm5lY3RvciBMaW5lIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA8IHN0ZXBzLmxlbmd0aCAtIDFcIiBjbGFzcz1cInN0ZXAtY29ubmVjdG9yXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgPCEtLSBTdGVwIENvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcC1jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWxhYmVsXCI+e3sgc3RlcC5sYWJlbCB9fTwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3RlcC5kZXNjcmlwdGlvblwiIGNsYXNzPVwic3RlcC1kZXNjcmlwdGlvblwiPnt7IHN0ZXAuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV4aW1hLXVpLXN0ZXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9uYXZpZ2F0aW9uL3N0ZXBwZXIvc3JjL211eGltYS11aS1zdGVwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Input, Output } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
class StepperComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.steps = [];
|
|
9
|
+
this.currentStep = 0;
|
|
10
|
+
this.orientation = 'horizontal';
|
|
11
|
+
this.clickable = true;
|
|
12
|
+
this.stepChange = new EventEmitter();
|
|
13
|
+
}
|
|
14
|
+
isActive(index) {
|
|
15
|
+
return this.currentStep === index;
|
|
16
|
+
}
|
|
17
|
+
isCompleted(index) {
|
|
18
|
+
var _a;
|
|
19
|
+
return index < this.currentStep || ((_a = this.steps[index]) === null || _a === void 0 ? void 0 : _a.completed) === true;
|
|
20
|
+
}
|
|
21
|
+
isDisabled(index) {
|
|
22
|
+
var _a;
|
|
23
|
+
return ((_a = this.steps[index]) === null || _a === void 0 ? void 0 : _a.disabled) === true;
|
|
24
|
+
}
|
|
25
|
+
goToStep(index) {
|
|
26
|
+
if (!this.clickable || this.isDisabled(index)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.currentStep = index;
|
|
30
|
+
this.stepChange.emit(index);
|
|
31
|
+
}
|
|
32
|
+
nextStep() {
|
|
33
|
+
if (this.currentStep < this.steps.length - 1) {
|
|
34
|
+
const nextIndex = this.currentStep + 1;
|
|
35
|
+
if (!this.isDisabled(nextIndex)) {
|
|
36
|
+
this.currentStep = nextIndex;
|
|
37
|
+
this.stepChange.emit(nextIndex);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
previousStep() {
|
|
42
|
+
if (this.currentStep > 0) {
|
|
43
|
+
const prevIndex = this.currentStep - 1;
|
|
44
|
+
if (!this.isDisabled(prevIndex)) {
|
|
45
|
+
this.currentStep = prevIndex;
|
|
46
|
+
this.stepChange.emit(prevIndex);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
canGoNext() {
|
|
51
|
+
return this.currentStep < this.steps.length - 1 &&
|
|
52
|
+
!this.isDisabled(this.currentStep + 1);
|
|
53
|
+
}
|
|
54
|
+
canGoPrevious() {
|
|
55
|
+
return this.currentStep > 0 &&
|
|
56
|
+
!this.isDisabled(this.currentStep - 1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
StepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
StepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: StepperComponent, isStandalone: true, selector: "muxima-stepper", inputs: { steps: "steps", currentStep: "currentStep", orientation: "orientation", clickable: "clickable" }, outputs: { stepChange: "stepChange" }, ngImport: i0, template: "<div class=\"muxima-stepper\" [class.vertical]=\"orientation === 'vertical'\" [class.horizontal]=\"orientation === 'horizontal'\">\n <div class=\"stepper-container\">\n <div *ngFor=\"let step of steps; let i = index\" \n class=\"step-wrapper\"\n [class.active]=\"isActive(i)\"\n [class.completed]=\"isCompleted(i)\"\n [class.disabled]=\"isDisabled(i)\"\n [class.clickable]=\"clickable && !isDisabled(i)\"\n (click)=\"goToStep(i)\">\n \n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step-circle\">\n <!-- Completed Icon -->\n <svg *ngIf=\"isCompleted(i)\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" class=\"check-icon\">\n <path d=\"M16.6668 5L7.50016 14.1667L3.3335 10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n \n <!-- Step Number or Icon -->\n <span *ngIf=\"!isCompleted(i)\" class=\"step-number\">\n <span *ngIf=\"!step.icon\">{{ i + 1 }}</span>\n <span *ngIf=\"step.icon\" class=\"step-icon\">{{ step.icon }}</span>\n </span>\n </div>\n \n <!-- Connector Line -->\n <div *ngIf=\"i < steps.length - 1\" class=\"step-connector\"></div>\n </div>\n \n <!-- Step Content -->\n <div class=\"step-content\">\n <div class=\"step-label\">{{ step.label }}</div>\n <div *ngIf=\"step.description\" class=\"step-description\">{{ step.description }}</div>\n </div>\n </div>\n </div>\n</div>\r\n", styles: [".muxima-stepper{width:100%}.stepper-container{display:flex;gap:0}.horizontal .stepper-container{flex-direction:row;align-items:flex-start}.horizontal .step-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;position:relative}.horizontal .step-wrapper.clickable{cursor:pointer}.horizontal .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.horizontal .step-indicator{display:flex;align-items:center;width:100%;margin-bottom:1rem}.horizontal .step-circle{margin:0 auto}.horizontal .step-connector{flex:1;height:3px;background:#e5e7eb;margin:0 1rem;transition:all .3s ease}.horizontal .step-wrapper.completed .step-connector,.horizontal .step-wrapper.active .step-connector{background:linear-gradient(90deg,#667eea 0%,#764ba2 100%)}.horizontal .step-content{text-align:center;width:100%}.vertical .stepper-container{flex-direction:column;align-items:stretch}.vertical .step-wrapper{display:flex;flex-direction:row;align-items:flex-start;gap:1.5rem;padding:1.5rem 0}.vertical .step-wrapper.clickable{cursor:pointer}.vertical .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.vertical .step-indicator{display:flex;flex-direction:column;align-items:center;position:relative}.vertical .step-connector{width:3px;height:100%;min-height:40px;background:#e5e7eb;margin:.5rem 0;transition:all .3s ease}.vertical .step-wrapper.completed .step-connector,.vertical .step-wrapper.active .step-connector{background:linear-gradient(180deg,#667eea 0%,#764ba2 100%)}.vertical .step-content{flex:1;padding-top:.25rem}.step-circle{width:48px;height:48px;border-radius:50%;background:white;border:3px solid #e5e7eb;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.125rem;color:#9ca3af;transition:all .3s ease;flex-shrink:0;position:relative;z-index:1}.step-wrapper.active .step-circle{border-color:#667eea;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;box-shadow:0 8px 24px #667eea66;animation:pulse 1.5s ease-in-out infinite}.step-wrapper.completed .step-circle{border-color:#10b981;background:#10b981;color:#fff}.step-wrapper.disabled .step-circle{opacity:.4;cursor:not-allowed}.check-icon{animation:checkmark .3s ease-out}.step-number{display:flex;align-items:center;justify-content:center}.step-icon{font-size:1.5rem}.step-label{font-size:.95rem;font-weight:600;color:#4b5563;margin-bottom:.25rem;transition:color .3s ease}.step-wrapper.active .step-label{color:#667eea;font-weight:700}.step-wrapper.completed .step-label{color:#10b981}.step-wrapper.disabled .step-label{color:#d1d5db}.step-description{font-size:.875rem;color:#6b7280;line-height:1.4;transition:color .3s ease}.step-wrapper.disabled .step-description{color:#d1d5db}@keyframes pulse{0%,to{box-shadow:0 8px 24px #667eea66}50%{box-shadow:0 8px 32px #667eea99}}@keyframes checkmark{0%{transform:scale(0) rotate(-45deg)}50%{transform:scale(1.2) rotate(0)}to{transform:scale(1) rotate(0)}}@media (max-width: 768px){.horizontal .stepper-container{flex-direction:column}.horizontal .step-wrapper{flex-direction:row;align-items:flex-start;gap:1rem;padding:1rem 0}.horizontal .step-indicator{flex-direction:column}.horizontal .step-connector{width:3px!important;height:100%!important;min-height:30px;margin:.5rem 0!important}.horizontal .step-content{text-align:left!important;padding-top:.25rem}.horizontal .step-circle{margin:0!important}.step-circle{width:40px;height:40px;font-size:1rem}.step-icon{font-size:1.25rem}.step-label{font-size:.875rem}.step-description{font-size:.8125rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StepperComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'muxima-stepper', standalone: true, imports: [CommonModule], template: "<div class=\"muxima-stepper\" [class.vertical]=\"orientation === 'vertical'\" [class.horizontal]=\"orientation === 'horizontal'\">\n <div class=\"stepper-container\">\n <div *ngFor=\"let step of steps; let i = index\" \n class=\"step-wrapper\"\n [class.active]=\"isActive(i)\"\n [class.completed]=\"isCompleted(i)\"\n [class.disabled]=\"isDisabled(i)\"\n [class.clickable]=\"clickable && !isDisabled(i)\"\n (click)=\"goToStep(i)\">\n \n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step-circle\">\n <!-- Completed Icon -->\n <svg *ngIf=\"isCompleted(i)\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" class=\"check-icon\">\n <path d=\"M16.6668 5L7.50016 14.1667L3.3335 10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n \n <!-- Step Number or Icon -->\n <span *ngIf=\"!isCompleted(i)\" class=\"step-number\">\n <span *ngIf=\"!step.icon\">{{ i + 1 }}</span>\n <span *ngIf=\"step.icon\" class=\"step-icon\">{{ step.icon }}</span>\n </span>\n </div>\n \n <!-- Connector Line -->\n <div *ngIf=\"i < steps.length - 1\" class=\"step-connector\"></div>\n </div>\n \n <!-- Step Content -->\n <div class=\"step-content\">\n <div class=\"step-label\">{{ step.label }}</div>\n <div *ngIf=\"step.description\" class=\"step-description\">{{ step.description }}</div>\n </div>\n </div>\n </div>\n</div>\r\n", styles: [".muxima-stepper{width:100%}.stepper-container{display:flex;gap:0}.horizontal .stepper-container{flex-direction:row;align-items:flex-start}.horizontal .step-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;position:relative}.horizontal .step-wrapper.clickable{cursor:pointer}.horizontal .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.horizontal .step-indicator{display:flex;align-items:center;width:100%;margin-bottom:1rem}.horizontal .step-circle{margin:0 auto}.horizontal .step-connector{flex:1;height:3px;background:#e5e7eb;margin:0 1rem;transition:all .3s ease}.horizontal .step-wrapper.completed .step-connector,.horizontal .step-wrapper.active .step-connector{background:linear-gradient(90deg,#667eea 0%,#764ba2 100%)}.horizontal .step-content{text-align:center;width:100%}.vertical .stepper-container{flex-direction:column;align-items:stretch}.vertical .step-wrapper{display:flex;flex-direction:row;align-items:flex-start;gap:1.5rem;padding:1.5rem 0}.vertical .step-wrapper.clickable{cursor:pointer}.vertical .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.vertical .step-indicator{display:flex;flex-direction:column;align-items:center;position:relative}.vertical .step-connector{width:3px;height:100%;min-height:40px;background:#e5e7eb;margin:.5rem 0;transition:all .3s ease}.vertical .step-wrapper.completed .step-connector,.vertical .step-wrapper.active .step-connector{background:linear-gradient(180deg,#667eea 0%,#764ba2 100%)}.vertical .step-content{flex:1;padding-top:.25rem}.step-circle{width:48px;height:48px;border-radius:50%;background:white;border:3px solid #e5e7eb;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.125rem;color:#9ca3af;transition:all .3s ease;flex-shrink:0;position:relative;z-index:1}.step-wrapper.active .step-circle{border-color:#667eea;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;box-shadow:0 8px 24px #667eea66;animation:pulse 1.5s ease-in-out infinite}.step-wrapper.completed .step-circle{border-color:#10b981;background:#10b981;color:#fff}.step-wrapper.disabled .step-circle{opacity:.4;cursor:not-allowed}.check-icon{animation:checkmark .3s ease-out}.step-number{display:flex;align-items:center;justify-content:center}.step-icon{font-size:1.5rem}.step-label{font-size:.95rem;font-weight:600;color:#4b5563;margin-bottom:.25rem;transition:color .3s ease}.step-wrapper.active .step-label{color:#667eea;font-weight:700}.step-wrapper.completed .step-label{color:#10b981}.step-wrapper.disabled .step-label{color:#d1d5db}.step-description{font-size:.875rem;color:#6b7280;line-height:1.4;transition:color .3s ease}.step-wrapper.disabled .step-description{color:#d1d5db}@keyframes pulse{0%,to{box-shadow:0 8px 24px #667eea66}50%{box-shadow:0 8px 32px #667eea99}}@keyframes checkmark{0%{transform:scale(0) rotate(-45deg)}50%{transform:scale(1.2) rotate(0)}to{transform:scale(1) rotate(0)}}@media (max-width: 768px){.horizontal .stepper-container{flex-direction:column}.horizontal .step-wrapper{flex-direction:row;align-items:flex-start;gap:1rem;padding:1rem 0}.horizontal .step-indicator{flex-direction:column}.horizontal .step-connector{width:3px!important;height:100%!important;min-height:30px;margin:.5rem 0!important}.horizontal .step-content{text-align:left!important;padding-top:.25rem}.horizontal .step-circle{margin:0!important}.step-circle{width:40px;height:40px;font-size:1rem}.step-icon{font-size:1.25rem}.step-label{font-size:.875rem}.step-description{font-size:.8125rem}}\n"] }]
|
|
64
|
+
}], propDecorators: { steps: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], currentStep: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], orientation: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], clickable: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], stepChange: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}] } });
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Generated bundle index. Do not edit.
|
|
78
|
+
*/
|
|
79
|
+
|
|
80
|
+
export { StepperComponent };
|
|
81
|
+
//# sourceMappingURL=muxima-ui-stepper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"muxima-ui-stepper.mjs","sources":["../../../../navigation/stepper/src/lib/stepper/stepper.component.ts","../../../../navigation/stepper/src/lib/stepper/stepper.component.html","../../../../navigation/stepper/src/muxima-ui-stepper.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface Step {\r\n label: string;\r\n description?: string;\r\n icon?: string;\r\n completed?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'muxima-stepper',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './stepper.component.html',\r\n styleUrls: ['./stepper.component.scss'],\r\n})\r\nexport class StepperComponent {\r\n @Input() steps: Step[] = [];\r\n @Input() currentStep = 0;\r\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\r\n @Input() clickable = true;\r\n\r\n @Output() stepChange = new EventEmitter<number>();\r\n\r\n isActive(index: number): boolean {\r\n return this.currentStep === index;\r\n }\r\n\r\n isCompleted(index: number): boolean {\r\n return index < this.currentStep || this.steps[index]?.completed === true;\r\n }\r\n\r\n isDisabled(index: number): boolean {\r\n return this.steps[index]?.disabled === true;\r\n }\r\n\r\n goToStep(index: number): void {\r\n if (!this.clickable || this.isDisabled(index)) {\r\n return;\r\n }\r\n this.currentStep = index;\r\n this.stepChange.emit(index);\r\n }\r\n\r\n nextStep(): void {\r\n if (this.currentStep < this.steps.length - 1) {\r\n const nextIndex = this.currentStep + 1;\r\n if (!this.isDisabled(nextIndex)) {\r\n this.currentStep = nextIndex;\r\n this.stepChange.emit(nextIndex);\r\n }\r\n }\r\n }\r\n\r\n previousStep(): void {\r\n if (this.currentStep > 0) {\r\n const prevIndex = this.currentStep - 1;\r\n if (!this.isDisabled(prevIndex)) {\r\n this.currentStep = prevIndex;\r\n this.stepChange.emit(prevIndex);\r\n }\r\n }\r\n }\r\n\r\n canGoNext(): boolean {\r\n return this.currentStep < this.steps.length - 1 && \r\n !this.isDisabled(this.currentStep + 1);\r\n }\r\n\r\n canGoPrevious(): boolean {\r\n return this.currentStep > 0 && \r\n !this.isDisabled(this.currentStep - 1);\r\n }\r\n}\r\n\r\n","<div class=\"muxima-stepper\" [class.vertical]=\"orientation === 'vertical'\" [class.horizontal]=\"orientation === 'horizontal'\">\n <div class=\"stepper-container\">\n <div *ngFor=\"let step of steps; let i = index\" \n class=\"step-wrapper\"\n [class.active]=\"isActive(i)\"\n [class.completed]=\"isCompleted(i)\"\n [class.disabled]=\"isDisabled(i)\"\n [class.clickable]=\"clickable && !isDisabled(i)\"\n (click)=\"goToStep(i)\">\n \n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step-circle\">\n <!-- Completed Icon -->\n <svg *ngIf=\"isCompleted(i)\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" class=\"check-icon\">\n <path d=\"M16.6668 5L7.50016 14.1667L3.3335 10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n \n <!-- Step Number or Icon -->\n <span *ngIf=\"!isCompleted(i)\" class=\"step-number\">\n <span *ngIf=\"!step.icon\">{{ i + 1 }}</span>\n <span *ngIf=\"step.icon\" class=\"step-icon\">{{ step.icon }}</span>\n </span>\n </div>\n \n <!-- Connector Line -->\n <div *ngIf=\"i < steps.length - 1\" class=\"step-connector\"></div>\n </div>\n \n <!-- Step Content -->\n <div class=\"step-content\">\n <div class=\"step-label\">{{ step.label }}</div>\n <div *ngIf=\"step.description\" class=\"step-description\">{{ step.description }}</div>\n </div>\n </div>\n </div>\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Input, Output } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
class StepperComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.steps = [];
|
|
9
|
+
this.currentStep = 0;
|
|
10
|
+
this.orientation = 'horizontal';
|
|
11
|
+
this.clickable = true;
|
|
12
|
+
this.stepChange = new EventEmitter();
|
|
13
|
+
}
|
|
14
|
+
isActive(index) {
|
|
15
|
+
return this.currentStep === index;
|
|
16
|
+
}
|
|
17
|
+
isCompleted(index) {
|
|
18
|
+
return index < this.currentStep || this.steps[index]?.completed === true;
|
|
19
|
+
}
|
|
20
|
+
isDisabled(index) {
|
|
21
|
+
return this.steps[index]?.disabled === true;
|
|
22
|
+
}
|
|
23
|
+
goToStep(index) {
|
|
24
|
+
if (!this.clickable || this.isDisabled(index)) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.currentStep = index;
|
|
28
|
+
this.stepChange.emit(index);
|
|
29
|
+
}
|
|
30
|
+
nextStep() {
|
|
31
|
+
if (this.currentStep < this.steps.length - 1) {
|
|
32
|
+
const nextIndex = this.currentStep + 1;
|
|
33
|
+
if (!this.isDisabled(nextIndex)) {
|
|
34
|
+
this.currentStep = nextIndex;
|
|
35
|
+
this.stepChange.emit(nextIndex);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
previousStep() {
|
|
40
|
+
if (this.currentStep > 0) {
|
|
41
|
+
const prevIndex = this.currentStep - 1;
|
|
42
|
+
if (!this.isDisabled(prevIndex)) {
|
|
43
|
+
this.currentStep = prevIndex;
|
|
44
|
+
this.stepChange.emit(prevIndex);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
canGoNext() {
|
|
49
|
+
return this.currentStep < this.steps.length - 1 &&
|
|
50
|
+
!this.isDisabled(this.currentStep + 1);
|
|
51
|
+
}
|
|
52
|
+
canGoPrevious() {
|
|
53
|
+
return this.currentStep > 0 &&
|
|
54
|
+
!this.isDisabled(this.currentStep - 1);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
StepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
58
|
+
StepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: StepperComponent, isStandalone: true, selector: "muxima-stepper", inputs: { steps: "steps", currentStep: "currentStep", orientation: "orientation", clickable: "clickable" }, outputs: { stepChange: "stepChange" }, ngImport: i0, template: "<div class=\"muxima-stepper\" [class.vertical]=\"orientation === 'vertical'\" [class.horizontal]=\"orientation === 'horizontal'\">\n <div class=\"stepper-container\">\n <div *ngFor=\"let step of steps; let i = index\" \n class=\"step-wrapper\"\n [class.active]=\"isActive(i)\"\n [class.completed]=\"isCompleted(i)\"\n [class.disabled]=\"isDisabled(i)\"\n [class.clickable]=\"clickable && !isDisabled(i)\"\n (click)=\"goToStep(i)\">\n \n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step-circle\">\n <!-- Completed Icon -->\n <svg *ngIf=\"isCompleted(i)\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" class=\"check-icon\">\n <path d=\"M16.6668 5L7.50016 14.1667L3.3335 10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n \n <!-- Step Number or Icon -->\n <span *ngIf=\"!isCompleted(i)\" class=\"step-number\">\n <span *ngIf=\"!step.icon\">{{ i + 1 }}</span>\n <span *ngIf=\"step.icon\" class=\"step-icon\">{{ step.icon }}</span>\n </span>\n </div>\n \n <!-- Connector Line -->\n <div *ngIf=\"i < steps.length - 1\" class=\"step-connector\"></div>\n </div>\n \n <!-- Step Content -->\n <div class=\"step-content\">\n <div class=\"step-label\">{{ step.label }}</div>\n <div *ngIf=\"step.description\" class=\"step-description\">{{ step.description }}</div>\n </div>\n </div>\n </div>\n</div>\r\n", styles: [".muxima-stepper{width:100%}.stepper-container{display:flex;gap:0}.horizontal .stepper-container{flex-direction:row;align-items:flex-start}.horizontal .step-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;position:relative}.horizontal .step-wrapper.clickable{cursor:pointer}.horizontal .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.horizontal .step-indicator{display:flex;align-items:center;width:100%;margin-bottom:1rem}.horizontal .step-circle{margin:0 auto}.horizontal .step-connector{flex:1;height:3px;background:#e5e7eb;margin:0 1rem;transition:all .3s ease}.horizontal .step-wrapper.completed .step-connector,.horizontal .step-wrapper.active .step-connector{background:linear-gradient(90deg,#667eea 0%,#764ba2 100%)}.horizontal .step-content{text-align:center;width:100%}.vertical .stepper-container{flex-direction:column;align-items:stretch}.vertical .step-wrapper{display:flex;flex-direction:row;align-items:flex-start;gap:1.5rem;padding:1.5rem 0}.vertical .step-wrapper.clickable{cursor:pointer}.vertical .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.vertical .step-indicator{display:flex;flex-direction:column;align-items:center;position:relative}.vertical .step-connector{width:3px;height:100%;min-height:40px;background:#e5e7eb;margin:.5rem 0;transition:all .3s ease}.vertical .step-wrapper.completed .step-connector,.vertical .step-wrapper.active .step-connector{background:linear-gradient(180deg,#667eea 0%,#764ba2 100%)}.vertical .step-content{flex:1;padding-top:.25rem}.step-circle{width:48px;height:48px;border-radius:50%;background:white;border:3px solid #e5e7eb;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.125rem;color:#9ca3af;transition:all .3s ease;flex-shrink:0;position:relative;z-index:1}.step-wrapper.active .step-circle{border-color:#667eea;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;box-shadow:0 8px 24px #667eea66;animation:pulse 1.5s ease-in-out infinite}.step-wrapper.completed .step-circle{border-color:#10b981;background:#10b981;color:#fff}.step-wrapper.disabled .step-circle{opacity:.4;cursor:not-allowed}.check-icon{animation:checkmark .3s ease-out}.step-number{display:flex;align-items:center;justify-content:center}.step-icon{font-size:1.5rem}.step-label{font-size:.95rem;font-weight:600;color:#4b5563;margin-bottom:.25rem;transition:color .3s ease}.step-wrapper.active .step-label{color:#667eea;font-weight:700}.step-wrapper.completed .step-label{color:#10b981}.step-wrapper.disabled .step-label{color:#d1d5db}.step-description{font-size:.875rem;color:#6b7280;line-height:1.4;transition:color .3s ease}.step-wrapper.disabled .step-description{color:#d1d5db}@keyframes pulse{0%,to{box-shadow:0 8px 24px #667eea66}50%{box-shadow:0 8px 32px #667eea99}}@keyframes checkmark{0%{transform:scale(0) rotate(-45deg)}50%{transform:scale(1.2) rotate(0)}to{transform:scale(1) rotate(0)}}@media (max-width: 768px){.horizontal .stepper-container{flex-direction:column}.horizontal .step-wrapper{flex-direction:row;align-items:flex-start;gap:1rem;padding:1rem 0}.horizontal .step-indicator{flex-direction:column}.horizontal .step-connector{width:3px!important;height:100%!important;min-height:30px;margin:.5rem 0!important}.horizontal .step-content{text-align:left!important;padding-top:.25rem}.horizontal .step-circle{margin:0!important}.step-circle{width:40px;height:40px;font-size:1rem}.step-icon{font-size:1.25rem}.step-label{font-size:.875rem}.step-description{font-size:.8125rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: StepperComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ selector: 'muxima-stepper', standalone: true, imports: [CommonModule], template: "<div class=\"muxima-stepper\" [class.vertical]=\"orientation === 'vertical'\" [class.horizontal]=\"orientation === 'horizontal'\">\n <div class=\"stepper-container\">\n <div *ngFor=\"let step of steps; let i = index\" \n class=\"step-wrapper\"\n [class.active]=\"isActive(i)\"\n [class.completed]=\"isCompleted(i)\"\n [class.disabled]=\"isDisabled(i)\"\n [class.clickable]=\"clickable && !isDisabled(i)\"\n (click)=\"goToStep(i)\">\n \n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step-circle\">\n <!-- Completed Icon -->\n <svg *ngIf=\"isCompleted(i)\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" class=\"check-icon\">\n <path d=\"M16.6668 5L7.50016 14.1667L3.3335 10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n \n <!-- Step Number or Icon -->\n <span *ngIf=\"!isCompleted(i)\" class=\"step-number\">\n <span *ngIf=\"!step.icon\">{{ i + 1 }}</span>\n <span *ngIf=\"step.icon\" class=\"step-icon\">{{ step.icon }}</span>\n </span>\n </div>\n \n <!-- Connector Line -->\n <div *ngIf=\"i < steps.length - 1\" class=\"step-connector\"></div>\n </div>\n \n <!-- Step Content -->\n <div class=\"step-content\">\n <div class=\"step-label\">{{ step.label }}</div>\n <div *ngIf=\"step.description\" class=\"step-description\">{{ step.description }}</div>\n </div>\n </div>\n </div>\n</div>\r\n", styles: [".muxima-stepper{width:100%}.stepper-container{display:flex;gap:0}.horizontal .stepper-container{flex-direction:row;align-items:flex-start}.horizontal .step-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;position:relative}.horizontal .step-wrapper.clickable{cursor:pointer}.horizontal .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.horizontal .step-indicator{display:flex;align-items:center;width:100%;margin-bottom:1rem}.horizontal .step-circle{margin:0 auto}.horizontal .step-connector{flex:1;height:3px;background:#e5e7eb;margin:0 1rem;transition:all .3s ease}.horizontal .step-wrapper.completed .step-connector,.horizontal .step-wrapper.active .step-connector{background:linear-gradient(90deg,#667eea 0%,#764ba2 100%)}.horizontal .step-content{text-align:center;width:100%}.vertical .stepper-container{flex-direction:column;align-items:stretch}.vertical .step-wrapper{display:flex;flex-direction:row;align-items:flex-start;gap:1.5rem;padding:1.5rem 0}.vertical .step-wrapper.clickable{cursor:pointer}.vertical .step-wrapper:hover:not(.disabled) .step-circle{transform:scale(1.1)}.vertical .step-indicator{display:flex;flex-direction:column;align-items:center;position:relative}.vertical .step-connector{width:3px;height:100%;min-height:40px;background:#e5e7eb;margin:.5rem 0;transition:all .3s ease}.vertical .step-wrapper.completed .step-connector,.vertical .step-wrapper.active .step-connector{background:linear-gradient(180deg,#667eea 0%,#764ba2 100%)}.vertical .step-content{flex:1;padding-top:.25rem}.step-circle{width:48px;height:48px;border-radius:50%;background:white;border:3px solid #e5e7eb;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.125rem;color:#9ca3af;transition:all .3s ease;flex-shrink:0;position:relative;z-index:1}.step-wrapper.active .step-circle{border-color:#667eea;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;box-shadow:0 8px 24px #667eea66;animation:pulse 1.5s ease-in-out infinite}.step-wrapper.completed .step-circle{border-color:#10b981;background:#10b981;color:#fff}.step-wrapper.disabled .step-circle{opacity:.4;cursor:not-allowed}.check-icon{animation:checkmark .3s ease-out}.step-number{display:flex;align-items:center;justify-content:center}.step-icon{font-size:1.5rem}.step-label{font-size:.95rem;font-weight:600;color:#4b5563;margin-bottom:.25rem;transition:color .3s ease}.step-wrapper.active .step-label{color:#667eea;font-weight:700}.step-wrapper.completed .step-label{color:#10b981}.step-wrapper.disabled .step-label{color:#d1d5db}.step-description{font-size:.875rem;color:#6b7280;line-height:1.4;transition:color .3s ease}.step-wrapper.disabled .step-description{color:#d1d5db}@keyframes pulse{0%,to{box-shadow:0 8px 24px #667eea66}50%{box-shadow:0 8px 32px #667eea99}}@keyframes checkmark{0%{transform:scale(0) rotate(-45deg)}50%{transform:scale(1.2) rotate(0)}to{transform:scale(1) rotate(0)}}@media (max-width: 768px){.horizontal .stepper-container{flex-direction:column}.horizontal .step-wrapper{flex-direction:row;align-items:flex-start;gap:1rem;padding:1rem 0}.horizontal .step-indicator{flex-direction:column}.horizontal .step-connector{width:3px!important;height:100%!important;min-height:30px;margin:.5rem 0!important}.horizontal .step-content{text-align:left!important;padding-top:.25rem}.horizontal .step-circle{margin:0!important}.step-circle{width:40px;height:40px;font-size:1rem}.step-icon{font-size:1.25rem}.step-label{font-size:.875rem}.step-description{font-size:.8125rem}}\n"] }]
|
|
62
|
+
}], propDecorators: { steps: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], currentStep: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], orientation: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], clickable: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], stepChange: [{
|
|
71
|
+
type: Output
|
|
72
|
+
}] } });
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Generated bundle index. Do not edit.
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
export { StepperComponent };
|
|
79
|
+
//# sourceMappingURL=muxima-ui-stepper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"muxima-ui-stepper.mjs","sources":["../../../../navigation/stepper/src/lib/stepper/stepper.component.ts","../../../../navigation/stepper/src/lib/stepper/stepper.component.html","../../../../navigation/stepper/src/muxima-ui-stepper.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface Step {\r\n label: string;\r\n description?: string;\r\n icon?: string;\r\n completed?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'muxima-stepper',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './stepper.component.html',\r\n styleUrls: ['./stepper.component.scss'],\r\n})\r\nexport class StepperComponent {\r\n @Input() steps: Step[] = [];\r\n @Input() currentStep = 0;\r\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\r\n @Input() clickable = true;\r\n\r\n @Output() stepChange = new EventEmitter<number>();\r\n\r\n isActive(index: number): boolean {\r\n return this.currentStep === index;\r\n }\r\n\r\n isCompleted(index: number): boolean {\r\n return index < this.currentStep || this.steps[index]?.completed === true;\r\n }\r\n\r\n isDisabled(index: number): boolean {\r\n return this.steps[index]?.disabled === true;\r\n }\r\n\r\n goToStep(index: number): void {\r\n if (!this.clickable || this.isDisabled(index)) {\r\n return;\r\n }\r\n this.currentStep = index;\r\n this.stepChange.emit(index);\r\n }\r\n\r\n nextStep(): void {\r\n if (this.currentStep < this.steps.length - 1) {\r\n const nextIndex = this.currentStep + 1;\r\n if (!this.isDisabled(nextIndex)) {\r\n this.currentStep = nextIndex;\r\n this.stepChange.emit(nextIndex);\r\n }\r\n }\r\n }\r\n\r\n previousStep(): void {\r\n if (this.currentStep > 0) {\r\n const prevIndex = this.currentStep - 1;\r\n if (!this.isDisabled(prevIndex)) {\r\n this.currentStep = prevIndex;\r\n this.stepChange.emit(prevIndex);\r\n }\r\n }\r\n }\r\n\r\n canGoNext(): boolean {\r\n return this.currentStep < this.steps.length - 1 && \r\n !this.isDisabled(this.currentStep + 1);\r\n }\r\n\r\n canGoPrevious(): boolean {\r\n return this.currentStep > 0 && \r\n !this.isDisabled(this.currentStep - 1);\r\n }\r\n}\r\n\r\n","<div class=\"muxima-stepper\" [class.vertical]=\"orientation === 'vertical'\" [class.horizontal]=\"orientation === 'horizontal'\">\n <div class=\"stepper-container\">\n <div *ngFor=\"let step of steps; let i = index\" \n class=\"step-wrapper\"\n [class.active]=\"isActive(i)\"\n [class.completed]=\"isCompleted(i)\"\n [class.disabled]=\"isDisabled(i)\"\n [class.clickable]=\"clickable && !isDisabled(i)\"\n (click)=\"goToStep(i)\">\n \n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step-circle\">\n <!-- Completed Icon -->\n <svg *ngIf=\"isCompleted(i)\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" class=\"check-icon\">\n <path d=\"M16.6668 5L7.50016 14.1667L3.3335 10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n \n <!-- Step Number or Icon -->\n <span *ngIf=\"!isCompleted(i)\" class=\"step-number\">\n <span *ngIf=\"!step.icon\">{{ i + 1 }}</span>\n <span *ngIf=\"step.icon\" class=\"step-icon\">{{ step.icon }}</span>\n </span>\n </div>\n \n <!-- Connector Line -->\n <div *ngIf=\"i < steps.length - 1\" class=\"step-connector\"></div>\n </div>\n \n <!-- Step Content -->\n <div class=\"step-content\">\n <div class=\"step-label\">{{ step.label }}</div>\n <div *ngIf=\"step.description\" class=\"step-description\">{{ step.description }}</div>\n </div>\n </div>\n </div>\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/stepper/stepper.component';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export interface Step {
|
|
4
|
+
label: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
completed?: boolean;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare class StepperComponent {
|
|
11
|
+
steps: Step[];
|
|
12
|
+
currentStep: number;
|
|
13
|
+
orientation: 'horizontal' | 'vertical';
|
|
14
|
+
clickable: boolean;
|
|
15
|
+
stepChange: EventEmitter<number>;
|
|
16
|
+
isActive(index: number): boolean;
|
|
17
|
+
isCompleted(index: number): boolean;
|
|
18
|
+
isDisabled(index: number): boolean;
|
|
19
|
+
goToStep(index: number): void;
|
|
20
|
+
nextStep(): void;
|
|
21
|
+
previousStep(): void;
|
|
22
|
+
canGoNext(): boolean;
|
|
23
|
+
canGoPrevious(): boolean;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StepperComponent, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StepperComponent, "muxima-stepper", never, { "steps": "steps"; "currentStep": "currentStep"; "orientation": "orientation"; "clickable": "clickable"; }, { "stepChange": "stepChange"; }, never, never, true, never>;
|
|
26
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@muxima-ui/stepper",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Stepper/wizard component for Angular 18+ - Muxima UI",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"angular",
|
|
7
|
+
"stepper",
|
|
8
|
+
"wizard",
|
|
9
|
+
"steps",
|
|
10
|
+
"navigation",
|
|
11
|
+
"muxima-ui"
|
|
12
|
+
],
|
|
13
|
+
"author": "Muxima UI Team (jokerscript)",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/Aldemiro20/muxima-ui.git",
|
|
18
|
+
"directory": "packages/navigation/stepper"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://muxima-ui.vercel.app/components/stepper",
|
|
21
|
+
"bugs": {
|
|
22
|
+
"url": "https://github.com/Aldemiro20/muxima-ui/issues"
|
|
23
|
+
},
|
|
24
|
+
"documentation": "https://muxima-ui.vercel.app",
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"peerDependencies": {
|
|
29
|
+
"@angular/common": "^18.0.0",
|
|
30
|
+
"@angular/core": "^18.0.0"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"tslib": "^2.3.0"
|
|
34
|
+
},
|
|
35
|
+
"sideEffects": false,
|
|
36
|
+
"module": "fesm2015/muxima-ui-stepper.mjs",
|
|
37
|
+
"es2020": "fesm2020/muxima-ui-stepper.mjs",
|
|
38
|
+
"esm2020": "esm2020/muxima-ui-stepper.mjs",
|
|
39
|
+
"fesm2020": "fesm2020/muxima-ui-stepper.mjs",
|
|
40
|
+
"fesm2015": "fesm2015/muxima-ui-stepper.mjs",
|
|
41
|
+
"typings": "index.d.ts",
|
|
42
|
+
"exports": {
|
|
43
|
+
"./package.json": {
|
|
44
|
+
"default": "./package.json"
|
|
45
|
+
},
|
|
46
|
+
".": {
|
|
47
|
+
"types": "./index.d.ts",
|
|
48
|
+
"esm2020": "./esm2020/muxima-ui-stepper.mjs",
|
|
49
|
+
"es2020": "./fesm2020/muxima-ui-stepper.mjs",
|
|
50
|
+
"es2015": "./fesm2015/muxima-ui-stepper.mjs",
|
|
51
|
+
"node": "./fesm2015/muxima-ui-stepper.mjs",
|
|
52
|
+
"default": "./fesm2020/muxima-ui-stepper.mjs"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|