import { Type } from '@angular/core'; import { ResolveFn, Route } from '@angular/router'; import { ResultOf, TypedDocumentNode } from '@graphql-typed-document-node/core'; import { DocumentNode } from 'graphql'; import { BehaviorSubject, Observable } from 'rxjs'; import { BaseDetailComponent } from '../common/base-detail.component'; import { BreadcrumbValue } from '../providers/breadcrumb/breadcrumb.service'; import { AngularRouteComponent } from './components/angular-route.component'; /** * @description * Configuration for a route component. * * @docsCategory routes */ export type RegisterRouteComponentOptions, Entity extends { id: string; updatedAt?: string; }, T extends DocumentNode | TypedDocumentNode, Field extends keyof ResultOf, R extends Field> = { component: Type | Component; title?: string; locationId?: string; description?: string; breadcrumb?: BreadcrumbValue; path?: string; query?: T; getBreadcrumbs?: (entity: Exclude[R], 'Query'>) => BreadcrumbValue; entityKey?: Component extends BaseDetailComponent ? R : string; variables?: T extends TypedDocumentNode ? Omit : never; routeConfig?: Route; } & (Component extends BaseDetailComponent ? { entityKey: R; } : unknown); /** * @description * Registers an Angular standalone component to be rendered in a route. * * @example * ```ts title="routes.ts" * import { registerRouteComponent } from '\@vendure/admin-ui/core'; * import { registerReactRouteComponent } from '\@vendure/admin-ui/react'; * * import { ProductReviewDetailComponent } from './components/product-review-detail/product-review-detail.component'; * import { AllProductReviewsList } from './components/all-product-reviews-list/all-product-reviews-list.component'; * import { GetReviewDetailDocument } from './generated-types'; * * export default [ * registerRouteComponent({ * path: '', * component: AllProductReviewsList, * breadcrumb: 'Product reviews', * }), * registerRouteComponent({ * path: ':id', * component: ProductReviewDetailComponent, * query: GetReviewDetailDocument, * entityKey: 'productReview', * getBreadcrumbs: entity => [ * { * label: 'Product reviews', * link: ['/extensions', 'product-reviews'], * }, * { * label: `#${entity?.id} (${entity?.product.name})`, * link: [], * }, * ], * }), * ]; * ``` * * @docsCategory routes */ export declare function registerRouteComponent, Entity extends { id: string; updatedAt?: string; }, T extends DocumentNode | TypedDocumentNode, Field extends keyof ResultOf, R extends Field>(options: RegisterRouteComponentOptions): { resolve: { detail?: ResolveFn<{ entity: Observable[Field] | null>; result?: ResultOf; }> | undefined; }; data: { breadcrumb: BehaviorSubject | ((data: any) => any); locationId: string | undefined; description: string | undefined; }; component: typeof AngularRouteComponent; title?: string | Type> | ResolveFn; path: string; pathMatch?: "prefix" | "full"; matcher?: import("@angular/router").UrlMatcher; loadComponent?: () => Type | Observable | import("@angular/router").DefaultExport>> | Promise | import("@angular/router").DefaultExport>>; redirectTo?: string | import("@angular/router").RedirectFunction; outlet?: string; canActivate?: Array; canMatch?: Array; canActivateChild?: Array; canDeactivate?: Array | import("@angular/router").DeprecatedGuard>; canLoad?: Array; children?: import("@angular/router").Routes; loadChildren?: import("@angular/router").LoadChildren; runGuardsAndResolvers?: import("@angular/router").RunGuardsAndResolvers; providers: Array; };