import { Component, EventEmitter, Input, Output } from '@angular/core'; import { CommonModule } from '@angular/common'; import { AngularSvgIconModule } from 'angular-svg-icon'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { Clipboard } from '@angular/cdk/clipboard'; // Components import { CaCustomCardComponent } from '../ca-custom-card/ca-custom-card.component'; import { CaAppTooltipV2Component } from '../ca-app-tooltip-v2/ca-app-tooltip-v2.component'; // Pipes import { HighlightSearchPipe } from '../../pipes/highlight-search.pipe'; // Svg routes import { SharedSvgRoutes } from '../../utils/svg-routes'; import { eColor, eGeneralActions, ePosition, eStringPlaceholder, } from '../../enums'; // Interfaces import { IContactDepartment } from './interfaces'; @Component({ selector: 'app-ca-contacts-card', imports: [ CommonModule, AngularSvgIconModule, NgbModule, // Components CaCustomCardComponent, CaAppTooltipV2Component, //Pipes HighlightSearchPipe, ], templateUrl: './ca-contacts-card.component.html', styleUrl: './ca-contacts-card.component.scss', }) export class CaContactsCardComponent { @Input() departmentContacts!: IContactDepartment[]; @Input() searchText: string = ''; @Output() onEditClick = new EventEmitter(); @Output() onDeleteClick = new EventEmitter(); public hoveredContactId: number | null = null; public hoveredTextIndex: number = -1; public copiedIndex: number = -1; // Enums public eGeneralActions = eGeneralActions; public eColor = eColor; public ePosition = ePosition; public eStringPlaceholder = eStringPlaceholder; // Svg routes public svgRoutes = SharedSvgRoutes; constructor(private clipboard: Clipboard) {} public copyToClipboard(text: string, index: number): void { this.clipboard.copy(text); this.copiedIndex = index; } public onHoverContact(contactId?: number): void { this.hoveredContactId = contactId ?? null; } public onHoverText(index?: number): void { this.hoveredTextIndex = index ?? -1; if (this.copiedIndex === index) this.copiedIndex = -1; } public onEditEvent(contactId: number): void { this.onEditClick.emit(contactId); } public onDeleteEvent(contactId: number): void { this.onDeleteClick.emit(contactId); } }