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