{"version":3,"file":"seniorsistemas-angular-components-navigation-button.mjs","sources":["../../projects/angular-components/navigation-button/src/lib/navigation-button/navigation-button.component.ts","../../projects/angular-components/navigation-button/src/lib/navigation-button/navigation-button.component.html","../../projects/angular-components/navigation-button/src/lib/navigation-button/navigation-button.module.ts","../../projects/angular-components/navigation-button/src/seniorsistemas-angular-components-navigation-button.ts"],"sourcesContent":["import {\r\n    Component,\r\n    Input,\r\n    Output,\r\n    EventEmitter,\r\n    forwardRef,\r\n    OnInit,\r\n    AfterViewInit,\r\n    ChangeDetectorRef,\r\n    inject,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { NavigationButtonItem } from './models/navigation-button-item';\r\nimport { NavigationButtonStepChangedInfo } from './models';\r\nimport { TieredMenuItemData, TieredMenuDirective } from '@seniorsistemas/angular-components/tiered-menu';\r\nimport { NgClass } from '@angular/common';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Componente de navegação por etapas que exibe o estado atual (step)\r\n * com suporte a avanço, retrocesso e seleção direta via dropdown (`TieredMenu`).\r\n * Implementa `ControlValueAccessor` para integração com formulários Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <s-navigation-button\r\n *   [steps]=\"etapas\"\r\n *   (stepChanged)=\"onEtapaMudou($event)\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n    selector: 's-navigation-button',\r\n    templateUrl: './navigation-button.component.html',\r\n    styleUrls: ['./navigation-button.component.scss'],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NavigationButtonComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n    standalone: true,\r\n    imports: [NgClass, TieredMenuDirective, TooltipDirective],\r\n})\r\nexport class NavigationButtonComponent implements ControlValueAccessor, OnInit, AfterViewInit {\r\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n    /** @description Lista de etapas de navegação. Campo obrigatório. */\r\n    @Input({ required: true })\r\n    public steps!: NavigationButtonItem[];\r\n\r\n    /** @description Valor padrão a ser selecionado ao inicializar o componente. */\r\n    @Input()\r\n    public defaultValue: unknown;\r\n\r\n    /** @description Texto exibido no tooltip do botão principal. */\r\n    @Input()\r\n    public tooltip?: string;\r\n\r\n    /** @description Quando `true`, emite `stepChanged` durante a inicialização com a etapa atual. @default false */\r\n    @Input()\r\n    public changeOnInit = false;\r\n\r\n    /** @description Emitido quando o usuário navega para uma nova etapa, com informações da etapa anterior e atual. */\r\n    @Output()\r\n    public stepChanged: EventEmitter<NavigationButtonStepChangedInfo> = new EventEmitter();\r\n\r\n    public currentIndex = 0;\r\n    public isDisabled = false;\r\n    public tieredMenuItems: TieredMenuItemData[] = [];\r\n\r\n    private _onChange?: (value: unknown) => void;\r\n    private _onTouched?: () => void;\r\n    private _value: unknown;\r\n\r\n    public ngOnInit(): void {\r\n        this._createTieredMenuItems();\r\n\r\n        if (this.changeOnInit) {\r\n            this.stepChanged.emit({\r\n                previous: null,\r\n                current: this.steps[this.currentIndex],\r\n            });\r\n        }\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        this._setDefaultValue();\r\n    }\r\n\r\n    private _setDefaultValue(): void {\r\n        if (this.defaultValue) {\r\n            this._value = this.defaultValue;\r\n\r\n            const index = this.steps.findIndex((step) => step.value === this._value);\r\n            this.currentIndex = index !== -1 ? index : 0;\r\n            this.stepChanged.emit({\r\n                previous: null,\r\n                current: this.steps[this.currentIndex],\r\n            });\r\n\r\n            this.changeDetectorRef.detectChanges();\r\n        }\r\n    }\r\n\r\n    public writeValue(value: unknown): void {\r\n        this._value = value;\r\n\r\n        const index = this.steps.findIndex((step) => step.value === this._value);\r\n        this.currentIndex = index !== -1 ? index : 0;\r\n    }\r\n\r\n    public registerOnChange(onChange: (value: unknown) => void): void {\r\n        this._onChange = onChange;\r\n    }\r\n\r\n    public registerOnTouched(onTouched: () => void): void {\r\n        this._onTouched = onTouched;\r\n    }\r\n\r\n    public setDisabledState?(isDisabled: boolean): void {\r\n        this.isDisabled = isDisabled;\r\n    }\r\n\r\n    public onNext(): void {\r\n        if (this.isDisabled) return;\r\n\r\n        const previous = this.steps[this.currentIndex];\r\n\r\n        if (this.currentIndex < this.steps.length - 1) {\r\n            this.currentIndex++;\r\n\r\n            const current = this.steps[this.currentIndex];\r\n\r\n            this._onChange && this._onChange(current.value);\r\n            this.stepChanged.emit({ previous, current });\r\n        }\r\n\r\n        this._onTouched && this._onTouched();\r\n    }\r\n\r\n    public onPrevious(): void {\r\n        if (this.isDisabled) return;\r\n\r\n        const previous = this.steps[this.currentIndex];\r\n\r\n        if (this.currentIndex > 0) {\r\n            this.currentIndex--;\r\n\r\n            const current = this.steps[this.currentIndex];\r\n\r\n            this._onChange && this._onChange(current.value);\r\n            this.stepChanged.emit({ previous, current });\r\n        }\r\n\r\n        this._onTouched && this._onTouched();\r\n    }\r\n\r\n    private _createTieredMenuItems() {\r\n        this.steps.forEach((step: NavigationButtonItem) => {\r\n            this.tieredMenuItems.push({\r\n                label: step.label,\r\n                command: () => {\r\n                    const index = this.steps.findIndex((s) => s === step);\r\n                    if (this.currentIndex !== index) {\r\n                        this._onChange && this._onChange(step.value);\r\n                        this.stepChanged.emit({\r\n                            previous: this.steps[this.currentIndex],\r\n                            current: step,\r\n                        });\r\n                        this.currentIndex = index;\r\n                    }\r\n\r\n                    this._onTouched && this._onTouched();\r\n                },\r\n            });\r\n        });\r\n    }\r\n}\r\n","<div\n    class=\"navigation-button\"\n    [ngClass]=\"{ 'navigation-button--disabled': isDisabled }\"\n>\n    <button\n        class=\"option option--previous\"\n        [ngClass]=\"{ 'option--disabled': currentIndex === 0 }\"\n        (click)=\"onPrevious()\"\n    >\n        <i class=\"fas fa-chevron-left\"></i>\n    </button>\n\n    @if (steps[currentIndex].tooltip || tooltip) {\n        <button\n            [sTooltip]=\"steps[currentIndex].tooltip || tooltip\"\n            class=\"step\"\n            sTieredMenu\n            [items]=\"tieredMenuItems\"\n            [focusedItem]=\"tieredMenuItems[currentIndex]\"\n        >\n            {{ steps[currentIndex].label }}\n        </button>\n    } @else {\n        <button class=\"step\">\n            {{ steps[currentIndex].label }}\n        </button>\n    }\n    <button\n        class=\"option option--next\"\n        [ngClass]=\"{ 'option--disabled': currentIndex === steps.length - 1 }\"\n        (click)=\"onNext()\"\n    >\n        <i class=\"fas fa-chevron-right\"></i>\n    </button>\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { NavigationButtonComponent } from './navigation-button.component';\r\n\r\n@NgModule({\r\n    imports: [NavigationButtonComponent],\r\n    exports: [NavigationButtonComponent],\r\n})\r\nexport class NavigationButtonModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAmBA;;;;;;;;;;;;;AAaG;MAeU,yBAAyB,CAAA;AACjB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;;AAIxD,IAAA,KAAK,CAA0B;;AAI/B,IAAA,YAAY,CAAU;;AAItB,IAAA,OAAO,CAAU;;IAIjB,YAAY,GAAG,KAAK,CAAC;;AAIrB,IAAA,WAAW,GAAkD,IAAI,YAAY,EAAE,CAAC;IAEhF,YAAY,GAAG,CAAC,CAAC;IACjB,UAAU,GAAG,KAAK,CAAC;IACnB,eAAe,GAAyB,EAAE,CAAC;AAE1C,IAAA,SAAS,CAA4B;AACrC,IAAA,UAAU,CAAc;AACxB,IAAA,MAAM,CAAU;IAEjB,QAAQ,GAAA;QACX,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,gBAAA,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;AACzC,aAAA,CAAC,CAAC;SACN;KACJ;IAEM,eAAe,GAAA;QAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;YAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,gBAAA,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;AACzC,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;SAC1C;KACJ;AAEM,IAAA,UAAU,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;KAChD;AAEM,IAAA,gBAAgB,CAAC,QAAkC,EAAA;AACtD,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC7B;AAEM,IAAA,iBAAiB,CAAC,SAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC/B;AAEM,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAChC;IAEM,MAAM,GAAA;QACT,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE/C,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE9C,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;SAChD;AAED,QAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;KACxC;IAEM,UAAU,GAAA;QACb,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE/C,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE9C,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;SAChD;AAED,QAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;KACxC;IAEO,sBAAsB,GAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAA0B,KAAI;AAC9C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,MAAK;AACV,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;AACtD,oBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;wBAC7B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;4BAClB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;AACvC,4BAAA,OAAO,EAAE,IAAI;AAChB,yBAAA,CAAC,CAAC;AACH,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;qBAC7B;AAED,oBAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;iBACxC;AACJ,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;wGArIQ,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAVvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3CL,siCAmCA,EDUc,MAAA,EAAA,CAAA,iwBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,4KAAE,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE/C,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAGpB,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;qBACJ,EACW,UAAA,EAAA,IAAI,WACP,CAAC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,siCAAA,EAAA,MAAA,EAAA,CAAA,iwBAAA,CAAA,EAAA,CAAA;8BAOlD,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAKlB,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAKC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAKC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAKC,WAAW,EAAA,CAAA;sBADjB,MAAM;;;ME5DE,sBAAsB,CAAA;wGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAtB,sBAAsB,EAAA,OAAA,EAAA,CAHrB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;yGAE1B,sBAAsB,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACvC,iBAAA,CAAA;;;ACND;;AAEG;;;;"}