import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef, ElementRef } from '@angular/core'; import { MJQueryEntityExtended } from '@memberjunction/core-entities'; import { QueryGridColumnConfig } from '../query-data-grid/models/query-grid-types'; import * as i0 from "@angular/core"; /** * Event emitted when navigating to a linked entity record */ export interface RowDetailEntityLinkEvent { entityName: string; recordId: string; fieldName: string; } /** * Field display configuration for the detail panel */ interface DetailField { name: string; displayName: string; value: unknown; formattedValue: string; sqlType: string; isPrimaryKey: boolean; isForeignKey: boolean; targetEntityName?: string; targetEntityIcon?: string; sourceEntityName?: string; isLongText: boolean; isExpanded: boolean; } /** * Row detail slide-in panel component. * Displays a single row's data in a formatted, grouped view with entity links. */ export declare class QueryRowDetailComponent implements OnInit, OnDestroy { private cdr; private elementRef; private _rowData; set RowData(value: Record | null); get RowData(): Record | null; private _columns; set Columns(value: QueryGridColumnConfig[]); get Columns(): QueryGridColumnConfig[]; QueryInfo: MJQueryEntityExtended | null; Visible: boolean; RowIndex: number; TotalRows: number; Close: EventEmitter; EntityLinkClick: EventEmitter; NavigateRow: EventEmitter<"prev" | "next">; PrimaryKeyFields: DetailField[]; ForeignKeyFields: DetailField[]; RegularFields: DetailField[]; PanelWidth: number; IsResizing: boolean; HideEmptyFields: boolean; private destroy$; private widthPersistSubject; private minWidth; private maxWidth; constructor(cdr: ChangeDetectorRef, elementRef: ElementRef); ngOnInit(): void; ngOnDestroy(): void; private buildDetailFields; private buildDetailField; private formatValue; onClose(): void; onEntityLinkClick(field: DetailField): void; onNavigatePrev(): void; onNavigateNext(): void; toggleFieldExpand(field: DetailField): void; copyValue(field: DetailField): void; copyRowAsJson(): void; isJson(value: string): boolean; formatJson(value: string): string; onResizeStart(event: MouseEvent): void; onMouseMove(event: MouseEvent): void; onMouseUp(): void; private loadPersistedWidth; private persistPanelWidth; private loadHideEmptyFieldsPreference; private persistHideEmptyFieldsPreference; toggleHideEmptyFields(): void; /** * Returns visible fields based on HideEmptyFields setting */ getVisibleFields(fields: DetailField[]): DetailField[]; /** * Returns count of empty fields for display */ getEmptyFieldCount(fields: DetailField[]): number; onKeyDown(event: KeyboardEvent): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } export {}; //# sourceMappingURL=query-row-detail.component.d.ts.map