{"version":3,"file":"seniorsistemas-angular-components-collapse-link.mjs","sources":["../../projects/angular-components/collapse-link/src/lib/collapse-link/collapse-link.component.ts","../../projects/angular-components/collapse-link/src/lib/collapse-link/collapse-link.component.html","../../projects/angular-components/collapse-link/src/lib/collapse-link/collapse-link.module.ts","../../projects/angular-components/collapse-link/src/seniorsistemas-angular-components-collapse-link.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n/**\n * @description Componente de link expansor que mostra/oculta conteúdo transclusão\n * com animação de colapso. Exibe rótulos diferentes para os estados expandido e colapsado.\n *\n * @example\n * ```html\n * <s-collapse-link expandedLabel=\"Ver menos\" collapsedLabel=\"Ver mais\">\n *   <p>Conteúdo oculto</p>\n * </s-collapse-link>\n * ```\n *\n * @category Structure\n */\n@Component({\n    selector: 's-collapse-link',\n    templateUrl: './collapse-link.component.html',\n    styleUrls: ['./collapse-link.component.scss'],\n    animations: [\n        trigger('collapseContent', [\n            state(\n                'void',\n                style({\n                    height: 0,\n                    opacity: 0,\n                }),\n            ),\n            state(\n                '*',\n                style({\n                    height: '*',\n                    opacity: 1,\n                }),\n            ),\n            transition('void <=> *', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\n        ]),\n    ],\n})\nexport class CollapseLinkComponent implements OnChanges {\n    public static readonly nextIdSeed = 0;\n    private static _nextId = CollapseLinkComponent.nextIdSeed;\n\n    public static getNextId(): number {\n        return this._nextId++;\n    }\n\n    /** @description Identificador do botão de toggle. Gerado automaticamente se não informado. */\n    @Input()\n    public buttonId = `s-collapse-button-${CollapseLinkComponent.getNextId()}`;\n\n    /** @description Rótulo exibido quando o conteúdo está expandido. @default 'Mostrar menos' */\n    @Input()\n    public expandedLabel = 'Mostrar menos';\n\n    /** @description Rótulo exibido quando o conteúdo está colapsado. @default 'Mostrar mais' */\n    @Input()\n    public collapsedLabel = 'Mostrar mais';\n\n    /** @description Desabilita o botão de toggle. @default false */\n    @Input()\n    public disabled = false;\n\n    /** @description Controla externamente o estado colapsado do componente. @default true */\n    @Input()\n    public collapse = true;\n\n    public collapsed = true;\n    public animating = false;\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['collapse']) {\n            this.onCollapse(changes['collapse'].currentValue);\n        }\n    }\n\n    public toggle() {\n        if (this.animating) {\n            return;\n        }\n\n        this.animating = true;\n        this.collapsed = !this.collapsed;\n    }\n\n    public onToggleDone() {\n        this.animating = false;\n    }\n\n    public onCollapse(collapse: boolean) {\n        if (this.animating) {\n            return;\n        }\n\n        this.animating = true;\n        this.collapsed = collapse;\n    }\n}\n\n","@if (!collapsed) {\n    <div\n        @collapseContent\n        (@collapseContent.done)=\"onToggleDone()\"\n    >\n        <ng-content></ng-content>\n    </div>\n}\n\n<button\n    [id]=\"buttonId\"\n    type=\"button\"\n    class=\"s-collapse-button\"\n    (click)=\"toggle()\"\n    [disabled]=\"disabled\"\n>\n    <span\n        class=\"s-button-icon fa\"\n        [ngClass]=\"{ 'fa-caret-down': collapsed, 'fa-caret-up': !collapsed }\"\n        aria-hidden=\"true\"\n    >\n    </span>\n    <span class=\"s-button-text\">{{\n        collapsed ? collapsedLabel : expandedLabel\n    }}</span>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CollapseLinkComponent } from './collapse-link.component';\n\n@NgModule({\n    declarations: [CollapseLinkComponent],\n    exports: [CollapseLinkComponent],\n    imports: [CommonModule],\n})\nexport class CollapseLinkModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}