{"version":3,"file":"seniorsistemas-angular-components-stepper.mjs","sources":["../../projects/angular-components/stepper/src/lib/stepper/models/step-state.ts","../../projects/angular-components/stepper/src/lib/stepper/stepper.component.ts","../../projects/angular-components/stepper/src/lib/stepper/stepper.component.html","../../projects/angular-components/stepper/src/lib/stepper/stepper.module.ts","../../projects/angular-components/stepper/src/seniorsistemas-angular-components-stepper.ts"],"sourcesContent":["export enum StepState {\n    Default = 'default',\n    Success = 'success',\n    Warning = 'warning',\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { DEPRECATED_CONFIG } from '@seniorsistemas/angular-components/common/deprecated-selector';\r\nimport { DeprecatedSelectorDirective } from '@seniorsistemas/angular-components/common/deprecated-selector';\r\n\r\nimport { Step } from './models/step';\r\nimport { StepSelectionEvent } from './models/step-selection-event';\r\nimport { StepState } from './models/step-state';\r\nimport { NgClass } from '@angular/common';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Componente de progresso em etapas (stepper) com animações.\r\n * Exibe uma linha do tempo horizontal de passos, permitindo navegar entre eles.\r\n * Suporta passos ocultos e desabilitados. Também responde ao seletor legado `s-steps`.\r\n *\r\n * @example\r\n * ```html\r\n * <s-stepper\r\n *   [steps]=\"etapas\"\r\n *   [activeIndex]=\"etapaAtiva\"\r\n *   (stepSelected)=\"onEtapaSelecionada($event)\" />\r\n * ```\r\n *\r\n * @category Structure\r\n */\r\n@Component({\r\n    selector: 's-stepper, s-steps',\r\n    templateUrl: './stepper.component.html',\r\n    styleUrls: ['./stepper.component.scss'],\r\n    hostDirectives: [DeprecatedSelectorDirective],\r\n    providers: [\r\n        {\r\n            provide: DEPRECATED_CONFIG,\r\n            useValue: {\r\n                oldSelector: 's-steps',\r\n                newSelector: 's-stepper',\r\n                removalVersion: '20.0.0',\r\n            },\r\n        },\r\n    ],\r\n    host: {\r\n        'aria-orientation': 'horizontal',\r\n        role: 'tablist',\r\n        'tab-index': '0',\r\n    },\r\n    animations: [\r\n        trigger('beforeActiveDesative', [\r\n            state(\r\n                'active',\r\n                style({\r\n                    'background-position': 'left bottom',\r\n                }),\r\n            ),\r\n            state(\r\n                'desactive',\r\n                style({\r\n                    'background-position': 'right bottom',\r\n                }),\r\n            ),\r\n            transition('active => desactive', [animate('50ms 100ms linear')]),\r\n            transition('desactive => active', [animate('50ms 250ms linear')]),\r\n        ]),\r\n        trigger('activeDesative', [\r\n            state(\r\n                'active',\r\n                style({\r\n                    'background-position': 'left bottom',\r\n                }),\r\n            ),\r\n            state(\r\n                'desactive',\r\n                style({\r\n                    'background-position': 'right bottom',\r\n                }),\r\n            ),\r\n            transition('active => desactive', [animate('100ms 150ms linear')]),\r\n            transition('desactive => active', [animate('100ms 150ms linear')]),\r\n        ]),\r\n        trigger('afterActiveDesative', [\r\n            state(\r\n                'active',\r\n                style({\r\n                    'background-position': 'left bottom',\r\n                }),\r\n            ),\r\n            state(\r\n                'desactive',\r\n                style({\r\n                    'background-position': 'right bottom',\r\n                }),\r\n            ),\r\n            transition('active => desactive', [animate('50ms 250ms linear')]),\r\n            transition('desactive => active', [animate('50ms 100ms linear')]),\r\n        ]),\r\n    ],\r\n    standalone: true,\r\n    imports: [NgClass, TooltipDirective],\r\n})\r\nexport class StepperComponent {\r\n    public static nextId = 0;\r\n\r\n    /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */\r\n    @Input()\r\n    public id = `s-steps-${StepperComponent.nextId++}`;\r\n\r\n    /** @description Lista de etapas exibidas no stepper. Campo obrigatório. */\r\n    @Input({ required: true })\r\n    public steps!: Step[];\r\n\r\n    /** @description Índice (0-based) da etapa atualmente ativa. Campo obrigatório. */\r\n    @Input({ required: true })\r\n    public activeIndex = 0;\r\n\r\n    /** @description Emitido quando o usuário clica em uma etapa não desabilitada. */\r\n    @Output()\r\n    public stepSelected: EventEmitter<StepSelectionEvent> = new EventEmitter();\r\n\r\n    public get stepState() {\r\n        return StepState;\r\n    }\r\n\r\n    public get visibledStep() {\r\n        return this.steps.filter((step: Step) => !step.hidden);\r\n    }\r\n\r\n    public stepClick(step: Step, index: number, event: any) {\r\n        if (step.disabled || index === this.activeIndex) return;\r\n        this.stepSelected.emit({ step, index, event });\r\n    }\r\n\r\n    public barAnimation(index: number, activeIndex: number): boolean {\r\n        const visited = index < activeIndex;\r\n        const activated = index === activeIndex;\r\n        return visited || activated;\r\n    }\r\n\r\n    public afterBarAnimation(index: number, activeIndex: number): boolean {\r\n        const visited = index < activeIndex;\r\n        const activated = index === activeIndex - 1;\r\n        return visited || activated;\r\n    }\r\n}\r\n","<div\r\n    [id]=\"id\"\r\n    class=\"s-stepper-container\"\r\n>\r\n    @for (step of visibledStep; track step; let i = $index; let isFirst = $first; let isLast = $last) {\r\n        @if (!isFirst) {\r\n            <div\r\n                class=\"s-step-progress-bar\"\r\n                [@activeDesative]=\"barAnimation(i, activeIndex) ? 'active' : 'desactive'\"\r\n                [ngClass]=\"{\r\n                    's-step-success': step.state === stepState.Success,\r\n                    's-step-warning': step.state === stepState.Warning,\r\n                    's-step-disabled': step.disabled,\r\n                    's-step-visited': i < activeIndex,\r\n                    's-step-active': i === activeIndex,\r\n                }\"\r\n            ></div>\r\n        }\r\n        <div\r\n            [id]=\"id + '-step-' + (step.id || i)\"\r\n            class=\"s-step-header\"\r\n            (click)=\"stepClick(step, i, $event)\"\r\n            role=\"tab\"\r\n            tabindex=\"0\"\r\n            [attr.aria-label]=\"step.ariaLabel || null\"\r\n            [attr.aria-controls]=\"step.ariaControls\"\r\n            [attr.aria-labelledby]=\"!step.ariaLabel ? 'step-label-' + i : null\"\r\n            [attr.aria-posinset]=\"i + 1\"\r\n            [attr.aria-setsize]=\"visibledStep.length\"\r\n            [attr.aria-selected]=\"activeIndex === i\"\r\n            [ngClass]=\"{\r\n                's-step-success': step.state === stepState.Success,\r\n                's-step-warning': step.state === stepState.Warning,\r\n                's-step-visited': i < activeIndex,\r\n                's-step-active': i === activeIndex,\r\n                's-step-previous': i === activeIndex - 1,\r\n            }\"\r\n        >\r\n            @if (!isFirst) {\r\n                <div\r\n                    [@beforeActiveDesative]=\"barAnimation(i, activeIndex) ? 'active' : 'desactive'\"\r\n                    class=\"s-step-progress-bar-before\"\r\n                    [ngClass]=\"{\r\n                        's-step-success': step.state === stepState.Success,\r\n                        's-step-warning': step.state === stepState.Warning,\r\n                        's-step-disabled': step.disabled,\r\n                        's-step-visited': i < activeIndex,\r\n                        's-step-active': i === activeIndex,\r\n                    }\"\r\n                ></div>\r\n            }\r\n            @if (!isLast) {\r\n                <div\r\n                    [@afterActiveDesative]=\"afterBarAnimation(i, activeIndex) ? 'active' : 'desactive'\"\r\n                    class=\"s-step-progress-bar-after\"\r\n                    [ngClass]=\"{\r\n                        's-step-success': step.state === stepState.Success,\r\n                        's-step-warning': step.state === stepState.Warning,\r\n                        's-step-disabled': visibledStep[i + 1].disabled,\r\n                        's-step-visited': i + 1 < activeIndex,\r\n                        's-step-active': i === activeIndex - 1,\r\n                    }\"\r\n                ></div>\r\n            }\r\n            <div\r\n                class=\"s-step-index\"\r\n                [ngClass]=\"{ 's-step-disabled': step.disabled }\"\r\n                [sTooltip]=\"step.tooltip\"\r\n            >\r\n                <div class=\"s-step-index-content\">\r\n                    @if (step.state !== stepState.Warning && (step.state === stepState.Success || activeIndex > i)) {\r\n                        <span\r\n                            class=\"fas fa-check\"\r\n                            aria-hidden=\"true\"\r\n                            [attr.aria-label]=\"i + 1\"\r\n                        >\r\n                        </span>\r\n                    }\r\n                    @if (step.state === stepState.Warning) {\r\n                        <span\r\n                            class=\"fas fa-exclamation-triangle\"\r\n                            aria-hidden=\"true\"\r\n                            [attr.aria-label]=\"i + 1\"\r\n                        >\r\n                        </span>\r\n                    }\r\n                    @if (step.state !== stepState.Success && step.state !== stepState.Warning && activeIndex <= i) {\r\n                        <span>{{ i + 1 }}</span>\r\n                    }\r\n                </div>\r\n            </div>\r\n            <div\r\n                [id]=\"'step-label-' + i\"\r\n                class=\"s-step-label\"\r\n                [ngClass]=\"{ 's-step-disabled': step.disabled }\"\r\n            >\r\n                <span>\r\n                    {{ step.label }}\r\n                </span>\r\n            </div>\r\n        </div>\r\n    }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { StepperComponent } from './stepper.component';\r\n\r\n@NgModule({\r\n    imports: [StepperComponent],\r\n    exports: [StepperComponent],\r\n})\r\nexport class StepperModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}