{"version":3,"file":"seniorsistemas-angular-components-accordion.mjs","sources":["../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.ts","../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.ts","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.module.ts","../../projects/angular-components/accordion/src/seniorsistemas-angular-components-accordion.ts"],"sourcesContent":["import { AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { trigger, style, animate, transition, state } from '@angular/animations';\n\nimport { UntypedFormControl } from '@angular/forms';\nimport { AccordionButtonSettings, ValidationMessageIconColor } from '../../models/accordion-button-settings';\n\n/**\n * @description Painel individual do {@link AccordionComponent}. Gerencia o estado de\n * abertura/fechamento com animação, podendo conter um switch de controle via `switchControl`,\n * botões de ação configuráveis e uma mensagem de validação com ícone.\n *\n * @example\n * ```html\n * <s-accordion-panel\n *   header=\"Configurações\"\n *   [disabled]=\"false\"\n *   (panelOpened)=\"onOpen()\"\n *   (panelClosed)=\"onClose()\">\n *   <p>Conteúdo do painel</p>\n * </s-accordion-panel>\n * ```\n *\n * @category Inputs\n */\n@Component({\n    selector: 's-accordion-panel',\n    templateUrl: './accordion-panel.component.html',\n    styleUrls: ['./accordion-panel.component.scss'],\n    animations: [\n        trigger('cachelessAnimation', [\n            transition(':enter', [style({ height: '0' }), animate('200ms linear', style({ height: '*' }))]),\n            transition(':leave', [style({ height: '*' }), animate('200ms linear', style({ height: '0' }))]),\n        ]),\n        trigger('cacheAnimation', [\n            state('true', style({ height: '*' })),\n            state('false', style({ height: '0px' })),\n            transition('* => *', animate('200ms')),\n        ]),\n    ],\n})\nexport class AccordionPanelComponent implements OnChanges, AfterViewInit {\n    /**\n     * @description Título exibido no cabeçalho do painel. Campo obrigatório.\n     */\n    @Input({ required: true })\n    public header!: string;\n\n    /**\n     * @description Lista de botões de ação exibidos no cabeçalho do painel,\n     * à direita do título. Cada item define ícone, tooltip e callback de clique.\n     */\n    @Input()\n    public buttons?: AccordionButtonSettings[];\n\n    /**\n     * @description Desabilita a interação do usuário com o painel, impedindo abertura e fechamento.\n     *\n     * @default false\n     */\n    @Input()\n    public disabled = false;\n\n    /**\n     * @description `FormControl` vinculado a um switch exibido no cabeçalho do painel.\n     * Permite habilitar/desabilitar o conteúdo do painel via toggle.\n     */\n    @Input()\n    public switchControl?: UntypedFormControl;\n\n    /**\n     * @description Mensagem de validação exibida abaixo do cabeçalho, acompanhada de um ícone.\n     * Útil para indicar erros ou alertas relacionados ao conteúdo do painel.\n     */\n    @Input()\n    public validationMessage?: string;\n\n    /**\n     * @description Mantém o conteúdo do painel no DOM mesmo quando fechado (modo cache).\n     * Útil para preservar o estado de componentes internos ao reabrir o painel.\n     *\n     * @default false\n     */\n    @Input()\n    public cache = false;\n\n    /**\n     * @description Classe do ícone exibido ao lado da mensagem de validação.\n     *\n     * @default 'fas fa-exclamation-circle'\n     */\n    @Input() validationMessageIcon = 'fas fa-exclamation-circle';\n\n    /**\n     * @description Cor do ícone da mensagem de validação.\n     *\n     * @default 'Red'\n     */\n    @Input() validationMessageIconColor: ValidationMessageIconColor = 'Red';\n\n    /**\n     * @description Emitido quando o painel é aberto pelo usuário.\n     */\n    @Output()\n    public panelOpened = new EventEmitter<void>();\n\n    /**\n     * @description Emitido quando o painel é fechado pelo usuário.\n     */\n    @Output()\n    public panelClosed = new EventEmitter<void>();\n\n    public isAnimating = false;\n    public isContentAnimationDisabled = true;\n\n    private _isOpen = false;\n\n    public get isOpen() {\n        return this._isOpen;\n    }\n\n    public set isOpen(isOpen: boolean) {\n        this._isOpen = isOpen;\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if ('disabled' in changes && this.switchControl) {\n            if (changes['disabled'].currentValue) {\n                this.switchControl.disable({ emitEvent: false });\n            } else {\n                this.switchControl.enable({ emitEvent: false });\n            }\n        }\n\n        if ('switch' in changes && 'switchControl' in changes) {\n            throw new Error(\"You can't set switch and switchControl together.\");\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        // to executed at a safe time prior to control returning to the browser's event loop\n        queueMicrotask(() => {\n            this.isContentAnimationDisabled = false;\n        });\n    }\n\n    public onIconButtonsClick(event: Event, callback: VoidFunction) {\n        if (this.disabled) {\n            return;\n        }\n\n        event.stopPropagation();\n        callback();\n    }\n\n    public onTabClick() {\n        if (this.disabled || this.isAnimating) {\n            return;\n        }\n        this.isOpen = !this.isOpen;\n        this._emitPanelEvent();\n    }\n\n    public onContentAnimationStart() {\n        this.isAnimating = true;\n    }\n\n    public onContentAnimationDone() {\n        this.isAnimating = false;\n\n        this._emitPanelEvent();\n    }\n\n    private _emitPanelEvent() {\n        if (this.isOpen) {\n            this.panelOpened.emit();\n        } else {\n            this.panelClosed.emit();\n        }\n    }\n}\n\n","<div\n    class=\"accordion-panel\"\n    [class.accordion-panel--open]=\"isOpen\"\n    [class.accordion-panel--disabled]=\"disabled\"\n>\n    <div\n        class=\"header\"\n        (click)=\"onTabClick()\"\n    >\n        <div class=\"header__title\">\n            <span\n                class=\"icon fas\"\n                [class.fa-minus]=\"isOpen\"\n                [class.fa-plus]=\"!isOpen\"\n            >\n            </span>\n            @if (validationMessage) {\n                <span\n                    class=\"exclamation-icon\"\n                    [class]=\"validationMessageIcon\"\n                    [sTooltip]=\"validationMessage\"\n                    [class.exclamation-icon-red]=\"validationMessageIconColor === 'Red'\"\n                    [class.exclamation-icon-orange]=\"validationMessageIconColor === 'Orange'\"\n                    [class.exclamation-icon-yellow]=\"validationMessageIconColor === 'Yellow'\"\n                    [class.exclamation-icon-green]=\"validationMessageIconColor === 'Green'\"\n                    [class.exclamation-icon-blue]=\"validationMessageIconColor === 'Blue'\"\n                >\n                </span>\n            }\n            <span class=\"title\">{{ header }}</span>\n        </div>\n        <div class=\"header__controls\">\n            @for (button of buttons; track button.icon) {\n                <button\n                    class=\"icon-button\"\n                    [ngClass]=\"button.icon\"\n                    (click)=\"onIconButtonsClick($event, button.onClick)\"\n                ></button>\n            }\n\n            @if (switchControl) {\n                <s-switch\n                    class=\"switch\"\n                    [formControl]=\"switchControl\"\n                    (click)=\"$event.stopPropagation()\"\n                >\n                </s-switch>\n            }\n        </div>\n    </div>\n\n    @if (cache) {\n        <div\n            class=\"content\"\n            [@cacheAnimation]=\"isOpen\"\n            [@.disabled]=\"isContentAnimationDisabled\"\n            (@cacheAnimation.start)=\"onContentAnimationStart()\"\n            (@cacheAnimation.done)=\"onContentAnimationDone()\"\n        >\n            <div class=\"content-container\">\n                <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n            </div>\n        </div>\n    } @else {\n        @if (isOpen) {\n            <div\n                class=\"content\"\n                @cachelessAnimation\n                [@.disabled]=\"isContentAnimationDisabled\"\n                (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n                (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n            >\n                <div class=\"content-container\">\n                    <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n                </div>\n            </div>\n        }\n    }\n</div>\n\n<ng-template #panelContent>\n    <ng-content></ng-content>\n</ng-template>\n","import {\n    AfterContentInit,\n    OnChanges,\n    Component,\n    ContentChildren,\n    Input,\n    QueryList,\n    SimpleChanges,\n    OnDestroy,\n} from '@angular/core';\n\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * @description Componente de acordeão que gerencia a abertura e o fechamento de painéis\n * {@link AccordionPanelComponent}. Suporta modo de painel único (apenas um aberto por vez)\n * ou modo múltiplo (vários painéis abertos simultaneamente), configurável via input `multiple`.\n *\n * @example\n * ```html\n * <s-accordion [multiple]=\"false\" [activeIndex]=\"0\">\n *   <s-accordion-panel header=\"Seção 1\">Conteúdo 1</s-accordion-panel>\n *   <s-accordion-panel header=\"Seção 2\">Conteúdo 2</s-accordion-panel>\n * </s-accordion>\n * ```\n *\n * @category Inputs\n */\n@Component({\n    selector: 's-accordion',\n    templateUrl: './accordion.component.html',\n    styleUrls: ['./accordion.component.scss'],\n})\nexport class AccordionComponent implements AfterContentInit, OnChanges, OnDestroy {\n    /**\n     * @description Índice (ou lista de índices) do(s) painel(is) que devem iniciar abertos.\n     * Aceita um número para painel único ou um array de números para o modo múltiplo.\n     */\n    @Input()\n    public activeIndex?: number | number[];\n\n    /**\n     * @description Permite que múltiplos painéis estejam abertos ao mesmo tempo.\n     * Quando `false`, abrir um painel fecha automaticamente o anterior.\n     *\n     * @default false\n     */\n    @Input()\n    public multiple = false;\n\n    @ContentChildren(AccordionPanelComponent)\n    public panelsComponents?: QueryList<AccordionPanelComponent>;\n\n    private readonly _unsubscribe$ = new Subject<void>();\n    private _panels: AccordionPanelComponent[] = [];\n    private _openSubs: Subscription[] = [];\n\n    public ngAfterContentInit(): void {\n        if (this.panelsComponents) {\n            this._panels = this.panelsComponents?.toArray();\n        }\n\n        this._openSubs = Array.from({ length: this._panels.length });\n\n        this._setBehavior(this.multiple);\n        this._setupTabs();\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes['multiple']) {\n            this._setBehavior(changes['multiple'].currentValue);\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this._unsubscribe$.next();\n        this._unsubscribe$.complete();\n    }\n\n    private _setupTabs(): void {\n        if (this._panels?.length) {\n            if (this.activeIndex !== undefined && this.activeIndex !== null) {\n                const activeTabs = Array.isArray(this.activeIndex)\n                    ? this._panels.filter((_, index) => (this.activeIndex as number[]).includes(index))\n                    : [this._panels[this.activeIndex]];\n\n                if (activeTabs.length === 0) {\n                    throw new Error('activeIndex does not represent any panel.');\n                }\n\n                for (const activeTab of activeTabs) {\n                    if (!activeTab.disabled) {\n                        activeTab.isOpen = true;\n                    }\n                }\n            }\n        }\n    }\n\n    private _closeOtherTabs(exception: number) {\n        this._panels.forEach((panel, index) => {\n            if (index !== exception) {\n                panel.isOpen = false;\n            }\n        });\n    }\n\n    private _setBehavior(multiple: boolean): void {\n        if (multiple) {\n            this._enableMultiplePanelBehavior();\n        } else {\n            this._enableSinglePanelBehavior();\n        }\n    }\n\n    private _enableSinglePanelBehavior() {\n        this._panels.forEach((panel, index) => {\n            this._openSubs[index] = panel.panelOpened.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\n                this._closeOtherTabs(index);\n            });\n        });\n    }\n\n    private _enableMultiplePanelBehavior() {\n        this._panels.forEach((_, index) => {\n            if (this._openSubs[index]) {\n                this._openSubs[index].unsubscribe();\n            }\n        });\n    }\n}\n\n","<div class=\"accordion\">\n    <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AccordionComponent } from './accordion.component';\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { SwitchModule } from '@seniorsistemas/angular-components/switch';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        TooltipModule,\n        SwitchModule,\n    ],\n    declarations: [AccordionComponent, AccordionPanelComponent],\n    exports: [AccordionComponent, AccordionPanelComponent],\n})\nexport class AccordionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}