{"version":3,"file":"seniorsistemas-angular-components-chips.mjs","sources":["../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.ts","../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.html","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.ts","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.html","../../projects/angular-components/chips/src/lib/chips/chips.module.ts","../../projects/angular-components/chips/src/seniorsistemas-angular-components-chips.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { CheckDisabled } from '@seniorsistemas/angular-components/shared';\n/**\n * @description Componente interno de item individual de chip, utilizado pelo {@link ChipsComponent}.\n * Responsável pela renderização do texto, tooltip e botão de remoção de cada chip.\n *\n * @category Inputs\n */\n@Component({\n    selector: 's-chip-item',\n    templateUrl: './chip-item.component.html',\n    styleUrls: ['./chip-item.component.scss'],\n})\nexport class ChipItemComponent {\n    /** @description Conteúdo a ser exibido no chip (string ou objeto). Campo obrigatório. */\n    @Input({ required: true }) dataRender!: string | Object;\n    /** @description Chave do objeto usada para exibição quando `dataRender` for um objeto. Campo obrigatório. */\n    @Input({ required: true }) objectField!: string;\n    /** @description Desabilita os eventos de clique do chip. Campo obrigatório. */\n    @Input({ required: true }) disabled = false;\n    /** @description Template personalizado para renderização interna do chip. */\n    @Input() templateRef!: TemplateRef<any> | undefined;\n    /** @description Índice do chip na lista, usado ao emitir o evento de remoção. Campo obrigatório. */\n    @Input({ required: true }) itemIndex = -1;\n    /** @description Habilita o tooltip para chips com texto truncado. Campo obrigatório. */\n    @Input({ required: true }) showTooltip = true;\n    /** @description Limite de caracteres exibidos antes de truncar o texto do chip. Campo obrigatório. */\n    @Input({ required: true }) maxLengthRenderWithoutTooltip = 20;\n\n    /** @description Emitido ao clicar no botão de remoção do chip. */\n    @Output() clickRemove = new EventEmitter<{ itemIndex: number; event: Event }>();\n    /** @description Emitido ao clicar sobre o chip (fora do botão de remoção). */\n    @Output() chipClicked = new EventEmitter<{ event: Event; data: string | Object }>();\n\n    @CheckDisabled()\n    clickedRemove($event: Event) {\n        this.clickRemove.emit({ itemIndex: this.itemIndex, event: $event });\n    }\n    @CheckDisabled()\n    onChipClicked($event: Event) {\n        this.chipClicked.emit({ event: $event, data: this.dataRender });\n    }\n\n    get _text() {\n        const _text = this._rawText;\n        return (\n            _text.substring(\n                0,\n                _text.length > this.maxLengthRenderWithoutTooltip ? this.maxLengthRenderWithoutTooltip : _text.length,\n            ) + (_text.length > this.maxLengthRenderWithoutTooltip ? '...' : '')\n        );\n    }\n\n    get _rawText() {\n        return this.objectField ? (this.dataRender as any)[this.objectField] || '' : this.dataRender || '';\n    }\n}\n\n","<ng-template #itemRender>\n    <div\n        class=\"chip-item\"\n        [class.chip-item-disabled]=\"disabled\"\n        (click)=\"onChipClicked($event)\" \n        [sTooltip]=\"_rawText\"\n        [showDelay]=\"0\"\n        [visible]=\"showTooltip ? _rawText.length > maxLengthRenderWithoutTooltip : false\">\n            @if(templateRef) {\n                <ng-container\n                    *ngTemplateOutlet=\"templateRef; context: { $implicit: dataRender, text: _text }\">\n                </ng-container>\n            } @else {\n                {{ _text }}\n            }\n            <i class=\"fas fa-times\" (click)=\"clickedRemove($event)\"></i>\n    </div>\n</ng-template>\n\n\n@if(objectField && !templateRef) {\n    <ng-container *ngTemplateOutlet=\"itemRender;\"></ng-container>\n}\n\n@if(!objectField && !templateRef) {\n    <ng-container *ngTemplateOutlet=\"itemRender;\"></ng-container>\n}\n\n@if(templateRef) {\n    <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n","import { AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, QueryList, TemplateRef, ViewChild, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { KeyFilterPattern } from 'primeng/keyfilter';\n\nimport { ChipAddEvent, ChipClickEvent, ChipRemoveEvent } from '../models/chip-models';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\nimport { isNullOrUndefined, randomHash } from '@seniorsistemas/angular-components/utils';\nimport { CheckDisabled } from '@seniorsistemas/angular-components/shared';\n\n/**\n * @description Componente de entrada de tags/chips que permite adicionar e remover\n * itens de texto livremente ou a partir de uma lista. Suporta templates personalizados\n * para renderização de cada chip, filtro de teclas, limite de itens e duplicação configurável.\n * Implementa {@link ControlValueAccessor} para uso em formulários Angular.\n *\n * @example\n * ```html\n * <s-chips\n *   formControlName=\"tags\"\n *   placeholder=\"Adicionar tag...\"\n *   [max]=\"10\"\n *   [allowDuplicated]=\"false\"\n *   (added)=\"onAdded($event)\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n    selector: 's-chips',\n    templateUrl: './chips.component.html',\n    styleUrls: ['./chips.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => ChipsComponent),\n            multi: true,\n        },\n    ],\n})\nexport class ChipsComponent implements AfterViewInit, ControlValueAccessor {\n    private readonly cdr = inject(ChangeDetectorRef);\n\n    public newItem = '';\n    public chipTemplate?: TemplateRef<any>;\n\n    /** @description Desabilita a interação com o componente. @default false */\n    @Input()\n    public disabled = false;\n\n    /** @description Chave do objeto usada para exibição quando os itens são objetos complexos. @default '' */\n    @Input()\n    public field = '';\n\n    /** @description Lista de chips atualmente exibidos. @default [] */\n    @Input()\n    public value: any[] = [];\n\n    /** @description Texto de placeholder exibido no campo de entrada quando vazio. */\n    @Input()\n    public placeholder: string | undefined;\n\n    /** @description Número máximo de chips permitidos. @default Infinity */\n    @Input()\n    public max = Infinity;\n\n    /** @description Comprimento máximo do texto de cada chip. @default Infinity */\n    @Input()\n    public maxLength = Infinity;\n\n    /** @description Identificador do elemento `<input>` interno. Gerado automaticamente se não informado. */\n    @Input()\n    public inputId = `chips-${randomHash()}`;\n\n    /** @description Permite a adição de chips com valor duplicado. @default true */\n    @Input()\n    public allowDuplicated = true;\n\n    /** @description Quando `false`, a comparação de duplicatas é case-insensitive. @default false */\n    @Input()\n    public caseSensitiveDuplication = false;\n\n    /** @description Adiciona o chip ao pressionar Tab. @default true */\n    @Input()\n    public addOnTab = true;\n\n    /** @description Adiciona o chip ao perder o foco (blur). @default true */\n    @Input()\n    public addOnBlur = true;\n\n    /** @description Caractere separador que, quando digitado, confirma a adição de um novo chip. @default '' */\n    @Input()\n    public separator = '';\n\n    /** @description Coloca o foco automaticamente no campo de entrada ao renderizar o componente. @default false */\n    @Input()\n    public autofocus = false;\n\n    /** @description Texto informativo exibido abaixo do campo de entrada. @default '' */\n    @Input()\n    public infoLabel = '';\n\n    /** @description Expressão regular ou padrão predefinido (PrimeNG KeyFilterPattern) para filtrar teclas aceitas. */\n    @Input()\n    public keyFilter?: RegExp | KeyFilterPattern;\n\n    /** @description Exibe tooltip ao passar o mouse sobre chips com texto truncado. @default true */\n    @Input()\n    public showTooltip = true;\n\n    /** @description Número máximo de caracteres exibidos diretamente no chip sem aplicar truncamento. @default 20 */\n    @Input()\n    public maxLengthRenderWithoutTooltip = 20;\n\n    /** @description Emitido quando um novo chip é adicionado com sucesso. */\n    @Output()\n    public added = new EventEmitter<ChipAddEvent>();\n\n    /** @description Emitido quando um chip é removido pelo usuário. */\n    @Output()\n    public removed = new EventEmitter<ChipRemoveEvent>();\n\n    /** @description Emitido quando o campo de entrada recebe foco. */\n    @Output()\n    public focused = new EventEmitter<FocusEvent>();\n\n    /** @description Emitido quando o campo de entrada perde o foco. */\n    @Output()\n    public focusLost = new EventEmitter<FocusEvent>();\n\n    /** @description Emitido quando o usuário clica em um chip existente. */\n    @Output()\n    public chipClicked = new EventEmitter<ChipClickEvent>();\n\n    /** @description Emitido sempre que a lista de chips é alterada (adição ou remoção). */\n    @Output()\n    public valueChange = new EventEmitter<string[] | any[]>();\n\n    @ContentChildren(TemplateDirective)\n    private readonly templates: QueryList<TemplateDirective> | null = null;\n\n    @ViewChild('input', { read: ElementRef })\n    private readonly input: ElementRef<HTMLElement> | null = null;\n\n    public isFocused = false;\n    public onChange: (value: string[] | any[]) => void = () => {};\n    public onTouched: (value: string[] | any[]) => void = () => {};\n\n    private isTabEventActive = false;\n\n    public ngAfterViewInit(): void {\n        if (this.autofocus && this.input) {\n            this.input.nativeElement.focus();\n        }\n        if (this.templates) {\n            this.chipTemplate = this.templates.find((x) => x.type === 'chip-container')?.template;\n            this.cdr.detectChanges();\n        }\n    }\n\n    public writeValue(obj: string[] | any[]): void {\n        if (isNullOrUndefined(obj)) {\n            obj = [];\n        }\n        this.value = obj;\n    }\n\n    public registerOnChange(fn: (value: string[] | any[]) => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    @HostListener('document:keydown', ['$event'])\n    @CheckDisabled()\n    public onKeydown($event: KeyboardEvent) {\n        const isEnter = $event.key === 'Enter';\n        const isSeparator = this.separator && $event.key === this.separator;\n        const eventKeyIsTab = $event.key === 'Tab';\n        if (eventKeyIsTab) {\n            const tabTimeoutTime = 50;\n            this.isTabEventActive = true;\n            setTimeout(() => {\n                this.isTabEventActive = false;\n            }, tabTimeoutTime);\n        }\n        const isTab = this.addOnTab && eventKeyIsTab;\n        if (isEnter || isSeparator || isTab) {\n            $event.preventDefault();\n            this.addItem();\n        }\n    }\n\n    public onInputFocus($event: FocusEvent) {\n        this.focused.emit($event);\n        this.isFocused = true;\n    }\n\n    @CheckDisabled()\n    public onInputLostFocus($event: FocusEvent) {\n        this.isFocused = false;\n        if (!this.addOnBlur || this.isTabEventActive) {\n            return;\n        }\n        this.addItem();\n        this.focusLost.emit($event);\n    }\n\n    public removeItem({ itemIndex, event }: { itemIndex: number; event: Event }) {\n        const _removedItem = this.value[itemIndex];\n        this.value.splice(itemIndex, 1);\n        this.removed.emit({ value: _removedItem, originalEvent: event });\n    }\n\n    public onChipClicked({ event, data }: { event: Event; data: string | Object }) {\n        this.chipClicked.emit({ value: data, originalEvent: event });\n    }\n\n    private addItem() {\n        if (!this.hasValueToAdd()) {\n            return;\n        }\n        if (this.isMaxReached()) {\n            return;\n        }\n        if (!this.isValidItemLength()) {\n            return;\n        }\n        const valueToAdd = this.getValueToAdd();\n        if (!this.hasDuplicatedItem()) {\n            this.storeValue(valueToAdd);\n        }\n        this.newItem = '';\n    }\n\n    private hasValueToAdd(): boolean {\n        return !!this.newItem;\n    }\n\n    private isMaxReached(): boolean {\n        return !!(this.max && this.value.length === this.max);\n    }\n\n    private isValidItemLength(): boolean {\n        return this.maxLength ? this.newItem.length <= this.maxLength : true;\n    }\n\n    private getMappedValues(): string[] {\n        return this.field ? this.value.map((x) => x[this.field]) : this.value;\n    }\n\n    private getValueToAdd(): any {\n        return this.field ? { [this.field]: this.newItem } : this.newItem;\n    }\n\n    private hasDuplicatedItem(): boolean {\n        if (this.allowDuplicated) {\n            return false;\n        }\n        const mappedValues = this.getMappedValues();\n        return !!mappedValues.find((x) => {\n            if (this.caseSensitiveDuplication) {\n                return x === this.newItem;\n            } else {\n                return x.toLowerCase() === this.newItem.toLowerCase();\n            }\n        });\n    }\n\n    private storeValue(value: any) {\n        this.value = [...this.value, value];\n        this.added.emit({ value });\n        this.valueChange.emit(this.value);\n        this.writeValue(this.value);\n        this.onChange(this.value);\n        this.onTouched(this.value);\n    }\n}\n\n","<ul class=\"chips-container\" [class.chips-container--focused]=\"isFocused\">\n    @for(item of value; track $index) {\n        <li>\n            <s-chip-item\n                [templateRef]=\"chipTemplate\"\n                [dataRender]=\"item\"\n                [objectField]=\"field\"\n                [itemIndex]=\"$index\"\n                [disabled]=\"disabled\"\n                [showTooltip]=\"showTooltip\"\n                [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n                (clickRemove)=\"removeItem($event)\"\n                (chipClicked)=\"onChipClicked($event)\">\n            </s-chip-item>\n        </li>\n    }\n\n    @if(keyFilter) {\n        <input\n            #input\n            [disabled]=\"disabled || max === value.length\"\n            [placeholder]=\"placeholder || ''\"\n            [maxlength]=\"maxLength\"\n            [id]=\"inputId\"\n            [(ngModel)]=\"newItem\"\n            [pKeyFilter]=\"keyFilter\"\n            (focus)=\"onInputFocus($event)\"\n            (blur)=\"onInputLostFocus($event)\">\n    }@else {\n        <input\n            #input\n            [disabled]=\"disabled || max === value.length\"\n            [placeholder]=\"placeholder || ''\"\n            [maxlength]=\"maxLength\"\n            [id]=\"inputId\"\n            [(ngModel)]=\"newItem\"\n            (focus)=\"onInputFocus($event)\"\n            (blur)=\"onInputLostFocus($event)\">\n    }\n</ul>\n@if(infoLabel) {\n    <span class=\"info-label\">\n        {{ infoLabel }}\n    </span>\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { KeyFilterModule } from 'primeng/keyfilter';\nimport { ChipItemComponent } from './chip-item/chip-item.component';\nimport { ChipsComponent } from './chips/chips.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\n\n@NgModule({\n    declarations: [ChipsComponent, ChipItemComponent],\n    imports: [FormsModule, TooltipModule, KeyFilterModule, NgTemplateOutlet],\n    exports: [ChipsComponent],\n})\nexport class ChipsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.ChipItemComponent"],"mappings":"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"}