import * as i0 from '@angular/core'; import { OnInit, AfterViewInit, AfterContentInit, OnDestroy, QueryList, TemplateRef, EventEmitter, ElementRef, InjectionToken, DoCheck } from '@angular/core'; import { MatPaginator, PageEvent } from '@angular/material/paginator'; import { MatSort } from '@angular/material/sort'; import { Observable, BehaviorSubject, Subject } from 'rxjs'; import { AssetRepoGraphQlDataSource } from '@meshmakers/octo-services'; import { BreadCrumbData, EntitySelectDataSource } from '@meshmakers/shared-services'; import { ControlValueAccessor, Validator, FormControl, NgControl, AbstractControl, ValidationErrors } from '@angular/forms'; import { MatFormFieldControl } from '@angular/material/form-field'; import { MatAutocompleteSelectedEvent, MatAutocompleteActivatedEvent } from '@angular/material/autocomplete'; interface TableColumn { displayName?: string | null; dataKey: string; templateName?: string; sortingDisabled?: boolean; } declare function getDisplayName(column: TableColumn): string; declare function getDataKey(column: TableColumn): string; type ColumnDefinition = string | TableColumn; /** * Material Design replacement for legacy Kendo-based MmOctoTableComponent. * Uses Angular Material table with sorting, pagination, and search. */ interface ActionColumn { displayText: string; actionId: string; iconName?: string; svgIconName?: string; } interface ToolbarAction { iconName?: string; svgIconName?: string; route?: string; clickHandler?: () => void; actionText: string; isDisabled?: Observable; isHidden?: Observable; } declare class MmOctoTableComponent implements OnInit, AfterViewInit, AfterContentInit, OnDestroy { dataSource: AssetRepoGraphQlDataSource; cellTemplates: QueryList>; templateMap: Map>; actionColumns: ActionColumn[]; leftToolbarActions: ToolbarAction[]; optionActions: ActionColumn[]; searchFilterColumns: string[]; currentId: string; defaultSortColumn: string; rowIsClickable: boolean; pageSizeOptions: number[]; selectedPageSize: number; rowClicked: EventEmitter; searchFilterStringUpdated: EventEmitter; selectedRowId: string; actionColumnClick: EventEmitter<{ action: string; id: string; entry: any; }>; set columns(cols: ColumnDefinition[]); get columns(): TableColumn[]; _columns: TableColumn[]; selectedRow: any; selectedPageSizeSubject: BehaviorSubject; paginator?: MatPaginator; sort?: MatSort; input?: ElementRef; private loadingSubscription?; private wasLoadingPreviously; private hadFocusBeforeLoading; get columnDataKeys(): string[]; get columnDisplayNames(): string[]; ngOnInit(): void; ngAfterContentInit(): void; ngAfterViewInit(): void; loadData(): void; protected readonly encodeURIComponent: typeof encodeURIComponent; accessElement(element: any, column: TableColumn): any; selectedPageSizeChanged($event: PageEvent): void; getActionDisplayTexts(): string[]; onRowClick(row: any): void; isRowSelected(row: any): boolean; checkSelectedRow(): void; emitRowData(data: { action: string; id: string; entry: any; }): void; hasOptionActions: () => boolean; hasActionColumns: () => boolean; protected readonly getDisplayName: typeof getDisplayName; protected readonly getDataKey: typeof getDataKey; isSortable(column: TableColumn): boolean; getTemplate(templateName: string): TemplateRef | undefined; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * Material Design replacement for legacy mm-breadcrumb from @meshmakers/shared-ui. * Uses BreadCrumbService from shared-services. * * Supports optional translation via BREADCRUMB_TRANSLATE_FN injection token. * If provided, breadcrumb labels are passed through the translate function. */ /** * Optional injection token for breadcrumb label translation. * Provide a function that takes a translation key and returns the translated string. * If the key is a dynamic value (e.g. an ID), the function should return it unchanged. * * Example usage with @ngx-translate: * ``` * providers: [ * { provide: BREADCRUMB_TRANSLATE_FN, useFactory: (ts: TranslateService) => (key: string) => ts.instant(key), deps: [TranslateService] } * ] * ``` */ declare const BREADCRUMB_TRANSLATE_FN: InjectionToken<(key: string) => string>; declare class MmBreadcrumbComponent implements OnInit, OnDestroy { private readonly breadcrumbService; private readonly translateFn; protected breadcrumbData: BreadCrumbData[]; private subscription; ngOnInit(): void; ngOnDestroy(): void; protected translate(text: string | undefined): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * Material Design replacement for legacy mm-notification-bar from @meshmakers/shared-ui. * Uses MatSnackBar to display error messages from MessageService. */ declare class MmNotificationBarComponent implements OnInit, OnDestroy { private readonly snackBar; private readonly messageService; private readonly router; private readonly ngZone; private currentSnackBarRef; private subscriptions; private snackBarOpenTime; ngOnInit(): void; ngOnDestroy(): void; private closeCurrentSnackBar; private setupGlobalInteractionListeners; private shouldCloseOnInteraction; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * Material Design replacement for legacy mm-entity-select from @meshmakers/shared-ui. * Uses Angular Material Autocomplete with ControlValueAccessor. */ declare class MmEntitySelectInputComponent implements OnInit, OnDestroy, DoCheck, ControlValueAccessor, MatFormFieldControl, Validator { elRef: ElementRef; private readonly injector; private readonly fm; private static nextId; readonly searchFormControl: FormControl; isLoading: boolean; filteredEntities: any[]; ngControl: NgControl | null; errorState: boolean; focused: boolean; readonly stateChanges: Subject; readonly id: string; valueChange: EventEmitter; private _selectedEntity; private readonly inputField; protected describedBy: string; private activatedValue; constructor(); private _dataSource; get dataSource(): EntitySelectDataSource | null; set dataSource(value: EntitySelectDataSource | null); private _disabled; get disabled(): boolean; set disabled(dis: any); private _placeholder; get placeholder(): string; set placeholder(plh: any); private _required; get required(): boolean; set required(req: any); private _prefix; get prefix(): string; set prefix(value: string); get value(): any; set value(value: any); get empty(): boolean; get shouldLabelFloat(): boolean; ngOnInit(): void; ngOnDestroy(): void; ngDoCheck(): void; clear(): void; focus(): void; onEntitySelected(event: MatAutocompleteSelectedEvent): void; onEntityActivated(event: MatAutocompleteActivatedEvent): void; onEntityClosed(): void; reset(): void; onFocusOut(): void; onTouched(): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; writeValue(obj: any): void; setDisabledState(isDisabled: boolean): void; onContainerClick(event: MouseEvent): void; setDescribedByIds(ids: string[]): void; validate(control: AbstractControl): ValidationErrors | null; private _propagateChange; private readonly _onTouched; private setValue; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } export { BREADCRUMB_TRANSLATE_FN, MmBreadcrumbComponent, MmEntitySelectInputComponent, MmNotificationBarComponent, MmOctoTableComponent, getDataKey, getDisplayName }; export type { ActionColumn, ColumnDefinition, TableColumn, ToolbarAction };