title |
---|
Custom History Timeline Components |
The Order & Customer detail pages feature a timeline of history entries. Since v1.9.0 it is possible to define custom history entry types - see the HistoryService docs for an example.
You can also define a custom Angular component to render any timeline entry using the registerHistoryEntryComponent function.
:::note Currently it is only possible to define new tabs using Angular components. :::
Following the example used in the HistoryService docs, we can define a component to render the tax ID verification entry in our Customer timeline:
import { Component } from '@angular/core';
import {
CustomerFragment,
CustomerHistoryEntryComponent,
SharedModule,
TimelineDisplayType,
TimelineHistoryEntry,
} from '@vendure/admin-ui/core';
@Component({
selector: 'tax-id-verification-entry',
template: `
<div *ngIf="entry.data.valid">
Tax ID <strong>{{ entry.data.taxId }}</strong> was verified
<vdr-history-entry-detail *ngIf="entry.data">
<vdr-object-tree [value]="entry.data"></vdr-object-tree>
</vdr-history-entry-detail>
</div>
<div *ngIf="entry.data.valid">Tax ID {{ entry.data.taxId }} could not be verified</div>
`,
standalone: true,
imports: [SharedModule],
})
export class TaxIdHistoryEntryComponent implements CustomerHistoryEntryComponent {
entry: TimelineHistoryEntry;
customer: CustomerFragment;
getDisplayType(entry: TimelineHistoryEntry): TimelineDisplayType {
return entry.data.valid ? 'success' : 'error';
}
getName(entry: TimelineHistoryEntry): string {
return 'Tax ID Verification Plugin';
}
isFeatured(entry: TimelineHistoryEntry): boolean {
return true;
}
getIconShape(entry: TimelineHistoryEntry) {
return entry.data.valid ? 'check-circle' : 'exclamation-circle';
}
}
We can then register this component in the providers.ts
file:
import { registerHistoryEntryComponent } from '@vendure/admin-ui/core';
import { TaxIdHistoryEntryComponent } from './components/tax-id-history-entry/tax-id-history-entry.component';
export default [
registerHistoryEntryComponent({
type: 'CUSTOMER_TAX_ID_VERIFICATION',
component: TaxIdHistoryEntryComponent,
}),
];
Then we need to add the providers.ts
file to the uiExtensions
array as described in the UI Extensions Getting Started guide.