{"version":3,"file":"seniorsistemas-angular-components-token-list.mjs","sources":["../../projects/angular-components/token-list/src/lib/token-list/token-list.component.ts","../../projects/angular-components/token-list/src/lib/token-list/token-list.component.html","../../projects/angular-components/token-list/src/lib/token-list/token-list.module.ts","../../projects/angular-components/token-list/src/seniorsistemas-angular-components-token-list.ts"],"sourcesContent":["import {\r\n    AfterViewInit,\r\n    Component,\r\n    DestroyRef,\r\n    EventEmitter,\r\n    inject,\r\n    Input,\r\n    Output,\r\n    QueryList,\r\n    ViewChildren,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { ChipItemComponent } from '@seniorsistemas/angular-components/chips';\r\nimport { restoreFocusAfterRemoval } from '@seniorsistemas/angular-components/shared';\r\nimport { IToken } from './models/token';\r\n\r\n/**\r\n * @description Componente de lista de tokens (etiquetas) clicáveis e opcionalmente\r\n * removíveis. Emite eventos ao selecionar ou remover um token.\r\n *\r\n * @example\r\n * ```html\r\n * <s-token-list\r\n *   [tokens]=\"listaDeTokens\"\r\n *   [removableTokens]=\"true\"\r\n *   (tokenSelected)=\"onTokenSelecionado($event)\"\r\n *   (tokenRemoved)=\"onTokenRemovido($event)\" />\r\n * ```\r\n *\r\n * @category Summary\r\n */\r\n@Component({\r\n    selector: 's-token-list',\r\n    templateUrl: './token-list.component.html',\r\n    standalone: true,\r\n    imports: [ChipItemComponent],\r\n})\r\nexport class TokenListComponent implements AfterViewInit {\r\n    public static nextId = 0;\r\n\r\n    private readonly destroyRef = inject(DestroyRef);\r\n    private pendingFocusIndex: number | null = null;\r\n\r\n    @ViewChildren(ChipItemComponent)\r\n    private readonly chipItems!: QueryList<ChipItemComponent>;\r\n\r\n    /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */\r\n    @Input()\r\n    public id = `s-token-list-${TokenListComponent.nextId++}`;\r\n\r\n    /** @description Lista de tokens exibidos. Campo obrigatório. */\r\n    @Input({ required: true })\r\n    public tokens!: IToken[];\r\n\r\n    /** @description Exibe o botão de remoção em cada token. @default false */\r\n    @Input()\r\n    public removableTokens = false;\r\n\r\n    /** @description Quando `true`, remove os eventos de ponteiro (hover/clique) dos tokens. @default false */\r\n    @Input()\r\n    public hidePointerEvents = false;\r\n\r\n    /** @description Classe do ícone do botão de remover token. @default 'far fa-times' */\r\n    @Input()\r\n    public removeIconClass = 'far fa-times';\r\n\r\n    /** @description Emitido quando o usuário clica em um token não desabilitado. */\r\n    @Output()\r\n    public tokenSelected: EventEmitter<IToken> = new EventEmitter();\r\n\r\n    /** @description Emitido quando o usuário remove um token não desabilitado. */\r\n    @Output()\r\n    public tokenRemoved: EventEmitter<IToken> = new EventEmitter();\r\n\r\n    public ngAfterViewInit(): void {\r\n        this.chipItems.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n            if (this.pendingFocusIndex === null) {\r\n                return;\r\n            }\r\n            const focusIndex = this.pendingFocusIndex;\r\n            this.pendingFocusIndex = null;\r\n            restoreFocusAfterRemoval(this.chipItems.toArray(), focusIndex);\r\n        });\r\n    }\r\n\r\n    public onTokenSelected(token: IToken): void {\r\n        if (!token.disabled) {\r\n            this.tokenSelected.next(token);\r\n        }\r\n    }\r\n\r\n    public onTokenRemoved(token: IToken, index: number): void {\r\n        if (!token.disabled) {\r\n            this.pendingFocusIndex = index;\r\n            this.tokenRemoved.next(token);\r\n        }\r\n    }\r\n}\r\n","<div\n    [id]=\"id\"\n    class=\"token-list inline-flex max-w-full flex-wrap items-center gap-2 px-[10px] py-0 normal-case\"\n>\n    @for (token of tokens; track $index) {\n        <s-chip-item\n            [dataRender]=\"token.label\"\n            [itemIndex]=\"$index\"\n            [disabled]=\"token.disabled ?? false\"\n            [showTooltip]=\"false\"\n            [removeIconClass]=\"removeIconClass\"\n            [hidePointerEvents]=\"hidePointerEvents\"\n            [showRemove]=\"removableTokens && !token.notRemovable\"\n            (clickRemove)=\"onTokenRemoved(token, $index)\"\n            (chipClicked)=\"onTokenSelected(token)\"\n        >\n        </s-chip-item>\n    }\n</div>\n\n","import { NgModule } from '@angular/core';\r\n\r\nimport { TokenListComponent } from './token-list.component';\r\n\r\n/**\r\n * @deprecated Será removido na v20. Importe diretamente o standalone `TokenListComponent` (de\r\n * `@seniorsistemas/angular-components/token-list`) no lugar deste módulo.\r\n *\r\n * Migração automática (também executada pelo `ng update` na v20):\r\n * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`\r\n */\r\n@NgModule({\r\n    imports: [TokenListComponent],\r\n    exports: [TokenListComponent],\r\n})\r\nexport class TokenListModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAiBA;;;;;;;;;;;;;;AAcG;MAOU,kBAAkB,CAAA;AACpB,IAAA,OAAO,MAAM,GAAG,CAAC,CAAC;AAER,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,iBAAiB,GAAkB,IAAI,CAAC;AAG/B,IAAA,SAAS,CAAgC;;AAInD,IAAA,EAAE,GAAG,CAAgB,aAAA,EAAA,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;;AAInD,IAAA,MAAM,CAAY;;IAIlB,eAAe,GAAG,KAAK,CAAC;;IAIxB,iBAAiB,GAAG,KAAK,CAAC;;IAI1B,eAAe,GAAG,cAAc,CAAC;;AAIjC,IAAA,aAAa,GAAyB,IAAI,YAAY,EAAE,CAAC;;AAIzD,IAAA,YAAY,GAAyB,IAAI,YAAY,EAAE,CAAC;IAExD,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5E,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;gBACjC,OAAO;aACV;AACD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC1C,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,eAAe,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClC;KACJ;IAEM,cAAc,CAAC,KAAa,EAAE,KAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;KACJ;wGA3DQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAMb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAiB,EC5CnC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,osBAoBA,4CDgBc,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAElB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEZ,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,osBAAA,EAAA,CAAA;8BASX,SAAS,EAAA,CAAA;sBADzB,YAAY;uBAAC,iBAAiB,CAAA;gBAKxB,EAAE,EAAA,CAAA;sBADR,KAAK;gBAKC,MAAM,EAAA,CAAA;sBADZ,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAKlB,eAAe,EAAA,CAAA;sBADrB,KAAK;gBAKC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAKC,eAAe,EAAA,CAAA;sBADrB,KAAK;gBAKC,aAAa,EAAA,CAAA;sBADnB,MAAM;gBAKA,YAAY,EAAA,CAAA;sBADlB,MAAM;;;AEpEX;;;;;;AAMG;MAKU,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAf,eAAe,EAAA,OAAA,EAAA,CAHd,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAClB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHd,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAGnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAChC,iBAAA,CAAA;;;ACdD;;AAEG;;;;"}