import { CommonModule } from '@angular/common'; import { Component, EventEmitter, Input, Output, TemplateRef, } from '@angular/core'; // modules import { NgbModule, NgbPopover } from '@ng-bootstrap/ng-bootstrap'; // components import { CaAppTooltipV2Component } from '../ca-app-tooltip-v2/ca-app-tooltip-v2.component'; import { SvgIconComponent } from 'angular-svg-icon'; // enums import { eColor, ePosition, eStringPlaceholder, eUnit } from '../../enums'; // directives import { DescriptionItemsTextCountDirective } from '../../directives'; // pipes import { PmItemPipe, DropdownWidthPipe } from './pipes'; // helpers import { ItemsDropdownHelper } from './utils/helpers'; // interfaces import { IItemsDropdownConfig, IItemsDropdownList } from './interfaces'; @Component({ selector: 'ca-items-dropdown', templateUrl: './ca-items-dropdown.component.html', styleUrl: './ca-items-dropdown.component.scss', standalone: true, imports: [ // modules CommonModule, NgbModule, // components CaAppTooltipV2Component, SvgIconComponent, // directives DescriptionItemsTextCountDirective, // pipes PmItemPipe, DropdownWidthPipe, ], }) export class CaItemsDropdownComponent { @Input() set itemsDropdownConfig(value: IItemsDropdownConfig | null) { this._itemsDropdownConfig = value; this.updateDropdownItemsToDisplay(); } @Input() itemsDropdownList: T[] = []; @Input() itemsSpecialStylesIndexArray?: number[] = []; @Input() minimisedVariationDropdownTemplate!: TemplateRef<{ data: T[] }>; @Input() columnWidth: number = 0; @Input() dropdownWidth: number = 0; @Input() tooltipText: string = eStringPlaceholder.EMPTY; @Output() itemsDropdownAction: EventEmitter = new EventEmitter(); public _itemsDropdownConfig: IItemsDropdownConfig | null = null; public dropdownItemsToDisplay: string | number[][] = []; // enums public ePosition = ePosition; public eColor = eColor; public eStringPlaceholder = eStringPlaceholder; public eUnit = eUnit; private updateDropdownItemsToDisplay(): void { if ( this._itemsDropdownConfig && !this.minimisedVariationDropdownTemplate ) { this.dropdownItemsToDisplay = ItemsDropdownHelper.getDropdownValues( this.itemsDropdownList, this._itemsDropdownConfig .gridResponsePropertiesToDisplay as string[] ); } } public handleDropdownOpenCloseClick(dropdownPopover: NgbPopover): void { dropdownPopover.toggle(); this.itemsDropdownAction.emit(); } }