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