{"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';\r\nimport { NgClass } from '@angular/common';\r\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n/**\r\n * @description Componente de link expansor que mostra/oculta conteúdo transclusão\r\n * com animação de colapso. Exibe rótulos diferentes para os estados expandido e colapsado.\r\n *\r\n * @example\r\n * ```html\r\n * <s-collapse-link expandedLabel=\"Ver menos\" collapsedLabel=\"Ver mais\">\r\n *   <p>Conteúdo oculto</p>\r\n * </s-collapse-link>\r\n * ```\r\n *\r\n * @category Structure\r\n */\r\n@Component({\r\n    selector: 's-collapse-link',\r\n    templateUrl: './collapse-link.component.html',\r\n    animations: [\r\n        trigger('collapseContent', [\r\n            state(\r\n                'void',\r\n                style({\r\n                    height: 0,\r\n                    opacity: 0,\r\n                }),\r\n            ),\r\n            state(\r\n                '*',\r\n                style({\r\n                    height: '*',\r\n                    opacity: 1,\r\n                }),\r\n            ),\r\n            transition('void <=> *', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\r\n        ]),\r\n    ],\r\n    standalone: true,\r\n    imports: [NgClass],\r\n})\r\nexport class CollapseLinkComponent implements OnChanges {\r\n    public static readonly nextIdSeed = 0;\r\n    private static _nextId = CollapseLinkComponent.nextIdSeed;\r\n\r\n    public static getNextId(): number {\r\n        return this._nextId++;\r\n    }\r\n\r\n    /** @description Identificador do botão de toggle. Gerado automaticamente se não informado. */\r\n    @Input()\r\n    public buttonId = `s-collapse-button-${CollapseLinkComponent.getNextId()}`;\r\n\r\n    /** @description Rótulo exibido quando o conteúdo está expandido. @default 'Mostrar menos' */\r\n    @Input()\r\n    public expandedLabel = 'Mostrar menos';\r\n\r\n    /** @description Rótulo exibido quando o conteúdo está colapsado. @default 'Mostrar mais' */\r\n    @Input()\r\n    public collapsedLabel = 'Mostrar mais';\r\n\r\n    /** @description Desabilita o botão de toggle. @default false */\r\n    @Input()\r\n    public disabled = false;\r\n\r\n    /** @description Controla externamente o estado colapsado do componente. @default true */\r\n    @Input()\r\n    public collapse = true;\r\n\r\n    public collapsed = true;\r\n    public animating = false;\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes['collapse']) {\r\n            this.onCollapse(changes['collapse'].currentValue);\r\n        }\r\n    }\r\n\r\n    public toggle() {\r\n        if (this.animating) {\r\n            return;\r\n        }\r\n\r\n        this.animating = true;\r\n        this.collapsed = !this.collapsed;\r\n    }\r\n\r\n    public onToggleDone() {\r\n        this.animating = false;\r\n    }\r\n\r\n    public onCollapse(collapse: boolean) {\r\n        if (this.animating) {\r\n            return;\r\n        }\r\n\r\n        this.animating = true;\r\n        this.collapsed = collapse;\r\n    }\r\n}\r\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=\"cursor-pointer font-open-sans text-sm h-[35px] max-w-full min-w-[40px] outline-none overflow-visible py-[5px] px-5 relative no-underline normal-case align-bottom bg-transparent border-0 disabled:cursor-text disabled:opacity-50\"\n    (click)=\"toggle()\"\n    [disabled]=\"disabled\"\n>\n    <span\n        class=\"left-[10px] -mt-[0.5em] absolute top-1/2 w-5 text-primary fa\"\n        [ngClass]=\"{ 'fa-caret-down': collapsed, 'fa-caret-up': !collapsed }\"\n        aria-hidden=\"true\"\n    >\n    </span>\n    <span class=\"overflow-hidden text-ellipsis whitespace-nowrap block mx-[10px] text-primary\">{{\n        collapsed ? collapsedLabel : expandedLabel\n    }}</span>\n</button>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CollapseLinkComponent } from './collapse-link.component';\r\n\r\n@NgModule({\r\n    exports: [CollapseLinkComponent],\r\n    imports: [CollapseLinkComponent],\r\n})\r\nexport class CollapseLinkModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}