import { CommonModule } from '@angular/common'; import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation, } from '@angular/core'; // Components import { LoadComponent } from '../ca-pickup-delivery-block/components/ca-load/ca-load.component'; // Models import { DispatchGroupedLoadsResponse, DispatchResponse } from './models'; // Enums import { StatusTypeEnum } from '../ca-pickup-delivery-block/models/status-types.enum'; // Pipes import { DateFromStringPipe } from '../../pipes/date-from-string.pipe'; import { FormatCityStatePipe } from '../../pipes/format-city-state.pipe'; import { TableHighlightSearchTextPipe } from '../../pipes/table-highlight-search-text.pipe'; // Modules import { NgbModule, NgbPopover } from '@ng-bootstrap/ng-bootstrap'; // Interfaces import { IDropdownMenuOptionEmit } from '../ca-dropdown-menu/interfaces'; import { ISearchQueryItem } from '../ca-search-multiple-states-2/interfaces'; @Component({ selector: 'app-ca-pickup-delivery-block', templateUrl: './ca-pickup-delivery-block.component.html', styleUrls: ['./ca-pickup-delivery-block.component.scss'], imports: [ CommonModule, NgbModule, // Components LoadComponent, // Pipes DateFromStringPipe, FormatCityStatePipe, TableHighlightSearchTextPipe, ], encapsulation: ViewEncapsulation.None, }) export class PickupDeliveryBlockComponent implements OnInit { @Input() set columnWidth(value: number) { if (value) this._columnWidth = value; } @Input() set searchStrings(value: ISearchQueryItem[]) { this._searchStrings = value; } @Input() loads!: DispatchGroupedLoadsResponse | null; @Input() dispatchResponse!: DispatchResponse | null; @Input() isHoveringRow!: boolean; @Input() isDisabled: boolean = false; @Output() dropdownMenuAction: EventEmitter = new EventEmitter(); public _searchStrings: ISearchQueryItem[] = []; public _columnWidth: number = 0; public loadType!: StatusTypeEnum; constructor() {} ngOnInit(): void { this.initializeLoadType(); } private initializeLoadType(): void { if (!this.dispatchResponse) return; const normalizedValue = this.dispatchResponse.activeLoad?.statusType?.name?.toUpperCase() as keyof typeof StatusTypeEnum; this.loadType = this.dispatchResponse.activeLoad ? StatusTypeEnum[normalizedValue] : StatusTypeEnum.CLOSED; } public openPopover(t2: NgbPopover): void { if (this.isDisabled) return; t2.open(); } public closePopover(t2: NgbPopover): void { t2.close(); } public onDropdownMenuAction(action: IDropdownMenuOptionEmit): void { this.dropdownMenuAction.emit(action); } }