@vendure/admin-ui 3.3.6-master-202507110238 → 3.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"vendure-admin-ui-customer.mjs","sources":["../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.ts","../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.html","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.ts","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.html","../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.ts","../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.html","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.ts","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.html","../../src/lib/customer/src/components/address-card/address-card.component.ts","../../src/lib/customer/src/components/address-card/address-card.component.html","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.ts","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.html","../../src/lib/customer/src/components/customer-history/customer-history-entry-host.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.html","../../src/lib/customer/src/components/customer-detail/customer-detail.component.ts","../../src/lib/customer/src/components/customer-detail/customer-detail.component.html","../../src/lib/customer/src/components/customer-group-detail/customer-group-detail.component.ts","../../src/lib/customer/src/components/customer-group-detail/customer-group-detail.component.html","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.ts","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.html","../../src/lib/customer/src/components/customer-group-list/customer-group-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.html","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-list/customer-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.html","../../src/lib/customer/src/customer.routes.ts","../../src/lib/customer/src/customer.module.ts","../../src/lib/customer/src/public_api.ts","../../src/lib/customer/src/vendure-admin-ui-customer.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CustomerFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-customer-status-label',\n templateUrl: './customer-status-label.component.html',\n styleUrls: ['./customer-status-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerStatusLabelComponent {\n @Input() customer: CustomerFragment;\n}\n","<vdr-chip *ngIf=\"customer.user?.id\">\n <ng-container *ngIf=\"customer.user?.verified\">\n <clr-icon shape=\"check-circle\" class=\"verified-user-icon\"></clr-icon>\n {{ 'customer.verified' | translate }}\n </ng-container>\n <ng-container *ngIf=\"!customer.user?.verified\">\n <clr-icon shape=\"check-circle\" class=\"registered-user-icon\"></clr-icon>\n {{ 'customer.registered' | translate }}\n </ng-container>\n</vdr-chip>\n<vdr-chip *ngIf=\"!customer.user?.id\">{{ 'customer.guest' | translate }}</vdr-chip>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n BulkActionLocationId,\n Customer,\n DataService,\n GetCustomerGroupsQuery,\n ItemOf,\n SelectionManager,\n} from '@vendure/admin-ui/core';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, startWith, takeUntil, tap } from 'rxjs/operators';\n\nexport interface CustomerGroupMemberFetchParams {\n skip: number;\n take: number;\n filterTerm: string;\n}\n\nexport type CustomerGroupMember = Pick<\n Customer,\n 'id' | 'createdAt' | 'updatedAt' | 'title' | 'firstName' | 'lastName' | 'emailAddress'\n>;\n\n@Component({\n selector: 'vdr-customer-group-member-list',\n templateUrl: './customer-group-member-list.component.html',\n styleUrls: ['./customer-group-member-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerGroupMemberListComponent implements OnInit, OnDestroy {\n @Input() locationId: BulkActionLocationId;\n @Input() members: CustomerGroupMember[];\n @Input() totalItems: number;\n @Input() route: ActivatedRoute;\n @Input() selectedMemberIds: string[] = [];\n @Input() activeGroup: ItemOf<GetCustomerGroupsQuery, 'customerGroups'>;\n @Output() selectionChange = new EventEmitter<string[]>();\n @Output() fetchParamsChange = new EventEmitter<CustomerGroupMemberFetchParams>();\n\n membersItemsPerPage$: Observable<number>;\n membersCurrentPage$: Observable<number>;\n filterTermControl = new FormControl('');\n selectionManager = new SelectionManager<CustomerGroupMember>({\n multiSelect: true,\n itemsAreEqual: (a, b) => a.id === b.id,\n additiveMode: true,\n });\n private refresh$ = new BehaviorSubject<boolean>(true);\n private destroy$ = new Subject<void>();\n\n constructor(\n private router: Router,\n private dataService: DataService,\n ) {}\n\n ngOnInit() {\n this.membersCurrentPage$ = this.route.paramMap.pipe(\n map(qpm => qpm.get('membersPage')),\n map(page => (!page ? 1 : +page)),\n startWith(1),\n distinctUntilChanged(),\n );\n\n this.membersItemsPerPage$ = this.route.paramMap.pipe(\n map(qpm => qpm.get('membersPerPage')),\n map(perPage => (!perPage ? 10 : +perPage)),\n startWith(10),\n distinctUntilChanged(),\n );\n\n const filterTerm$ = this.filterTermControl.valueChanges.pipe(\n debounceTime(250),\n tap(() => this.setContentsPageNumber(1)),\n startWith(''),\n );\n\n combineLatest(this.membersCurrentPage$, this.membersItemsPerPage$, filterTerm$, this.refresh$)\n .pipe(takeUntil(this.destroy$))\n .subscribe(([currentPage, itemsPerPage, filterTerm]) => {\n const take = itemsPerPage;\n const skip = (currentPage - 1) * itemsPerPage;\n this.fetchParamsChange.emit({\n filterTerm: filterTerm ?? '',\n skip,\n take,\n });\n });\n this.selectionManager.setCurrentItems(\n this.members?.filter(m => this.selectedMemberIds.includes(m.id)) ?? [],\n );\n this.selectionManager.selectionChanges$.pipe(takeUntil(this.destroy$)).subscribe(selection => {\n this.selectionChange.emit(selection.map(s => s.id));\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n setContentsPageNumber(page: number) {\n this.setParam('membersPage', page);\n }\n\n setContentsItemsPerPage(perPage: number) {\n this.setParam('membersPerPage', perPage);\n }\n\n refresh() {\n this.refresh$.next(true);\n }\n\n private setParam(key: string, value: any) {\n this.router.navigate(['./', { ...this.route.snapshot.params, [key]: value }], {\n relativeTo: this.route,\n queryParamsHandling: 'merge',\n });\n }\n}\n","<vdr-data-table-2\n [id]=\"locationId\"\n [items]=\"members\"\n [itemsPerPage]=\"membersItemsPerPage$ | async\"\n [totalItems]=\"totalItems\"\n [currentPage]=\"membersCurrentPage$ | async\"\n (pageChange)=\"setContentsPageNumber($event)\"\n (itemsPerPageChange)=\"setContentsItemsPerPage($event)\"\n>\n <vdr-bulk-action-menu\n [locationId]=\"locationId\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"filterTermControl\"\n [searchTermPlaceholder]=\"'customer.search-customers-by-email' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\">\n <ng-template let-customer=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/customer/customers', customer.id]\"\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n <vdr-customer-status-label [customer]=\"customer\" />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\">\n <ng-template let-customer=\"item\">\n {{ customer.emailAddress }}\n </ng-template>\n </vdr-dt2-column>\n</vdr-data-table-2>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n DataService,\n Dialog,\n GetCustomerGroupsQuery,\n GetCustomerListQuery,\n ItemOf,\n} from '@vendure/admin-ui/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\n\n@Component({\n selector: 'vdr-add-customer-to-group-dialog',\n templateUrl: './add-customer-to-group-dialog.component.html',\n styleUrls: ['./add-customer-to-group-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AddCustomerToGroupDialogComponent implements Dialog<string[]>, OnInit {\n resolveWith: (result?: string[]) => void;\n group: ItemOf<GetCustomerGroupsQuery, 'customerGroups'>;\n route: ActivatedRoute;\n selectedCustomerIds: string[] = [];\n customers$: Observable<GetCustomerListQuery['customers']['items']>;\n customersTotal$: Observable<number>;\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\n skip: 0,\n take: 10,\n filterTerm: '',\n });\n\n constructor(private dataService: DataService) {}\n\n ngOnInit() {\n const customerResult$ = this.fetchGroupMembers$.pipe(\n switchMap(({ skip, take, filterTerm }) =>\n this.dataService.customer\n .getCustomerList(take, skip, filterTerm)\n .mapStream(res => res.customers),\n ),\n );\n\n this.customers$ = customerResult$.pipe(map(res => res.items));\n this.customersTotal$ = customerResult$.pipe(map(res => res.totalItems));\n }\n\n cancel() {\n this.resolveWith();\n }\n\n add() {\n this.resolveWith(this.selectedCustomerIds);\n }\n}\n","<ng-template vdrDialogTitle>\n {{ 'customer.add-customers-to-group-with-name' | translate: {groupName: group.name} }}\n</ng-template>\n\n<vdr-customer-group-member-list\n locationId=\"customer-group-members-picker-list\"\n [members]=\"customers$ | async\"\n [totalItems]=\"customersTotal$ | async\"\n [route]=\"route\"\n [selectedMemberIds]=\"selectedCustomerIds\"\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\n (selectionChange)=\"selectedCustomerIds = $event\"\n/>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedCustomerIds.length\" class=\"btn btn-primary\">\n {{ 'customer.add-customers-to-group-with-count' | translate: {count: selectedCustomerIds.length} }}\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { CustomFieldConfig, Dialog, GetAvailableCountriesQuery } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-address-detail-dialog',\n templateUrl: './address-detail-dialog.component.html',\n styleUrls: ['./address-detail-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AddressDetailDialogComponent implements Dialog<UntypedFormGroup>, OnInit {\n addressForm: UntypedFormGroup;\n customFields: CustomFieldConfig;\n availableCountries: GetAvailableCountriesQuery['countries']['items'] = [];\n resolveWith: (result?: UntypedFormGroup) => void;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.addressForm.valueChanges.subscribe(() => this.changeDetector.markForCheck());\n }\n\n cancel() {\n this.resolveWith();\n }\n\n save() {\n this.resolveWith(this.addressForm);\n }\n}\n","<ng-template vdrDialogTitle>\n <span *ngIf=\"addressForm.get('streetLine1')?.value as streetLine1\">{{ streetLine1 }},</span>\n <span *ngIf=\"addressForm.get('countryCode')?.value as countryCode\"> {{ countryCode }}</span>\n</ng-template>\n\n<vdr-address-form\n [formGroup]=\"addressForm\"\n [availableCountries]=\"availableCountries\"\n [customFields]=\"customFields\"\n></vdr-address-form>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"!addressForm.valid || !addressForm.touched\"\n class=\"btn btn-primary\"\n >\n {{ 'common.update' | translate }}\n </button>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { CustomFieldConfig, GetAvailableCountriesQuery, ModalService } from '@vendure/admin-ui/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { AddressDetailDialogComponent } from '../address-detail-dialog/address-detail-dialog.component';\n\n@Component({\n selector: 'vdr-address-card',\n templateUrl: './address-card.component.html',\n styleUrls: ['./address-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AddressCardComponent implements OnInit, OnChanges {\n @Input() addressForm: UntypedFormGroup;\n @Input() customFields: CustomFieldConfig;\n @Input() availableCountries: GetAvailableCountriesQuery['countries']['items'] = [];\n @Input() isDefaultBilling: string;\n @Input() isDefaultShipping: string;\n @Input() editable = true;\n @Output() setAsDefaultShipping = new EventEmitter<string>();\n @Output() setAsDefaultBilling = new EventEmitter<string>();\n @Output() deleteAddress = new EventEmitter<string>();\n private dataDependenciesPopulated = new BehaviorSubject<boolean>(false);\n\n constructor(\n private modalService: ModalService,\n private changeDetector: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n const streetLine1 = this.addressForm.get('streetLine1') as UntypedFormControl;\n // Make the address dialog display automatically if there is no address line\n // as is the case when adding a new address.\n if (!streetLine1.value) {\n this.dataDependenciesPopulated\n .pipe(\n filter(value => value),\n take(1),\n )\n .subscribe(() => {\n this.editAddress();\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.customFields != null && this.availableCountries != null) {\n this.dataDependenciesPopulated.next(true);\n }\n }\n\n getCountryName(countryCode: string) {\n if (!this.availableCountries) {\n return '';\n }\n const match = this.availableCountries.find(c => c.code === countryCode);\n return match ? match.name : '';\n }\n\n setAsDefaultBillingAddress() {\n this.setAsDefaultBilling.emit(this.addressForm.value.id);\n this.addressForm.markAsDirty();\n }\n\n setAsDefaultShippingAddress() {\n this.setAsDefaultShipping.emit(this.addressForm.value.id);\n this.addressForm.markAsDirty();\n }\n\n delete() {\n this.deleteAddress.emit(this.addressForm.value.id);\n this.addressForm.markAsDirty();\n }\n\n editAddress() {\n this.modalService\n .fromComponent(AddressDetailDialogComponent, {\n locals: {\n addressForm: this.addressForm,\n customFields: this.customFields,\n availableCountries: this.availableCountries,\n },\n size: 'md',\n closable: true,\n })\n .subscribe(() => {\n this.changeDetector.markForCheck();\n });\n }\n}\n","<div class=\"card\" *ngIf=\"addressForm.value as address\">\n <div class=\"card-header\">\n <div class=\"address-title\">\n <span class=\"street-line\" *ngIf=\"address.streetLine1\">{{ address.streetLine1 }},</span>\n {{ address.countryCode }}\n </div>\n <div class=\"default-controls\">\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultShipping\">\n <clr-icon shape=\"truck\"></clr-icon>\n {{ 'customer.default-shipping-address' | translate }}\n </vdr-chip>\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultBilling\">\n <clr-icon shape=\"credit-card\"></clr-icon>\n {{ 'customer.default-billing-address' | translate }}\n </vdr-chip>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-text\">\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\n </div>\n </div>\n <div class=\"card-footer\">\n <div class=\"address-actions\">\n <vdr-entity-info [entity]=\"address\"></vdr-entity-info>\n <ng-container *ngIf=\"editable\">\n <button class=\"button-small\" (click)=\"editAddress()\">\n {{ 'common.edit' | translate }}\n </button>\n <vdr-dropdown>\n <button type=\"button\" class=\"button-small\" vdrDropdownTrigger>\n {{ 'common.more' | translate }}\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu>\n <button\n vdrDropdownItem\n [disabled]=\"isDefaultShipping\"\n (click)=\"setAsDefaultShippingAddress()\"\n >\n {{ 'customer.set-as-default-shipping-address' | translate }}\n </button>\n <button\n vdrDropdownItem\n [disabled]=\"isDefaultBilling\"\n (click)=\"setAsDefaultBillingAddress()\"\n >\n {{ 'customer.set-as-default-billing-address' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button type=\"button\" (click)=\"delete()\" vdrDropdownItem>\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </ng-container>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { DataService, Dialog, GetCustomerGroupsQuery, ItemOf } from '@vendure/admin-ui/core';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'vdr-select-customer-group-dialog',\n templateUrl: './select-customer-group-dialog.component.html',\n styleUrls: ['./select-customer-group-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SelectCustomerGroupDialogComponent implements Dialog<string[]>, OnInit {\n resolveWith: (result?: string[]) => void;\n groups$: Observable<Array<ItemOf<GetCustomerGroupsQuery, 'customerGroups'>>>;\n selectedGroupIds: string[] = [];\n\n constructor(private dataService: DataService) {}\n\n ngOnInit() {\n this.groups$ = this.dataService.customer\n .getCustomerGroupList()\n .mapStream(res => res.customerGroups.items);\n }\n\n cancel() {\n this.resolveWith();\n }\n\n add() {\n this.resolveWith(this.selectedGroupIds);\n }\n}\n","<ng-template vdrDialogTitle>\n {{ 'customer.add-customer-to-group' | translate }}\n</ng-template>\n\n<ng-select\n [items]=\"groups$ | async\"\n appendTo=\"body\"\n [addTag]=\"false\"\n [multiple]=\"true\"\n bindValue=\"id\"\n [(ngModel)]=\"selectedGroupIds\"\n [clearable]=\"true\"\n [searchable]=\"false\"\n>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> × </span>\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\n </ng-template>\n</ng-select>\n\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedGroupIds.length\" class=\"btn btn-primary\">\n {{ 'customer.add-customer-to-groups-with-count' | translate: {count: selectedGroupIds.length} }}\n </button>\n</ng-template>\n","import {\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n CustomerFragment,\n CustomerHistoryEntryComponent,\n HistoryEntryComponentService,\n TimelineHistoryEntry,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-customer-history-entry-host',\n template: `\n <vdr-timeline-entry\n [displayType]=\"instance.getDisplayType(entry)\"\n [iconShape]=\"instance.getIconShape && instance.getIconShape(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"instance.getName && instance.getName(entry)\"\n [featured]=\"instance.isFeatured(entry)\"\n [collapsed]=\"!expanded && !instance.isFeatured(entry)\"\n (expandClick)=\"expandClick.emit()\"\n >\n <div #portal></div>\n </vdr-timeline-entry>\n `,\n exportAs: 'historyEntry',\n standalone: false,\n})\nexport class CustomerHistoryEntryHostComponent implements OnInit, OnDestroy {\n @Input() entry: TimelineHistoryEntry;\n @Input() customer: CustomerFragment;\n @Input() expanded: boolean;\n @Output() expandClick = new EventEmitter<void>();\n @ViewChild('portal', { static: true, read: ViewContainerRef }) portalRef: ViewContainerRef;\n instance: CustomerHistoryEntryComponent;\n private componentRef: ComponentRef<CustomerHistoryEntryComponent>;\n\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\n\n ngOnInit(): void {\n const componentType = this.historyEntryComponentService.getComponent(\n this.entry.type,\n ) as Type<CustomerHistoryEntryComponent>;\n\n const componentRef = this.portalRef.createComponent(componentType);\n componentRef.instance.entry = this.entry;\n componentRef.instance.customer = this.customer;\n this.instance = componentRef.instance;\n this.componentRef = componentRef;\n }\n\n ngOnDestroy() {\n this.componentRef?.destroy();\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n CustomerFragment,\n GetCustomerHistoryQuery,\n HistoryEntryComponentService,\n HistoryEntryType,\n TimelineDisplayType,\n TimelineHistoryEntry,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-customer-history',\n templateUrl: './customer-history.component.html',\n styleUrls: ['./customer-history.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerHistoryComponent {\n @Input() customer: CustomerFragment;\n @Input() history: TimelineHistoryEntry[];\n @Output() addNote = new EventEmitter<{ note: string }>();\n @Output() updateNote = new EventEmitter<TimelineHistoryEntry>();\n @Output() deleteNote = new EventEmitter<TimelineHistoryEntry>();\n note = '';\n expanded = false;\n readonly type = HistoryEntryType;\n\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\n\n hasCustomComponent(type: string): boolean {\n return !!this.historyEntryComponentService.getComponent(type);\n }\n\n getDisplayType(entry: TimelineHistoryEntry): TimelineDisplayType {\n switch (entry.type) {\n case HistoryEntryType.CUSTOMER_VERIFIED:\n case HistoryEntryType.CUSTOMER_EMAIL_UPDATE_VERIFIED:\n case HistoryEntryType.CUSTOMER_PASSWORD_RESET_VERIFIED:\n return 'success';\n case HistoryEntryType.CUSTOMER_REGISTERED:\n return 'muted';\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\n return 'error';\n default:\n return 'default';\n }\n }\n\n getTimelineIcon(entry: TimelineHistoryEntry): string | [string, string] | undefined {\n switch (entry.type) {\n case HistoryEntryType.CUSTOMER_REGISTERED:\n return 'user';\n case HistoryEntryType.CUSTOMER_VERIFIED:\n return ['assign-user', 'is-solid'];\n case HistoryEntryType.CUSTOMER_NOTE:\n return 'note';\n case HistoryEntryType.CUSTOMER_ADDED_TO_GROUP:\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\n return 'users';\n }\n }\n\n isFeatured(entry: TimelineHistoryEntry): boolean {\n switch (entry.type) {\n case HistoryEntryType.CUSTOMER_REGISTERED:\n case HistoryEntryType.CUSTOMER_VERIFIED:\n return true;\n default:\n return false;\n }\n }\n\n getName(entry: TimelineHistoryEntry): string {\n const { administrator } = entry;\n if (administrator) {\n return `${administrator.firstName} ${administrator.lastName}`;\n } else {\n return `${this.customer.firstName} ${this.customer.lastName}`;\n }\n }\n\n addNoteToCustomer() {\n this.addNote.emit({ note: this.note });\n this.note = '';\n }\n}\n","<div class=\"entry-list\">\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\" *vdrIfPermissions=\"'UpdateCustomer'\"\n [isFirst]=\"true\">\n <div class=\"note-entry\">\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToCustomer()\">\n {{ 'order.add-note' | translate }}\n </button>\n </div>\n </vdr-timeline-entry>\n <ng-container *ngFor=\"let entry of history\">\n <vdr-customer-history-entry-host\n *ngIf=\"hasCustomComponent(entry.type); else defaultComponents\"\n [customer]=\"customer\"\n [entry]=\"entry\"\n [expanded]=\"expanded\"\n (expandClick)=\"expanded = !expanded\"\n ></vdr-customer-history-entry-host>\n <ng-template #defaultComponents>\n <vdr-timeline-entry\n [displayType]=\"getDisplayType(entry)\"\n [iconShape]=\"getTimelineIcon(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"getName(entry)\"\n [featured]=\"isFeatured(entry)\"\n >\n <ng-container [ngSwitch]=\"entry.type\">\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REGISTERED\">\n <div class=\"title\">\n {{ 'customer.history-customer-registered' | translate }}\n </div>\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\n {{ 'customer.history-using-native-auth-strategy' | translate }}\n </ng-container>\n <ng-template #namedStrategy>\n {{\n 'customer.history-using-external-auth-strategy'\n | translate: { strategy: entry.data.strategy }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_VERIFIED\">\n <div class=\"title\">\n {{ 'customer.history-customer-verified' | translate }}\n </div>\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\n {{ 'customer.history-using-native-auth-strategy' | translate }}\n </ng-container>\n <ng-template #namedStrategy>\n {{\n 'customer.history-using-external-auth-strategy'\n | translate: { strategy: entry.data.strategy }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_DETAIL_UPDATED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-detail-updated' | translate }}\n <vdr-history-entry-detail>\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDED_TO_GROUP\">\n {{\n 'customer.history-customer-added-to-group'\n | translate: { groupName: entry.data.groupName }\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REMOVED_FROM_GROUP\">\n {{\n 'customer.history-customer-removed-from-group'\n | translate: { groupName: entry.data.groupName }\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_CREATED\">\n {{ 'customer.history-customer-address-created' | translate }}\n <div class=\"flex\">\n <div class=\"address-string\">{{ entry.data.address }}</div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_UPDATED\">\n {{ 'customer.history-customer-address-updated' | translate }}\n <div class=\"flex\">\n <div class=\"address-string\">{{ entry.data.address }}</div>\n <vdr-history-entry-detail>\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_DELETED\">\n {{ 'customer.history-customer-address-deleted' | translate }}\n <div class=\"address-string\">{{ entry.data.address }}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_UPDATED\">\n {{ 'customer.history-customer-password-updated' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_REQUESTED\">\n {{ 'customer.history-customer-password-reset-requested' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_VERIFIED\">\n {{ 'customer.history-customer-password-reset-verified' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_REQUESTED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-email-update-requested' | translate }}\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\n entry.data.oldEmailAddress\n }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\n entry.data.newEmailAddress\n }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_VERIFIED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-email-update-verified' | translate }}\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\n entry.data.oldEmailAddress\n }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\n entry.data.newEmailAddress\n }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_NOTE\">\n <div class=\"flex\">\n <div class=\"note-text\">\n {{ entry.data.note }}\n </div>\n <div class=\"flex-spacer\"></div>\n <vdr-dropdown>\n <button class=\"button-small ml-1\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <button\n vdrDropdownItem\n (click)=\"updateNote.emit(entry)\"\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n {{ 'common.edit' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button\n vdrDropdownItem\n (click)=\"deleteNote.emit(entry)\"\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\n >\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"title\">\n {{ entry.type | translate }}\n </div>\n <vdr-history-entry-detail *ngIf=\"entry.data\">\n <vdr-object-tree [value]=\"entry.data\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </ng-container>\n </ng-container>\n </vdr-timeline-entry>\n </ng-template>\n </ng-container>\n <vdr-timeline-entry [isLast]=\"true\"></vdr-timeline-entry>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, UntypedFormArray, UntypedFormControl, Validators } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CreateAddressInput,\n CreateCustomerAddressMutation,\n CreateCustomerInput,\n CUSTOMER_FRAGMENT,\n CustomerDetailQueryDocument,\n CustomerDetailQueryQuery,\n DataService,\n DeleteCustomerAddressMutation,\n EditNoteDialogComponent,\n GetAvailableCountriesQuery,\n GetCustomerHistoryQuery,\n getCustomFieldsDefaults,\n ModalService,\n NotificationService,\n SortOrder,\n TimelineHistoryEntry,\n TypedBaseDetailComponent,\n UpdateCustomerAddressMutation,\n UpdateCustomerInput,\n UpdateCustomerMutation,\n} from '@vendure/admin-ui/core';\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport { gql } from 'apollo-angular';\nimport { EMPTY, forkJoin, from, Observable, Subject } from 'rxjs';\nimport {\n concatMap,\n filter,\n map,\n merge,\n mergeMap,\n shareReplay,\n startWith,\n switchMap,\n take,\n} from 'rxjs/operators';\n\nimport { SelectCustomerGroupDialogComponent } from '../select-customer-group-dialog/select-customer-group-dialog.component';\n\ntype CustomerWithOrders = NonNullable<CustomerDetailQueryQuery['customer']>;\n\nexport const CUSTOMER_DETAIL_QUERY = gql`\n query CustomerDetailQuery($id: ID!, $orderListOptions: OrderListOptions) {\n customer(id: $id) {\n ...Customer\n groups {\n id\n name\n }\n orders(options: $orderListOptions) {\n items {\n id\n code\n type\n state\n total\n totalWithTax\n currencyCode\n createdAt\n updatedAt\n orderPlacedAt\n }\n totalItems\n }\n }\n }\n ${CUSTOMER_FRAGMENT}\n`;\n\n@Component({\n selector: 'vdr-customer-detail',\n templateUrl: './customer-detail.component.html',\n styleUrls: ['./customer-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerDetailComponent\n extends TypedBaseDetailComponent<typeof CustomerDetailQueryDocument, 'customer'>\n implements OnInit, OnDestroy\n{\n customFields = this.getCustomFieldConfig('Customer');\n addressCustomFields = this.getCustomFieldConfig('Address');\n detailForm = this.formBuilder.group({\n customer: this.formBuilder.group({\n title: '',\n firstName: ['', Validators.required],\n lastName: ['', Validators.required],\n phoneNumber: '',\n emailAddress: ['', [Validators.required, Validators.email]],\n password: '',\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n }),\n addresses: new UntypedFormArray([]),\n });\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\n orders$: Observable<CustomerWithOrders['orders']['items']>;\n ordersCount$: Observable<number>;\n history$: Observable<NonNullable<GetCustomerHistoryQuery['customer']>['history']['items'] | undefined>;\n fetchHistory = new Subject<void>();\n defaultShippingAddressId: string;\n defaultBillingAddressId: string;\n addressesToDeleteIds = new Set<string>();\n addressDefaultsUpdated = false;\n ordersPerPage = 10;\n currentOrdersPage = 1;\n private orderListUpdates$ = new Subject<CustomerWithOrders>();\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private formBuilder: FormBuilder,\n protected dataService: DataService,\n private modalService: ModalService,\n private notificationService: NotificationService,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n this.availableCountries$ = this.dataService.settings\n .getAvailableCountries()\n .mapSingle(result => result.countries.items)\n .pipe(shareReplay(1));\n\n const customerWithUpdates$ = this.entity$.pipe(merge(this.orderListUpdates$));\n this.orders$ = customerWithUpdates$.pipe(map(customer => customer.orders.items));\n this.ordersCount$ = this.entity$.pipe(map(customer => customer.orders.totalItems));\n this.history$ = this.fetchHistory.pipe(\n startWith(null),\n switchMap(() =>\n this.dataService.customer\n .getCustomerHistory(this.id, {\n sort: {\n createdAt: SortOrder.DESC,\n },\n })\n .mapStream(data => data.customer?.history.items),\n ),\n );\n }\n\n ngOnDestroy() {\n this.destroy();\n this.orderListUpdates$.complete();\n }\n\n getAddressFormControls(): UntypedFormControl[] {\n const formArray = this.detailForm.get(['addresses']) as UntypedFormArray;\n return formArray.controls as UntypedFormControl[];\n }\n\n setDefaultBillingAddressId(id: string) {\n this.defaultBillingAddressId = id;\n this.addressDefaultsUpdated = true;\n }\n\n setDefaultShippingAddressId(id: string) {\n this.defaultShippingAddressId = id;\n this.addressDefaultsUpdated = true;\n }\n\n toggleDeleteAddress(id: string) {\n if (this.addressesToDeleteIds.has(id)) {\n this.addressesToDeleteIds.delete(id);\n } else {\n this.addressesToDeleteIds.add(id);\n }\n }\n\n addAddress() {\n const addressFormArray = this.detailForm.get('addresses') as UntypedFormArray;\n const newAddress = this.formBuilder.group({\n fullName: '',\n company: '',\n streetLine1: ['', Validators.required],\n streetLine2: '',\n city: '',\n province: '',\n postalCode: '',\n countryCode: ['', Validators.required],\n phoneNumber: '',\n defaultShippingAddress: false,\n defaultBillingAddress: false,\n customFields: this.formBuilder.group(\n this.addressCustomFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\n ),\n });\n addressFormArray.push(newAddress);\n }\n\n setOrderItemsPerPage(itemsPerPage: number) {\n this.ordersPerPage = +itemsPerPage;\n this.fetchOrdersList();\n }\n\n setOrderCurrentPage(page: number) {\n this.currentOrdersPage = +page;\n this.fetchOrdersList();\n }\n\n create() {\n const customerForm = this.detailForm.get('customer');\n if (!customerForm) {\n return;\n }\n const { title, emailAddress, firstName, lastName, phoneNumber, password } = customerForm.value;\n const customFields = customerForm.get('customFields')?.value;\n if (!emailAddress || !firstName || !lastName) {\n return;\n }\n const customer: CreateCustomerInput = {\n title,\n emailAddress,\n firstName,\n lastName,\n phoneNumber,\n customFields,\n };\n this.dataService.customer.createCustomer(customer, password).subscribe(({ createCustomer }) => {\n switch (createCustomer.__typename) {\n case 'Customer':\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'Customer',\n });\n if (createCustomer.emailAddress && !password) {\n this.notificationService.notify({\n message: _('customer.email-verification-sent'),\n translationVars: { emailAddress },\n type: 'info',\n duration: 10000,\n });\n }\n this.detailForm.markAsPristine();\n this.addressDefaultsUpdated = false;\n this.changeDetector.markForCheck();\n this.router.navigate(['../', createCustomer.id], { relativeTo: this.route });\n break;\n case 'EmailAddressConflictError':\n this.notificationService.error(createCustomer.message);\n }\n });\n }\n\n save() {\n this.entity$\n .pipe(\n take(1),\n mergeMap(({ id }) => {\n const saveOperations: Array<\n Observable<\n | UpdateCustomerMutation['updateCustomer']\n | CreateCustomerAddressMutation['createCustomerAddress']\n | UpdateCustomerAddressMutation['updateCustomerAddress']\n | DeleteCustomerAddressMutation['deleteCustomerAddress']\n >\n > = [];\n const customerForm = this.detailForm.get('customer');\n if (customerForm && customerForm.dirty) {\n const formValue = customerForm.value;\n const customFields = customerForm.get('customFields')?.value;\n const customer: UpdateCustomerInput = {\n id,\n title: formValue.title,\n emailAddress: formValue.emailAddress,\n firstName: formValue.firstName,\n lastName: formValue.lastName,\n phoneNumber: formValue.phoneNumber,\n customFields,\n };\n saveOperations.push(\n this.dataService.customer\n .updateCustomer(customer)\n .pipe(map(res => res.updateCustomer)),\n );\n }\n const addressFormArray = this.detailForm.get('addresses') as UntypedFormArray;\n if ((addressFormArray && addressFormArray.dirty) || this.addressDefaultsUpdated) {\n for (const addressControl of addressFormArray.controls) {\n if (addressControl.dirty || this.addressDefaultsUpdated) {\n const address = addressControl.value;\n const input: CreateAddressInput = {\n fullName: address.fullName,\n company: address.company,\n streetLine1: address.streetLine1,\n streetLine2: address.streetLine2,\n city: address.city,\n province: address.province,\n postalCode: address.postalCode,\n countryCode: address.countryCode,\n phoneNumber: address.phoneNumber,\n defaultShippingAddress: this.defaultShippingAddressId === address.id,\n defaultBillingAddress: this.defaultBillingAddressId === address.id,\n customFields: address.customFields,\n };\n if (!address.id) {\n saveOperations.push(\n this.dataService.customer\n .createCustomerAddress(id, input)\n .pipe(map(res => res.createCustomerAddress)),\n );\n } else {\n if (this.addressesToDeleteIds.has(address.id)) {\n saveOperations.push(\n this.dataService.customer\n .deleteCustomerAddress(address.id)\n .pipe(map(res => res.deleteCustomerAddress)),\n );\n } else {\n saveOperations.push(\n this.dataService.customer\n .updateCustomerAddress({\n ...input,\n id: address.id,\n })\n .pipe(map(res => res.updateCustomerAddress)),\n );\n }\n }\n }\n }\n }\n return forkJoin(saveOperations);\n }),\n )\n .subscribe(\n data => {\n let notified = false;\n for (const result of data) {\n switch (result.__typename) {\n case 'Customer':\n case 'Address':\n case 'Success':\n if (!notified) {\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'Customer',\n });\n notified = true;\n this.detailForm.markAsPristine();\n this.addressDefaultsUpdated = false;\n this.changeDetector.markForCheck();\n this.fetchHistory.next();\n this.refreshCustomer().subscribe();\n }\n break;\n case 'EmailAddressConflictError':\n this.notificationService.error(result.message);\n break;\n }\n }\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'Customer',\n });\n },\n );\n }\n\n addToGroup() {\n this.modalService\n .fromComponent(SelectCustomerGroupDialogComponent, {\n size: 'md',\n })\n .pipe(\n switchMap(groupIds => (groupIds ? from(groupIds) : EMPTY)),\n concatMap(groupId => this.dataService.customer.addCustomersToGroup(groupId, [this.id])),\n )\n .subscribe({\n next: res => {\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\n customerCount: 1,\n groupName: res.addCustomersToGroup.name,\n });\n },\n complete: () => {\n this.refreshCustomer().subscribe();\n this.fetchHistory.next();\n },\n });\n }\n\n removeFromGroup(group: CustomerWithOrders['groups'][number]) {\n this.modalService\n .dialog({\n title: _('customer.confirm-remove-customer-from-group'),\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(response =>\n response\n ? this.dataService.customer.removeCustomersFromGroup(group.id, [this.id])\n : EMPTY,\n ),\n switchMap(() => this.refreshCustomer()),\n )\n .subscribe(result => {\n this.notificationService.success(_(`customer.remove-customers-from-group-success`), {\n customerCount: 1,\n groupName: group.name,\n });\n this.fetchHistory.next();\n });\n }\n\n addNoteToCustomer({ note }: { note: string }) {\n this.dataService.customer.addNoteToCustomer(this.id, note).subscribe(() => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'Note',\n });\n });\n }\n\n updateNote(entry: TimelineHistoryEntry) {\n this.modalService\n .fromComponent(EditNoteDialogComponent, {\n closable: true,\n locals: {\n displayPrivacyControls: false,\n note: entry.data.note,\n },\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.dataService.customer.updateCustomerNote({\n noteId: entry.id,\n note: result.note,\n });\n } else {\n return EMPTY;\n }\n }),\n )\n .subscribe(result => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'Note',\n });\n });\n }\n\n deleteNote(entry: TimelineHistoryEntry) {\n return this.modalService\n .dialog({\n title: _('common.confirm-delete-note'),\n body: entry.data.note,\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(switchMap(res => (res ? this.dataService.customer.deleteCustomerNote(entry.id) : EMPTY)))\n .subscribe(() => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'Note',\n });\n });\n }\n\n protected setFormValues(entity: CustomerWithOrders): void {\n const customerGroup = this.detailForm.get('customer');\n if (customerGroup) {\n customerGroup.patchValue({\n title: entity.title ?? null,\n firstName: entity.firstName,\n lastName: entity.lastName,\n phoneNumber: entity.phoneNumber ?? null,\n emailAddress: entity.emailAddress,\n password: '',\n customFields: {},\n });\n }\n\n if (entity.addresses) {\n const addressesArray = new UntypedFormArray([]);\n for (const address of entity.addresses) {\n const { customFields, ...rest } = address as typeof address & { customFields: any };\n const addressGroup = this.formBuilder.group({\n ...rest,\n countryCode: address.country.code,\n customFields: this.formBuilder.group(\n this.addressCustomFields.reduce(\n (hash, field) => ({\n ...hash,\n [field.name]: address['customFields'][field.name],\n }),\n {},\n ),\n ),\n });\n addressesArray.push(addressGroup);\n if (address.defaultShippingAddress) {\n this.defaultShippingAddressId = address.id;\n }\n if (address.defaultBillingAddress) {\n this.defaultBillingAddressId = address.id;\n }\n }\n this.detailForm.setControl('addresses', addressesArray);\n }\n\n if (this.customFields.length) {\n this.setCustomFieldFormValues(\n this.customFields,\n this.detailForm.get(['customer', 'customFields']),\n entity,\n );\n }\n this.changeDetector.markForCheck();\n }\n\n /**\n * Refetch the customer with the current order list settings.\n */\n private fetchOrdersList() {\n this.dataService\n .query(CustomerDetailQueryDocument, {\n id: this.id,\n orderListOptions: {\n take: this.ordersPerPage,\n skip: (this.currentOrdersPage - 1) * this.ordersPerPage,\n sort: { orderPlacedAt: SortOrder.DESC },\n },\n })\n .single$.pipe(\n map(data => data.customer),\n filter(notNullOrUndefined),\n )\n .subscribe(result => this.orderListUpdates$.next(result));\n }\n\n private refreshCustomer() {\n return this.dataService.query(CustomerDetailQueryDocument, {\n id: this.id,\n orderListOptions: { take: 0 },\n }).single$;\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"'UpdateCustomer'\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"customer-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card *ngIf=\"entity$ | async as customer\">\n <vdr-customer-status-label [customer]=\"customer\"></vdr-customer-status-label>\n <vdr-labeled-data\n class=\"last-login\"\n *ngIf=\"customer.user?.lastLogin as lastLogin\"\n [label]=\"'customer.last-login' | translate\"\n >\n <time [dateTime]=\"lastLogin\">{{ lastLogin | timeAgo }}</time>\n </vdr-labeled-data>\n </vdr-card>\n <vdr-card\n [title]=\"'customer.customer-groups' | translate\"\n *ngIf=\"(entity$ | async)?.groups as groups\"\n >\n <div *ngIf=\"groups.length; else noGroups\">\n <vdr-chip\n *ngFor=\"let group of groups\"\n [colorFrom]=\"group.id\"\n icon=\"times\"\n (iconClick)=\"removeFromGroup(group)\"\n >{{ group.name }}</vdr-chip\n >\n </div>\n <ng-template #noGroups>\n <span class=\"color-weight-400\">\n {{ 'customer.not-a-member-of-any-groups' | translate }}\n </span>\n </ng-template>\n <div>\n <button\n class=\"button-small mt-1\"\n (click)=\"addToGroup()\"\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.add-customer-to-group' | translate }}\n </button>\n </div>\n </vdr-card>\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field\n [label]=\"'customer.title' | translate\"\n for=\"title\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\n </vdr-form-field>\n <div><!-- spacer --></div>\n <vdr-form-field\n [label]=\"'customer.first-name' | translate\"\n for=\"firstName\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.last-name' | translate\"\n for=\"lastName\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.email-address' | translate\"\n for=\"emailAddress\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.phone-number' | translate\"\n for=\"phoneNumber\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.password' | translate\"\n for=\"password\"\n *ngIf=\"isNew$ | async\"\n >\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card\n formGroupName=\"customFields\"\n *ngIf=\"customFields.length\"\n [title]=\"'common.custom-fields' | translate\"\n >\n <vdr-tabbed-custom-fields\n entityName=\"Customer\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customer.customFields')\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n </form>\n <vdr-custom-detail-component-host\n locationId=\"customer-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n <ng-container *ngIf=\"!(isNew$ | async)\">\n <vdr-card [title]=\"'customer.addresses' | translate\">\n <div class=\"form-grid\">\n <vdr-address-card\n *ngFor=\"let addressForm of getAddressFormControls()\"\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\n [availableCountries]=\"availableCountries$ | async\"\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\n [addressForm]=\"addressForm\"\n [customFields]=\"addressCustomFields\"\n [editable]=\"\n (['UpdateCustomer'] | hasPermission) &&\n !addressesToDeleteIds.has(addressForm.value.id)\n \"\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\n (deleteAddress)=\"toggleDeleteAddress($event)\"\n ></vdr-address-card>\n </div>\n <button\n class=\"btn btn-secondary mt-2\"\n (click)=\"addAddress()\"\n *vdrIfPermissions=\"'UpdateCustomer'\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-address' | translate }}\n </button>\n </vdr-card>\n <vdr-card [title]=\"'customer.orders' | translate\" [paddingX]=\"false\">\n <vdr-data-table-2\n id=\"customer-order-list\"\n [items]=\"orders$ | async\"\n [itemsPerPage]=\"ordersPerPage\"\n [totalItems]=\"ordersCount$ | async\"\n [currentPage]=\"currentOrdersPage\"\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\n (pageChange)=\"setOrderCurrentPage($event)\"\n >\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-order=\"item\">\n {{ order.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\"\n id=\"created-at\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-order=\"item\">\n {{ order.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\n <ng-template let-order=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/orders', order.id]\"\n ><span>{{ order.code }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'order.order-type' | translate\"\n id=\"order-type\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-order=\"item\">\n <vdr-chip>{{ order.type }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\">\n <ng-template let-order=\"item\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\n <ng-template let-order=\"item\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\">\n <ng-template let-order=\"item\">\n {{ order.updatedAt | timeAgo }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\n <ng-template let-order=\"item\">\n {{ order.orderPlacedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of customFields\"\n [customField]=\"customField\"\n />\n </vdr-data-table-2>\n </vdr-card>\n <vdr-card [title]=\"'customer.customer-history' | translate\">\n <vdr-customer-history\n [customer]=\"entity$ | async\"\n [history]=\"history$ | async\"\n (addNote)=\"addNoteToCustomer($event)\"\n (updateNote)=\"updateNote($event)\"\n (deleteNote)=\"deleteNote($event)\"\n ></vdr-customer-history>\n </vdr-card>\n </ng-container>\n </vdr-page-block>\n</vdr-page-detail-layout>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { ResultOf } from '@graphql-typed-document-node/core';\nimport {\n DataService,\n GetCustomerGroupDetailDocument,\n getCustomFieldsDefaults,\n ModalService,\n NotificationService,\n TypedBaseDetailComponent,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nexport const CUSTOMER_GROUP_DETAIL_QUERY = gql`\n query GetCustomerGroupDetail($id: ID!) {\n customerGroup(id: $id) {\n ...CustomerGroupDetail\n }\n }\n fragment CustomerGroupDetail on CustomerGroup {\n id\n createdAt\n updatedAt\n name\n }\n`;\n\n@Component({\n selector: 'vdr-customer-group-detail',\n templateUrl: './customer-group-detail.component.html',\n styleUrls: ['./customer-group-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerGroupDetailComponent\n extends TypedBaseDetailComponent<typeof GetCustomerGroupDetailDocument, 'customerGroup'>\n implements OnInit\n{\n customFields = this.getCustomFieldConfig('CustomerGroup');\n detailForm = this.formBuilder.group({\n name: '',\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n\n constructor(\n private formBuilder: FormBuilder,\n protected dataService: DataService,\n private modalService: ModalService,\n private notificationService: NotificationService,\n ) {\n super();\n }\n\n ngOnInit() {\n super.init();\n }\n\n create() {\n const formvalue = this.detailForm.value;\n if (formvalue.name) {\n this.dataService.customer\n .createCustomerGroup({\n name: formvalue.name,\n customFields: formvalue.customFields,\n customerIds: [],\n })\n .subscribe(\n ({ createCustomerGroup }) => {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'CustomerGroup',\n });\n this.detailForm.markAsPristine();\n this.router.navigate(['../', createCustomerGroup.id], { relativeTo: this.route });\n },\n err => {\n this.notificationService.error(_('common.notify-create-error'), {\n entity: 'CustomerGroup',\n });\n },\n );\n }\n }\n\n save() {\n const formValue = this.detailForm.value;\n this.dataService.customer.updateCustomerGroup({ id: this.id, ...formValue }).subscribe(\n () => {\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'CustomerGroup',\n });\n this.detailForm.markAsPristine();\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'CustomerGroup',\n });\n },\n );\n }\n\n protected setFormValues(\n entity: NonNullable<ResultOf<typeof GetCustomerGroupDetailDocument>['customerGroup']>,\n ) {\n this.detailForm.patchValue({\n name: entity.name,\n });\n\n if (this.customFields.length) {\n const customFieldsGroup = this.detailForm.get(['customFields']) as UntypedFormGroup;\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);\n }\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-group-detail\"></vdr-action-bar-items>\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"'UpdateCustomer'\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<form class=\"form\" [formGroup]=\"detailForm\">\n <vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card *ngIf=\"entity$ | async as entity\">\n <vdr-page-entity-info [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input id=\"name\" type=\"text\" formControlName=\"name\" />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card\n formGroupName=\"customFields\"\n *ngIf=\"customFields.length\"\n [title]=\"'common.custom-fields' | translate\"\n >\n <vdr-tabbed-custom-fields\n entityName=\"CustomerGroup\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"customer-group-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n </vdr-page-block>\n </vdr-page-detail-layout>\n</form>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport {\n CreateCustomerGroupInput,\n CustomFieldConfig,\n Dialog,\n getCustomFieldsDefaults,\n ServerConfigService,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-customer-group-detail-dialog',\n templateUrl: './customer-group-detail-dialog.component.html',\n styleUrls: ['./customer-group-detail-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerGroupDetailDialogComponent implements Dialog<CreateCustomerGroupInput>, OnInit {\n group: { id?: string; name: string; customFields?: { [name: string]: any } };\n resolveWith: (result?: CreateCustomerGroupInput) => void;\n customFields: CustomFieldConfig[];\n form: UntypedFormGroup;\n\n constructor(\n private serverConfigService: ServerConfigService,\n private formBuilder: UntypedFormBuilder,\n ) {\n this.customFields = this.serverConfigService.getCustomFieldsFor('CustomerGroup');\n }\n\n ngOnInit() {\n this.form = this.formBuilder.group({\n name: [this.group.name, Validators.required],\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n if (this.customFields.length) {\n const customFieldsGroup = this.form.get('customFields') as UntypedFormGroup;\n\n for (const fieldDef of this.customFields) {\n const key = fieldDef.name;\n const value = this.group.customFields?.[key];\n const control = customFieldsGroup.get(key);\n if (control) {\n control.patchValue(value);\n }\n }\n }\n }\n\n cancel() {\n this.resolveWith();\n }\n\n save() {\n this.resolveWith(this.form.value);\n }\n}\n","<ng-template vdrDialogTitle>\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\n</ng-template>\n<form [formGroup]=\"form\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(['CreateCustomerGroup', 'UpdateCustomerGroup'] | hasPermission)\"\n />\n </vdr-form-field>\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\n <label>{{ 'common.custom-fields' | translate }}</label>\n <vdr-tabbed-custom-fields\n entityName=\"CustomerGroup\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"form.get('customFields')\"\n ></vdr-tabbed-custom-fields>\n </section>\n</form>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"save()\" [disabled]=\"!form.valid\" class=\"btn btn-primary\">\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\n </button>\n</ng-template>\n","import { createBulkDeleteAction, GetCustomerGroupsQuery, ItemOf, Permission } from '@vendure/admin-ui/core';\nimport { map } from 'rxjs/operators';\n\nexport const deleteCustomerGroupsBulkAction = createBulkDeleteAction<\n ItemOf<GetCustomerGroupsQuery, 'customerGroups'>\n>({\n location: 'customer-group-list',\n requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomerGroup),\n getItemName: item => item.name,\n bulkDelete: (dataService, ids) =>\n dataService.customer.deleteCustomerGroups(ids).pipe(map(res => res.deleteCustomerGroups)),\n});\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CUSTOMER_GROUP_FRAGMENT,\n DataService,\n GetCustomerGroupListDocument,\n GetCustomerGroupsQuery,\n GetCustomerGroupWithCustomersQuery,\n ItemOf,\n ModalService,\n NotificationService,\n TypedBaseListComponent,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { BehaviorSubject, combineLatest, EMPTY, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, mapTo, switchMap } from 'rxjs/operators';\n\nimport { AddCustomerToGroupDialogComponent } from '../add-customer-to-group-dialog/add-customer-to-group-dialog.component';\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\n\nexport const GET_CUSTOMER_GROUP_LIST = gql`\n query GetCustomerGroupList($options: CustomerGroupListOptions) {\n customerGroups(options: $options) {\n items {\n ...CustomerGroup\n }\n totalItems\n }\n }\n ${CUSTOMER_GROUP_FRAGMENT}\n`;\n\n@Component({\n selector: 'vdr-customer-group-list',\n templateUrl: './customer-group-list.component.html',\n styleUrls: ['./customer-group-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerGroupListComponent\n extends TypedBaseListComponent<typeof GetCustomerGroupListDocument, 'customerGroups'>\n implements OnInit\n{\n dataTableListId = 'customer-group-list';\n readonly customFields = this.getCustomFieldConfig('CustomerGroup');\n activeGroup$: Observable<ItemOf<GetCustomerGroupsQuery, 'customerGroups'> | undefined>;\n activeIndex$: Observable<number>;\n listIsEmpty$: Observable<boolean>;\n members$: Observable<\n NonNullable<GetCustomerGroupWithCustomersQuery['customerGroup']>['customers']['items']\n >;\n membersTotal$: Observable<number>;\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\n skip: 0,\n take: 0,\n filterTerm: '',\n });\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilter({\n name: 'name',\n type: { kind: 'text' },\n label: _('common.name'),\n filterField: 'name',\n })\n .connectToRoute(this.route);\n\n readonly sorts = this.createSortCollection()\n .defaultSort('createdAt', 'DESC')\n .addSort({ name: 'createdAt' })\n .addSort({ name: 'updatedAt' })\n .addSort({ name: 'name' })\n .connectToRoute(this.route);\n private refreshActiveGroupMembers$ = new BehaviorSubject<void>(undefined);\n\n constructor(\n protected dataService: DataService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n public route: ActivatedRoute,\n protected router: Router,\n ) {\n super();\n super.configure({\n document: GetCustomerGroupListDocument,\n getItems: data => data.customerGroups,\n setVariables: (skip, take) => ({\n options: {\n skip,\n take,\n filter: {\n name: { contains: this.searchTermControl.value },\n ...this.filters.createFilterInput(),\n },\n sort: this.sorts.createSortInput(),\n },\n }),\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\n });\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n const activeGroupId$ = this.route.paramMap.pipe(\n map(pm => pm.get('contents')),\n distinctUntilChanged(),\n );\n this.listIsEmpty$ = this.items$.pipe(map(groups => groups.length === 0));\n this.activeGroup$ = combineLatest(this.items$, activeGroupId$).pipe(\n map(([groups, activeGroupId]) => {\n if (activeGroupId) {\n return groups.find(g => g.id === activeGroupId);\n }\n }),\n );\n this.activeIndex$ = combineLatest(this.items$, activeGroupId$).pipe(\n map(([groups, activeGroupId]) => {\n if (activeGroupId) {\n return groups.findIndex(g => g.id === activeGroupId);\n } else {\n return -1;\n }\n }),\n );\n const membersResult$ = combineLatest(\n this.activeGroup$,\n this.fetchGroupMembers$,\n this.refreshActiveGroupMembers$,\n ).pipe(\n switchMap(([activeGroup, { skip, take, filterTerm }]) => {\n if (activeGroup) {\n return this.dataService.customer\n .getCustomerGroupWithCustomers(activeGroup.id, {\n skip,\n take,\n filter: {\n emailAddress: {\n contains: filterTerm,\n },\n },\n })\n .mapStream(res => res.customerGroup?.customers);\n } else {\n return of(undefined);\n }\n }),\n );\n\n this.members$ = membersResult$.pipe(map(res => res?.items ?? []));\n this.membersTotal$ = membersResult$.pipe(map(res => res?.totalItems ?? 0));\n }\n\n closeMembers() {\n const params = { ...this.route.snapshot.params };\n delete params.contents;\n this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });\n }\n\n addToGroup(group: NonNullable<GetCustomerGroupWithCustomersQuery['customerGroup']>) {\n this.modalService\n .fromComponent(AddCustomerToGroupDialogComponent, {\n locals: {\n group,\n route: this.route,\n },\n size: 'md',\n verticalAlign: 'top',\n })\n .pipe(\n switchMap(customerIds =>\n customerIds\n ? this.dataService.customer\n .addCustomersToGroup(group.id, customerIds)\n .pipe(mapTo(customerIds))\n : EMPTY,\n ),\n )\n .subscribe({\n next: result => {\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\n customerCount: result.length,\n groupName: group.name,\n });\n this.refreshActiveGroupMembers$.next();\n },\n });\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" [routerLink]=\"['./', 'create']\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-customer-group' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-split-view [rightPanelOpen]=\"activeGroup$ | async\" (closeClicked)=\"closeMembers()\">\n <ng-template vdrSplitViewLeft>\n <vdr-data-table-2\n class=\"mt-2\"\n [id]=\"dataTableListId\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n [activeIndex]=\"activeIndex$ | async\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\n >\n <vdr-bulk-action-menu\n locationId=\"customer-group-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'common.search-by-name' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.name' | translate\" id=\"name\"\n [optional]=\"false\"\n [sort]=\"sorts.get('name')\"\n >\n <ng-template let-customerGroup=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', customerGroup.id]\"\n ><span>{{ customerGroup.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\n <vdr-dt2-column\n [heading]=\"'common.view-contents' | translate\" id=\"view-contents\"\n [optional]=\"false\"\n >\n <ng-template let-customerGroup=\"item\">\n <a\n class=\"button-small bg-weight-150\"\n [routerLink]=\"['./', { contents: customerGroup.id }]\"\n queryParamsHandling=\"preserve\"\n >\n <span>{{ 'customer.view-group-members' | translate }}</span>\n <clr-icon shape=\"file-group\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </ng-template>\n <ng-template vdrSplitViewRight [splitViewTitle]=\"(activeGroup$ | async)?.name\">\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\n <button class=\"button-ghost ml-4\" (click)=\"addToGroup(activeGroup)\">\n <clr-icon shape=\"plus\"></clr-icon>\n <span>{{\n 'customer.add-customers-to-group' | translate : { groupName: activeGroup.name }\n }}</span>\n </button>\n <vdr-customer-group-member-list\n locationId=\"customer-group-members-list\"\n [members]=\"members$ | async\"\n [route]=\"route\"\n [totalItems]=\"membersTotal$ | async\"\n [activeGroup]=\"activeGroup$ | async\"\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\n />\n </ng-container>\n </ng-template>\n</vdr-split-view>\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BulkAction,\n DataService,\n ModalService,\n NotificationService,\n Permission,\n} from '@vendure/admin-ui/core';\nimport {\n CustomerGroupMember,\n CustomerGroupMemberListComponent,\n} from './customer-group-member-list.component';\n\nexport const removeCustomerGroupMembersBulkAction: BulkAction<\n CustomerGroupMember,\n CustomerGroupMemberListComponent\n> = {\n location: 'customer-group-members-list',\n label: _('customer.remove-from-group'),\n icon: 'trash',\n iconClass: 'is-danger',\n requiresPermission: Permission.UpdateCustomerGroup,\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n const dataService = injector.get(DataService);\n const notificationService = injector.get(NotificationService);\n\n const group = hostComponent.activeGroup;\n const customerIds = selection.map(s => s.id);\n\n dataService.customer.removeCustomersFromGroup(group.id, customerIds).subscribe({\n complete: () => {\n notificationService.success(_(`customer.remove-customers-from-group-success`), {\n customerCount: customerIds.length,\n groupName: group.name,\n });\n clearSelection();\n hostComponent.refresh();\n },\n });\n },\n};\n","import { createBulkDeleteAction, GetCustomerListQuery, ItemOf, Permission } from '@vendure/admin-ui/core';\nimport { map } from 'rxjs/operators';\n\nexport const deleteCustomersBulkAction = createBulkDeleteAction<ItemOf<GetCustomerListQuery, 'customers'>>({\n location: 'customer-list',\n requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomer),\n getItemName: item => item.firstName + ' ' + item.lastName,\n bulkDelete: (dataService, ids) =>\n dataService.customer.deleteCustomers(ids).pipe(map(res => res.deleteCustomers)),\n});\n","import { Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { CustomerListQueryDocument, LogicalOperator, TypedBaseListComponent } from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nexport const CUSTOMER_LIST_QUERY = gql`\n query CustomerListQuery($options: CustomerListOptions) {\n customers(options: $options) {\n items {\n ...CustomerListItem\n }\n totalItems\n }\n }\n\n fragment CustomerListItem on Customer {\n id\n createdAt\n updatedAt\n title\n firstName\n lastName\n emailAddress\n user {\n id\n verified\n }\n }\n`;\n\n@Component({\n selector: 'vdr-customer-list',\n templateUrl: './customer-list.component.html',\n styleUrls: ['./customer-list.component.scss'],\n standalone: false,\n})\nexport class CustomerListComponent\n extends TypedBaseListComponent<typeof CustomerListQueryDocument, 'customers'>\n implements OnInit\n{\n dataTableListId = 'customer-list';\n readonly customFields = this.getCustomFieldConfig('Customer');\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilter({\n name: 'firstName',\n type: { kind: 'text' },\n label: _('customer.first-name'),\n filterField: 'firstName',\n })\n .addFilter({\n name: 'lastName',\n type: { kind: 'text' },\n label: _('customer.last-name'),\n filterField: 'lastName',\n })\n .addFilter({\n name: 'emailAddress',\n type: { kind: 'text' },\n label: _('customer.email-address'),\n filterField: 'emailAddress',\n })\n .addCustomFieldFilters(this.customFields)\n .connectToRoute(this.route);\n\n readonly sorts = this.createSortCollection()\n .defaultSort('createdAt', 'DESC')\n .addSort({ name: 'createdAt' })\n .addSort({ name: 'updatedAt' })\n .addSort({ name: 'lastName' })\n .addSort({ name: 'emailAddress' })\n .addCustomFieldSorts(this.customFields)\n .connectToRoute(this.route);\n\n constructor() {\n super();\n this.configure({\n document: CustomerListQueryDocument,\n getItems: data => data.customers,\n setVariables: (skip, take) => ({\n options: {\n skip,\n take,\n filter: {\n ...(this.searchTermControl.value\n ? {\n emailAddress: {\n contains: this.searchTermControl.value,\n },\n lastName: {\n contains: this.searchTermControl.value,\n },\n postalCode: {\n contains: this.searchTermControl.value,\n },\n }\n : {}),\n ...this.filters.createFilterInput(),\n },\n filterOperator: this.searchTermControl.value ? LogicalOperator.OR : LogicalOperator.AND,\n sort: this.sorts.createSortInput(),\n },\n }),\n refreshListOnChanges: [this.sorts.valueChanges, this.filters.valueChanges],\n });\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-list\"></vdr-action-bar-items>\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateCustomer'\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-customer' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"customer-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-data-table-2\n class=\"mt-2\"\n [id]=\"dataTableListId\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\n>\n <vdr-bulk-action-menu\n locationId=\"customer-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'customer.search-customers-by-email-last-name-postal-code' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-customer=\"item\">\n {{ customer.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('lastName')\">\n <ng-template let-customer=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', customer.id]\"\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\">\n <ng-template let-customer=\"item\">\n <vdr-customer-status-label [customer]=\"customer\" />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\" [sort]=\"sorts.get('emailAddress')\">\n <ng-template let-customer=\"item\">\n {{ customer.emailAddress }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\n</vdr-data-table-2>\n","import { Route } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { CustomerFragment, detailBreadcrumb, PageComponent, PageService } from '@vendure/admin-ui/core';\n\nexport const createRoutes = (pageService: PageService): Route[] => [\n {\n path: 'customers',\n component: PageComponent,\n data: {\n locationId: 'customer-list',\n breadcrumb: _('breadcrumb.customers'),\n },\n children: pageService.getPageTabRoutes('customer-list'),\n },\n {\n path: 'customers/:id',\n component: PageComponent,\n data: {\n locationId: 'customer-detail',\n breadcrumb: { label: _('breadcrumb.customers'), link: ['../', 'customers'] },\n },\n children: pageService.getPageTabRoutes('customer-detail'),\n },\n {\n path: 'groups',\n component: PageComponent,\n data: {\n locationId: 'customer-group-list',\n breadcrumb: _('breadcrumb.customer-groups'),\n },\n children: pageService.getPageTabRoutes('customer-group-list'),\n },\n {\n path: 'groups/:id',\n component: PageComponent,\n data: {\n locationId: 'customer-group-detail',\n breadcrumb: { label: _('breadcrumb.customer-groups'), link: ['../', 'groups'] },\n },\n children: pageService.getPageTabRoutes('customer-group-detail'),\n },\n];\n\nexport function customerBreadcrumb(data: any, params: any) {\n return detailBreadcrumb<CustomerFragment>({\n entity: data.entity,\n id: params.id,\n breadcrumbKey: 'breadcrumb.customers',\n getName: customer => `${customer.firstName} ${customer.lastName}`,\n route: 'customers',\n });\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BulkActionRegistryService,\n CustomerDetailQueryDocument,\n detailComponentWithResolver,\n GetCustomerGroupDetailDocument,\n PageService,\n SharedModule,\n SortOrder,\n} from '@vendure/admin-ui/core';\n\nimport { AddCustomerToGroupDialogComponent } from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\nimport { AddressCardComponent } from './components/address-card/address-card.component';\nimport { AddressDetailDialogComponent } from './components/address-detail-dialog/address-detail-dialog.component';\nimport { CustomerDetailComponent } from './components/customer-detail/customer-detail.component';\nimport { CustomerGroupDetailDialogComponent } from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\nimport { deleteCustomerGroupsBulkAction } from './components/customer-group-list/customer-group-list-bulk-actions';\nimport { CustomerGroupListComponent } from './components/customer-group-list/customer-group-list.component';\nimport { removeCustomerGroupMembersBulkAction } from './components/customer-group-member-list/customer-group-member-list-bulk-actions';\nimport { CustomerGroupMemberListComponent } from './components/customer-group-member-list/customer-group-member-list.component';\nimport { CustomerHistoryEntryHostComponent } from './components/customer-history/customer-history-entry-host.component';\nimport { CustomerHistoryComponent } from './components/customer-history/customer-history.component';\nimport { deleteCustomersBulkAction } from './components/customer-list/customer-list-bulk-actions';\nimport { CustomerListComponent } from './components/customer-list/customer-list.component';\nimport { CustomerStatusLabelComponent } from './components/customer-status-label/customer-status-label.component';\nimport { SelectCustomerGroupDialogComponent } from './components/select-customer-group-dialog/select-customer-group-dialog.component';\nimport { createRoutes } from './customer.routes';\nimport { CustomerGroupDetailComponent } from './components/customer-group-detail/customer-group-detail.component';\n\n@NgModule({\n imports: [SharedModule, RouterModule.forChild([])],\n providers: [\n {\n provide: ROUTES,\n useFactory: (pageService: PageService) => createRoutes(pageService),\n multi: true,\n deps: [PageService],\n },\n ],\n declarations: [\n CustomerListComponent,\n CustomerDetailComponent,\n CustomerStatusLabelComponent,\n AddressCardComponent,\n CustomerGroupListComponent,\n CustomerGroupDetailDialogComponent,\n AddCustomerToGroupDialogComponent,\n CustomerGroupMemberListComponent,\n SelectCustomerGroupDialogComponent,\n CustomerHistoryComponent,\n AddressDetailDialogComponent,\n CustomerHistoryEntryHostComponent,\n CustomerGroupDetailComponent,\n ],\n exports: [AddressCardComponent],\n})\nexport class CustomerModule {\n private static hasRegisteredTabsAndBulkActions = false;\n\n constructor(bulkActionRegistryService: BulkActionRegistryService, pageService: PageService) {\n if (CustomerModule.hasRegisteredTabsAndBulkActions) {\n return;\n }\n bulkActionRegistryService.registerBulkAction(deleteCustomersBulkAction);\n bulkActionRegistryService.registerBulkAction(deleteCustomerGroupsBulkAction);\n bulkActionRegistryService.registerBulkAction(removeCustomerGroupMembersBulkAction);\n\n pageService.registerPageTab({\n priority: 0,\n location: 'customer-list',\n tab: _('customer.customers'),\n route: '',\n component: CustomerListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'customer-detail',\n tab: _('customer.customer'),\n route: '',\n component: detailComponentWithResolver({\n component: CustomerDetailComponent,\n query: CustomerDetailQueryDocument,\n entityKey: 'customer',\n variables: {\n orderListOptions: {\n sort: {\n orderPlacedAt: SortOrder.DESC,\n },\n },\n },\n getBreadcrumbs: entity => [\n {\n label: entity\n ? `${entity?.firstName} ${entity?.lastName}`\n : _('customer.create-new-customer'),\n link: [entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'customer-group-list',\n tab: _('customer.customer-groups'),\n route: '',\n component: CustomerGroupListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'customer-group-detail',\n tab: _('customer.customer-group'),\n route: '',\n component: detailComponentWithResolver({\n component: CustomerGroupDetailComponent,\n query: GetCustomerGroupDetailDocument,\n entityKey: 'customerGroup',\n getBreadcrumbs: entity => [\n {\n label: entity ? entity.name : _('customer.create-new-customer-group'),\n link: [entity?.id],\n },\n ],\n }),\n });\n CustomerModule.hasRegisteredTabsAndBulkActions = true;\n }\n}\n","// This file was generated by the build-public-api.ts script\nexport * from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\nexport * from './components/address-card/address-card.component';\nexport * from './components/address-detail-dialog/address-detail-dialog.component';\nexport * from './components/customer-detail/customer-detail.component';\nexport * from './components/customer-group-detail/customer-group-detail.component';\nexport * from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\nexport * from './components/customer-group-list/customer-group-list-bulk-actions';\nexport * from './components/customer-group-list/customer-group-list.component';\nexport * from './components/customer-group-member-list/customer-group-member-list-bulk-actions';\nexport * from './components/customer-group-member-list/customer-group-member-list.component';\nexport * from './components/customer-history/customer-history-entry-host.component';\nexport * from './components/customer-history/customer-history.component';\nexport * from './components/customer-list/customer-list-bulk-actions';\nexport * from './components/customer-list/customer-list.component';\nexport * from './components/customer-status-label/customer-status-label.component';\nexport * from './components/select-customer-group-dialog/select-customer-group-dialog.component';\nexport * from './customer.module';\nexport * from './customer.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4.CustomerStatusLabelComponent","i5","i6","i2.CustomerGroupMemberListComponent","i4","i5.CustomerHistoryEntryHostComponent","_","i6.CustomerStatusLabelComponent","i7.AddressCardComponent","i8.CustomerHistoryComponent","i9","i5.CustomerGroupMemberListComponent","i5.CustomerStatusLabelComponent"],"mappings":"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"}
1
+ {"version":3,"file":"vendure-admin-ui-customer.mjs","sources":["../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.ts","../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.html","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.ts","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.html","../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.ts","../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.html","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.ts","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.html","../../src/lib/customer/src/components/address-card/address-card.component.ts","../../src/lib/customer/src/components/address-card/address-card.component.html","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.ts","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.html","../../src/lib/customer/src/components/customer-history/customer-history-entry-host.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.html","../../src/lib/customer/src/components/customer-detail/customer-detail.component.ts","../../src/lib/customer/src/components/customer-detail/customer-detail.component.html","../../src/lib/customer/src/components/customer-group-detail/customer-group-detail.component.ts","../../src/lib/customer/src/components/customer-group-detail/customer-group-detail.component.html","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.ts","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.html","../../src/lib/customer/src/components/customer-group-list/customer-group-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.html","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-list/customer-list-bulk-actions.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.html","../../src/lib/customer/src/customer.routes.ts","../../src/lib/customer/src/customer.module.ts","../../src/lib/customer/src/public_api.ts","../../src/lib/customer/src/vendure-admin-ui-customer.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CustomerFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-customer-status-label',\n templateUrl: './customer-status-label.component.html',\n styleUrls: ['./customer-status-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerStatusLabelComponent {\n @Input() customer: CustomerFragment;\n}\n","<vdr-chip *ngIf=\"customer.user?.id\">\n <ng-container *ngIf=\"customer.user?.verified\">\n <clr-icon shape=\"check-circle\" class=\"verified-user-icon\"></clr-icon>\n {{ 'customer.verified' | translate }}\n </ng-container>\n <ng-container *ngIf=\"!customer.user?.verified\">\n <clr-icon shape=\"check-circle\" class=\"registered-user-icon\"></clr-icon>\n {{ 'customer.registered' | translate }}\n </ng-container>\n</vdr-chip>\n<vdr-chip *ngIf=\"!customer.user?.id\">{{ 'customer.guest' | translate }}</vdr-chip>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n BulkActionLocationId,\n Customer,\n DataService,\n GetCustomerGroupsQuery,\n ItemOf,\n SelectionManager,\n} from '@vendure/admin-ui/core';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, startWith, takeUntil, tap } from 'rxjs/operators';\n\nexport interface CustomerGroupMemberFetchParams {\n skip: number;\n take: number;\n filterTerm: string;\n}\n\nexport type CustomerGroupMember = Pick<\n Customer,\n 'id' | 'createdAt' | 'updatedAt' | 'title' | 'firstName' | 'lastName' | 'emailAddress'\n>;\n\n@Component({\n selector: 'vdr-customer-group-member-list',\n templateUrl: './customer-group-member-list.component.html',\n styleUrls: ['./customer-group-member-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerGroupMemberListComponent implements OnInit, OnDestroy {\n @Input() locationId: BulkActionLocationId;\n @Input() members: CustomerGroupMember[];\n @Input() totalItems: number;\n @Input() route: ActivatedRoute;\n @Input() selectedMemberIds: string[] = [];\n @Input() activeGroup: ItemOf<GetCustomerGroupsQuery, 'customerGroups'>;\n @Output() selectionChange = new EventEmitter<string[]>();\n @Output() fetchParamsChange = new EventEmitter<CustomerGroupMemberFetchParams>();\n\n membersItemsPerPage$: Observable<number>;\n membersCurrentPage$: Observable<number>;\n filterTermControl = new FormControl('');\n selectionManager = new SelectionManager<CustomerGroupMember>({\n multiSelect: true,\n itemsAreEqual: (a, b) => a.id === b.id,\n additiveMode: true,\n });\n private refresh$ = new BehaviorSubject<boolean>(true);\n private destroy$ = new Subject<void>();\n\n constructor(\n private router: Router,\n private dataService: DataService,\n ) {}\n\n ngOnInit() {\n this.membersCurrentPage$ = this.route.paramMap.pipe(\n map(qpm => qpm.get('membersPage')),\n map(page => (!page ? 1 : +page)),\n startWith(1),\n distinctUntilChanged(),\n );\n\n this.membersItemsPerPage$ = this.route.paramMap.pipe(\n map(qpm => qpm.get('membersPerPage')),\n map(perPage => (!perPage ? 10 : +perPage)),\n startWith(10),\n distinctUntilChanged(),\n );\n\n const filterTerm$ = this.filterTermControl.valueChanges.pipe(\n debounceTime(250),\n tap(() => this.setContentsPageNumber(1)),\n startWith(''),\n );\n\n combineLatest(this.membersCurrentPage$, this.membersItemsPerPage$, filterTerm$, this.refresh$)\n .pipe(takeUntil(this.destroy$))\n .subscribe(([currentPage, itemsPerPage, filterTerm]) => {\n const take = itemsPerPage;\n const skip = (currentPage - 1) * itemsPerPage;\n this.fetchParamsChange.emit({\n filterTerm: filterTerm ?? '',\n skip,\n take,\n });\n });\n this.selectionManager.setCurrentItems(\n this.members?.filter(m => this.selectedMemberIds.includes(m.id)) ?? [],\n );\n this.selectionManager.selectionChanges$.pipe(takeUntil(this.destroy$)).subscribe(selection => {\n this.selectionChange.emit(selection.map(s => s.id));\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n setContentsPageNumber(page: number) {\n this.setParam('membersPage', page);\n }\n\n setContentsItemsPerPage(perPage: number) {\n this.setParam('membersPerPage', perPage);\n }\n\n refresh() {\n this.refresh$.next(true);\n }\n\n private setParam(key: string, value: any) {\n this.router.navigate(['./', { ...this.route.snapshot.params, [key]: value }], {\n relativeTo: this.route,\n queryParamsHandling: 'merge',\n });\n }\n}\n","<vdr-data-table-2\n [id]=\"locationId\"\n [items]=\"members\"\n [itemsPerPage]=\"membersItemsPerPage$ | async\"\n [totalItems]=\"totalItems\"\n [currentPage]=\"membersCurrentPage$ | async\"\n (pageChange)=\"setContentsPageNumber($event)\"\n (itemsPerPageChange)=\"setContentsItemsPerPage($event)\"\n>\n <vdr-bulk-action-menu\n [locationId]=\"locationId\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"filterTermControl\"\n [searchTermPlaceholder]=\"'customer.search-customers-by-email' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\">\n <ng-template let-customer=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/customer/customers', customer.id]\"\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n <vdr-customer-status-label [customer]=\"customer\" />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\">\n <ng-template let-customer=\"item\">\n {{ customer.emailAddress }}\n </ng-template>\n </vdr-dt2-column>\n</vdr-data-table-2>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n DataService,\n Dialog,\n GetCustomerGroupsQuery,\n GetCustomerListQuery,\n ItemOf,\n} from '@vendure/admin-ui/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\n\n@Component({\n selector: 'vdr-add-customer-to-group-dialog',\n templateUrl: './add-customer-to-group-dialog.component.html',\n styleUrls: ['./add-customer-to-group-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AddCustomerToGroupDialogComponent implements Dialog<string[]>, OnInit {\n resolveWith: (result?: string[]) => void;\n group: ItemOf<GetCustomerGroupsQuery, 'customerGroups'>;\n route: ActivatedRoute;\n selectedCustomerIds: string[] = [];\n customers$: Observable<GetCustomerListQuery['customers']['items']>;\n customersTotal$: Observable<number>;\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\n skip: 0,\n take: 10,\n filterTerm: '',\n });\n\n constructor(private dataService: DataService) {}\n\n ngOnInit() {\n const customerResult$ = this.fetchGroupMembers$.pipe(\n switchMap(({ skip, take, filterTerm }) =>\n this.dataService.customer\n .getCustomerList(take, skip, filterTerm)\n .mapStream(res => res.customers),\n ),\n );\n\n this.customers$ = customerResult$.pipe(map(res => res.items));\n this.customersTotal$ = customerResult$.pipe(map(res => res.totalItems));\n }\n\n cancel() {\n this.resolveWith();\n }\n\n add() {\n this.resolveWith(this.selectedCustomerIds);\n }\n}\n","<ng-template vdrDialogTitle>\n {{ 'customer.add-customers-to-group-with-name' | translate: {groupName: group.name} }}\n</ng-template>\n\n<vdr-customer-group-member-list\n locationId=\"customer-group-members-picker-list\"\n [members]=\"customers$ | async\"\n [totalItems]=\"customersTotal$ | async\"\n [route]=\"route\"\n [selectedMemberIds]=\"selectedCustomerIds\"\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\n (selectionChange)=\"selectedCustomerIds = $event\"\n/>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedCustomerIds.length\" class=\"btn btn-primary\">\n {{ 'customer.add-customers-to-group-with-count' | translate: {count: selectedCustomerIds.length} }}\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { CustomFieldConfig, Dialog, GetAvailableCountriesQuery } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-address-detail-dialog',\n templateUrl: './address-detail-dialog.component.html',\n styleUrls: ['./address-detail-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AddressDetailDialogComponent implements Dialog<UntypedFormGroup>, OnInit {\n addressForm: UntypedFormGroup;\n customFields: CustomFieldConfig;\n availableCountries: GetAvailableCountriesQuery['countries']['items'] = [];\n resolveWith: (result?: UntypedFormGroup) => void;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.addressForm.valueChanges.subscribe(() => this.changeDetector.markForCheck());\n }\n\n cancel() {\n this.resolveWith();\n }\n\n save() {\n this.resolveWith(this.addressForm);\n }\n}\n","<ng-template vdrDialogTitle>\n <span *ngIf=\"addressForm.get('streetLine1')?.value as streetLine1\">{{ streetLine1 }},</span>\n <span *ngIf=\"addressForm.get('countryCode')?.value as countryCode\"> {{ countryCode }}</span>\n</ng-template>\n\n<vdr-address-form\n [formGroup]=\"addressForm\"\n [availableCountries]=\"availableCountries\"\n [customFields]=\"customFields\"\n></vdr-address-form>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"!addressForm.valid || !addressForm.touched\"\n class=\"btn btn-primary\"\n >\n {{ 'common.update' | translate }}\n </button>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { CustomFieldConfig, GetAvailableCountriesQuery, ModalService } from '@vendure/admin-ui/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { AddressDetailDialogComponent } from '../address-detail-dialog/address-detail-dialog.component';\n\n@Component({\n selector: 'vdr-address-card',\n templateUrl: './address-card.component.html',\n styleUrls: ['./address-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AddressCardComponent implements OnInit, OnChanges {\n @Input() addressForm: UntypedFormGroup;\n @Input() customFields: CustomFieldConfig;\n @Input() availableCountries: GetAvailableCountriesQuery['countries']['items'] = [];\n @Input() isDefaultBilling: string;\n @Input() isDefaultShipping: string;\n @Input() editable = true;\n @Output() setAsDefaultShipping = new EventEmitter<string>();\n @Output() setAsDefaultBilling = new EventEmitter<string>();\n @Output() deleteAddress = new EventEmitter<string>();\n private dataDependenciesPopulated = new BehaviorSubject<boolean>(false);\n\n constructor(\n private modalService: ModalService,\n private changeDetector: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n const streetLine1 = this.addressForm.get('streetLine1') as UntypedFormControl;\n // Make the address dialog display automatically if there is no address line\n // as is the case when adding a new address.\n if (!streetLine1.value) {\n this.dataDependenciesPopulated\n .pipe(\n filter(value => value),\n take(1),\n )\n .subscribe(() => {\n this.editAddress();\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.customFields != null && this.availableCountries != null) {\n this.dataDependenciesPopulated.next(true);\n }\n }\n\n getCountryName(countryCode: string) {\n if (!this.availableCountries) {\n return '';\n }\n const match = this.availableCountries.find(c => c.code === countryCode);\n return match ? match.name : '';\n }\n\n setAsDefaultBillingAddress() {\n this.setAsDefaultBilling.emit(this.addressForm.value.id);\n this.addressForm.markAsDirty();\n }\n\n setAsDefaultShippingAddress() {\n this.setAsDefaultShipping.emit(this.addressForm.value.id);\n this.addressForm.markAsDirty();\n }\n\n delete() {\n this.deleteAddress.emit(this.addressForm.value.id);\n this.addressForm.markAsDirty();\n }\n\n editAddress() {\n this.modalService\n .fromComponent(AddressDetailDialogComponent, {\n locals: {\n addressForm: this.addressForm,\n customFields: this.customFields,\n availableCountries: this.availableCountries,\n },\n size: 'md',\n closable: true,\n })\n .subscribe(() => {\n this.changeDetector.markForCheck();\n });\n }\n}\n","<div class=\"card\" *ngIf=\"addressForm.value as address\">\n <div class=\"card-header\">\n <div class=\"address-title\">\n <span class=\"street-line\" *ngIf=\"address.streetLine1\">{{ address.streetLine1 }},</span>\n {{ address.countryCode }}\n </div>\n <div class=\"default-controls\">\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultShipping\">\n <clr-icon shape=\"truck\"></clr-icon>\n {{ 'customer.default-shipping-address' | translate }}\n </vdr-chip>\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultBilling\">\n <clr-icon shape=\"credit-card\"></clr-icon>\n {{ 'customer.default-billing-address' | translate }}\n </vdr-chip>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-text\">\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\n </div>\n </div>\n <div class=\"card-footer\">\n <div class=\"address-actions\">\n <vdr-entity-info [entity]=\"address\"></vdr-entity-info>\n <ng-container *ngIf=\"editable\">\n <button class=\"button-small\" (click)=\"editAddress()\">\n {{ 'common.edit' | translate }}\n </button>\n <vdr-dropdown>\n <button type=\"button\" class=\"button-small\" vdrDropdownTrigger>\n {{ 'common.more' | translate }}\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu>\n <button\n vdrDropdownItem\n [disabled]=\"isDefaultShipping\"\n (click)=\"setAsDefaultShippingAddress()\"\n >\n {{ 'customer.set-as-default-shipping-address' | translate }}\n </button>\n <button\n vdrDropdownItem\n [disabled]=\"isDefaultBilling\"\n (click)=\"setAsDefaultBillingAddress()\"\n >\n {{ 'customer.set-as-default-billing-address' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button type=\"button\" (click)=\"delete()\" vdrDropdownItem>\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </ng-container>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { DataService, Dialog, GetCustomerGroupsQuery, ItemOf } from '@vendure/admin-ui/core';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'vdr-select-customer-group-dialog',\n templateUrl: './select-customer-group-dialog.component.html',\n styleUrls: ['./select-customer-group-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SelectCustomerGroupDialogComponent implements Dialog<string[]>, OnInit {\n resolveWith: (result?: string[]) => void;\n groups$: Observable<Array<ItemOf<GetCustomerGroupsQuery, 'customerGroups'>>>;\n selectedGroupIds: string[] = [];\n\n constructor(private dataService: DataService) {}\n\n ngOnInit() {\n this.groups$ = this.dataService.customer\n .getCustomerGroupList()\n .mapStream(res => res.customerGroups.items);\n }\n\n cancel() {\n this.resolveWith();\n }\n\n add() {\n this.resolveWith(this.selectedGroupIds);\n }\n}\n","<ng-template vdrDialogTitle>\n {{ 'customer.add-customer-to-group' | translate }}\n</ng-template>\n\n<ng-select\n [items]=\"groups$ | async\"\n appendTo=\"body\"\n [addTag]=\"false\"\n [multiple]=\"true\"\n bindValue=\"id\"\n [(ngModel)]=\"selectedGroupIds\"\n [clearable]=\"true\"\n [searchable]=\"false\"\n>\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> × </span>\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\n </ng-template>\n</ng-select>\n\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedGroupIds.length\" class=\"btn btn-primary\">\n {{ 'customer.add-customer-to-groups-with-count' | translate: {count: selectedGroupIds.length} }}\n </button>\n</ng-template>\n","import {\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n CustomerFragment,\n CustomerHistoryEntryComponent,\n HistoryEntryComponentService,\n TimelineHistoryEntry,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-customer-history-entry-host',\n template: `\n <vdr-timeline-entry\n [displayType]=\"instance.getDisplayType(entry)\"\n [iconShape]=\"instance.getIconShape && instance.getIconShape(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"instance.getName && instance.getName(entry)\"\n [featured]=\"instance.isFeatured(entry)\"\n [collapsed]=\"!expanded && !instance.isFeatured(entry)\"\n (expandClick)=\"expandClick.emit()\"\n >\n <div #portal></div>\n </vdr-timeline-entry>\n `,\n exportAs: 'historyEntry',\n standalone: false,\n})\nexport class CustomerHistoryEntryHostComponent implements OnInit, OnDestroy {\n @Input() entry: TimelineHistoryEntry;\n @Input() customer: CustomerFragment;\n @Input() expanded: boolean;\n @Output() expandClick = new EventEmitter<void>();\n @ViewChild('portal', { static: true, read: ViewContainerRef }) portalRef: ViewContainerRef;\n instance: CustomerHistoryEntryComponent;\n private componentRef: ComponentRef<CustomerHistoryEntryComponent>;\n\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\n\n ngOnInit(): void {\n const componentType = this.historyEntryComponentService.getComponent(\n this.entry.type,\n ) as Type<CustomerHistoryEntryComponent>;\n\n const componentRef = this.portalRef.createComponent(componentType);\n componentRef.instance.entry = this.entry;\n componentRef.instance.customer = this.customer;\n this.instance = componentRef.instance;\n this.componentRef = componentRef;\n }\n\n ngOnDestroy() {\n this.componentRef?.destroy();\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n CustomerFragment,\n GetCustomerHistoryQuery,\n HistoryEntryComponentService,\n HistoryEntryType,\n TimelineDisplayType,\n TimelineHistoryEntry,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-customer-history',\n templateUrl: './customer-history.component.html',\n styleUrls: ['./customer-history.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerHistoryComponent {\n @Input() customer: CustomerFragment;\n @Input() history: TimelineHistoryEntry[];\n @Output() addNote = new EventEmitter<{ note: string }>();\n @Output() updateNote = new EventEmitter<TimelineHistoryEntry>();\n @Output() deleteNote = new EventEmitter<TimelineHistoryEntry>();\n note = '';\n expanded = false;\n readonly type = HistoryEntryType;\n\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\n\n hasCustomComponent(type: string): boolean {\n return !!this.historyEntryComponentService.getComponent(type);\n }\n\n getDisplayType(entry: TimelineHistoryEntry): TimelineDisplayType {\n switch (entry.type) {\n case HistoryEntryType.CUSTOMER_VERIFIED:\n case HistoryEntryType.CUSTOMER_EMAIL_UPDATE_VERIFIED:\n case HistoryEntryType.CUSTOMER_PASSWORD_RESET_VERIFIED:\n return 'success';\n case HistoryEntryType.CUSTOMER_REGISTERED:\n return 'muted';\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\n return 'error';\n default:\n return 'default';\n }\n }\n\n getTimelineIcon(entry: TimelineHistoryEntry): string | [string, string] | undefined {\n switch (entry.type) {\n case HistoryEntryType.CUSTOMER_REGISTERED:\n return 'user';\n case HistoryEntryType.CUSTOMER_VERIFIED:\n return ['assign-user', 'is-solid'];\n case HistoryEntryType.CUSTOMER_NOTE:\n return 'note';\n case HistoryEntryType.CUSTOMER_ADDED_TO_GROUP:\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\n return 'users';\n }\n }\n\n isFeatured(entry: TimelineHistoryEntry): boolean {\n switch (entry.type) {\n case HistoryEntryType.CUSTOMER_REGISTERED:\n case HistoryEntryType.CUSTOMER_VERIFIED:\n return true;\n default:\n return false;\n }\n }\n\n getName(entry: TimelineHistoryEntry): string {\n const { administrator } = entry;\n if (administrator) {\n return `${administrator.firstName} ${administrator.lastName}`;\n } else {\n return `${this.customer.firstName} ${this.customer.lastName}`;\n }\n }\n\n addNoteToCustomer() {\n this.addNote.emit({ note: this.note });\n this.note = '';\n }\n}\n","<div class=\"entry-list\">\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\" *vdrIfPermissions=\"'UpdateCustomer'\"\n [isFirst]=\"true\">\n <div class=\"note-entry\">\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToCustomer()\">\n {{ 'order.add-note' | translate }}\n </button>\n </div>\n </vdr-timeline-entry>\n <ng-container *ngFor=\"let entry of history\">\n <vdr-customer-history-entry-host\n *ngIf=\"hasCustomComponent(entry.type); else defaultComponents\"\n [customer]=\"customer\"\n [entry]=\"entry\"\n [expanded]=\"expanded\"\n (expandClick)=\"expanded = !expanded\"\n ></vdr-customer-history-entry-host>\n <ng-template #defaultComponents>\n <vdr-timeline-entry\n [displayType]=\"getDisplayType(entry)\"\n [iconShape]=\"getTimelineIcon(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"getName(entry)\"\n [featured]=\"isFeatured(entry)\"\n >\n <ng-container [ngSwitch]=\"entry.type\">\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REGISTERED\">\n <div class=\"title\">\n {{ 'customer.history-customer-registered' | translate }}\n </div>\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\n {{ 'customer.history-using-native-auth-strategy' | translate }}\n </ng-container>\n <ng-template #namedStrategy>\n {{\n 'customer.history-using-external-auth-strategy'\n | translate: { strategy: entry.data.strategy }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_VERIFIED\">\n <div class=\"title\">\n {{ 'customer.history-customer-verified' | translate }}\n </div>\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\n {{ 'customer.history-using-native-auth-strategy' | translate }}\n </ng-container>\n <ng-template #namedStrategy>\n {{\n 'customer.history-using-external-auth-strategy'\n | translate: { strategy: entry.data.strategy }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_DETAIL_UPDATED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-detail-updated' | translate }}\n <vdr-history-entry-detail>\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDED_TO_GROUP\">\n {{\n 'customer.history-customer-added-to-group'\n | translate: { groupName: entry.data.groupName }\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REMOVED_FROM_GROUP\">\n {{\n 'customer.history-customer-removed-from-group'\n | translate: { groupName: entry.data.groupName }\n }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_CREATED\">\n {{ 'customer.history-customer-address-created' | translate }}\n <div class=\"flex\">\n <div class=\"address-string\">{{ entry.data.address }}</div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_UPDATED\">\n {{ 'customer.history-customer-address-updated' | translate }}\n <div class=\"flex\">\n <div class=\"address-string\">{{ entry.data.address }}</div>\n <vdr-history-entry-detail>\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_DELETED\">\n {{ 'customer.history-customer-address-deleted' | translate }}\n <div class=\"address-string\">{{ entry.data.address }}</div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_UPDATED\">\n {{ 'customer.history-customer-password-updated' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_REQUESTED\">\n {{ 'customer.history-customer-password-reset-requested' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_VERIFIED\">\n {{ 'customer.history-customer-password-reset-verified' | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_REQUESTED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-email-update-requested' | translate }}\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\n entry.data.oldEmailAddress\n }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\n entry.data.newEmailAddress\n }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_VERIFIED\">\n <div class=\"flex\">\n {{ 'customer.history-customer-email-update-verified' | translate }}\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\n entry.data.oldEmailAddress\n }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\n entry.data.newEmailAddress\n }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.CUSTOMER_NOTE\">\n <div class=\"flex\">\n <div class=\"note-text\">\n {{ entry.data.note }}\n </div>\n <div class=\"flex-spacer\"></div>\n <vdr-dropdown>\n <button class=\"button-small ml-1\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <button\n vdrDropdownItem\n (click)=\"updateNote.emit(entry)\"\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n {{ 'common.edit' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button\n vdrDropdownItem\n (click)=\"deleteNote.emit(entry)\"\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\n >\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"title\">\n {{ entry.type | translate }}\n </div>\n <vdr-history-entry-detail *ngIf=\"entry.data\">\n <vdr-object-tree [value]=\"entry.data\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </ng-container>\n </ng-container>\n </vdr-timeline-entry>\n </ng-template>\n </ng-container>\n <vdr-timeline-entry [isLast]=\"true\"></vdr-timeline-entry>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, UntypedFormArray, UntypedFormControl, Validators } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CreateAddressInput,\n CreateCustomerAddressMutation,\n CreateCustomerInput,\n CUSTOMER_FRAGMENT,\n CustomerDetailQueryDocument,\n CustomerDetailQueryQuery,\n DataService,\n DeleteCustomerAddressMutation,\n EditNoteDialogComponent,\n GetAvailableCountriesQuery,\n GetCustomerHistoryQuery,\n getCustomFieldsDefaults,\n ModalService,\n NotificationService,\n SortOrder,\n TimelineHistoryEntry,\n TypedBaseDetailComponent,\n UpdateCustomerAddressMutation,\n UpdateCustomerInput,\n UpdateCustomerMutation,\n} from '@vendure/admin-ui/core';\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport { gql } from 'apollo-angular';\nimport { EMPTY, forkJoin, from, Observable, Subject } from 'rxjs';\nimport {\n concatMap,\n filter,\n map,\n merge,\n mergeMap,\n shareReplay,\n startWith,\n switchMap,\n take,\n} from 'rxjs/operators';\n\nimport { SelectCustomerGroupDialogComponent } from '../select-customer-group-dialog/select-customer-group-dialog.component';\n\ntype CustomerWithOrders = NonNullable<CustomerDetailQueryQuery['customer']>;\n\nexport const CUSTOMER_DETAIL_QUERY = gql`\n query CustomerDetailQuery($id: ID!, $orderListOptions: OrderListOptions) {\n customer(id: $id) {\n ...Customer\n groups {\n id\n name\n }\n orders(options: $orderListOptions) {\n items {\n id\n code\n type\n state\n total\n totalWithTax\n currencyCode\n createdAt\n updatedAt\n orderPlacedAt\n }\n totalItems\n }\n }\n }\n ${CUSTOMER_FRAGMENT}\n`;\n\n@Component({\n selector: 'vdr-customer-detail',\n templateUrl: './customer-detail.component.html',\n styleUrls: ['./customer-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerDetailComponent\n extends TypedBaseDetailComponent<typeof CustomerDetailQueryDocument, 'customer'>\n implements OnInit, OnDestroy\n{\n customFields = this.getCustomFieldConfig('Customer');\n addressCustomFields = this.getCustomFieldConfig('Address');\n detailForm = this.formBuilder.group({\n customer: this.formBuilder.group({\n title: '',\n firstName: ['', Validators.required],\n lastName: ['', Validators.required],\n phoneNumber: '',\n emailAddress: ['', [Validators.required, Validators.email]],\n password: '',\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n }),\n addresses: new UntypedFormArray([]),\n });\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\n orders$: Observable<CustomerWithOrders['orders']['items']>;\n ordersCount$: Observable<number>;\n history$: Observable<NonNullable<GetCustomerHistoryQuery['customer']>['history']['items'] | undefined>;\n fetchHistory = new Subject<void>();\n defaultShippingAddressId: string;\n defaultBillingAddressId: string;\n addressesToDeleteIds = new Set<string>();\n addressDefaultsUpdated = false;\n ordersPerPage = 10;\n currentOrdersPage = 1;\n private orderListUpdates$ = new Subject<CustomerWithOrders>();\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private formBuilder: FormBuilder,\n protected dataService: DataService,\n private modalService: ModalService,\n private notificationService: NotificationService,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n this.availableCountries$ = this.dataService.settings\n .getAvailableCountries()\n .mapSingle(result => result.countries.items)\n .pipe(shareReplay(1));\n\n const customerWithUpdates$ = this.entity$.pipe(merge(this.orderListUpdates$));\n this.orders$ = customerWithUpdates$.pipe(map(customer => customer.orders.items));\n this.ordersCount$ = this.entity$.pipe(map(customer => customer.orders.totalItems));\n this.history$ = this.fetchHistory.pipe(\n startWith(null),\n switchMap(() =>\n this.dataService.customer\n .getCustomerHistory(this.id, {\n sort: {\n createdAt: SortOrder.DESC,\n },\n })\n .mapStream(data => data.customer?.history.items),\n ),\n );\n }\n\n ngOnDestroy() {\n this.destroy();\n this.orderListUpdates$.complete();\n }\n\n getAddressFormControls(): UntypedFormControl[] {\n const formArray = this.detailForm.get(['addresses']) as UntypedFormArray;\n return formArray.controls as UntypedFormControl[];\n }\n\n setDefaultBillingAddressId(id: string) {\n this.defaultBillingAddressId = id;\n this.addressDefaultsUpdated = true;\n }\n\n setDefaultShippingAddressId(id: string) {\n this.defaultShippingAddressId = id;\n this.addressDefaultsUpdated = true;\n }\n\n toggleDeleteAddress(id: string) {\n if (this.addressesToDeleteIds.has(id)) {\n this.addressesToDeleteIds.delete(id);\n } else {\n this.addressesToDeleteIds.add(id);\n }\n }\n\n addAddress() {\n const addressFormArray = this.detailForm.get('addresses') as UntypedFormArray;\n const newAddress = this.formBuilder.group({\n fullName: '',\n company: '',\n streetLine1: ['', Validators.required],\n streetLine2: '',\n city: '',\n province: '',\n postalCode: '',\n countryCode: ['', Validators.required],\n phoneNumber: '',\n defaultShippingAddress: false,\n defaultBillingAddress: false,\n customFields: this.formBuilder.group(\n this.addressCustomFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\n ),\n });\n addressFormArray.push(newAddress);\n }\n\n setOrderItemsPerPage(itemsPerPage: number) {\n this.ordersPerPage = +itemsPerPage;\n this.fetchOrdersList();\n }\n\n setOrderCurrentPage(page: number) {\n this.currentOrdersPage = +page;\n this.fetchOrdersList();\n }\n\n create() {\n const customerForm = this.detailForm.get('customer');\n if (!customerForm) {\n return;\n }\n const { title, emailAddress, firstName, lastName, phoneNumber, password } = customerForm.value;\n const customFields = customerForm.get('customFields')?.value;\n if (!emailAddress || !firstName || !lastName) {\n return;\n }\n const customer: CreateCustomerInput = {\n title,\n emailAddress,\n firstName,\n lastName,\n phoneNumber,\n customFields,\n };\n this.dataService.customer.createCustomer(customer, password).subscribe(({ createCustomer }) => {\n switch (createCustomer.__typename) {\n case 'Customer':\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'Customer',\n });\n if (createCustomer.emailAddress && !password) {\n this.notificationService.notify({\n message: _('customer.email-verification-sent'),\n translationVars: { emailAddress },\n type: 'info',\n duration: 10000,\n });\n }\n this.detailForm.markAsPristine();\n this.addressDefaultsUpdated = false;\n this.changeDetector.markForCheck();\n this.router.navigate(['../', createCustomer.id], { relativeTo: this.route });\n break;\n case 'EmailAddressConflictError':\n this.notificationService.error(createCustomer.message);\n }\n });\n }\n\n save() {\n this.entity$\n .pipe(\n take(1),\n mergeMap(({ id }) => {\n const saveOperations: Array<\n Observable<\n | UpdateCustomerMutation['updateCustomer']\n | CreateCustomerAddressMutation['createCustomerAddress']\n | UpdateCustomerAddressMutation['updateCustomerAddress']\n | DeleteCustomerAddressMutation['deleteCustomerAddress']\n >\n > = [];\n const customerForm = this.detailForm.get('customer');\n if (customerForm && customerForm.dirty) {\n const formValue = customerForm.value;\n const customFields = customerForm.get('customFields')?.value;\n const customer: UpdateCustomerInput = {\n id,\n title: formValue.title,\n emailAddress: formValue.emailAddress,\n firstName: formValue.firstName,\n lastName: formValue.lastName,\n phoneNumber: formValue.phoneNumber,\n customFields,\n };\n saveOperations.push(\n this.dataService.customer\n .updateCustomer(customer)\n .pipe(map(res => res.updateCustomer)),\n );\n }\n const addressFormArray = this.detailForm.get('addresses') as UntypedFormArray;\n if ((addressFormArray && addressFormArray.dirty) || this.addressDefaultsUpdated) {\n for (const addressControl of addressFormArray.controls) {\n if (addressControl.dirty || this.addressDefaultsUpdated) {\n const address = addressControl.value;\n const input: CreateAddressInput = {\n fullName: address.fullName,\n company: address.company,\n streetLine1: address.streetLine1,\n streetLine2: address.streetLine2,\n city: address.city,\n province: address.province,\n postalCode: address.postalCode,\n countryCode: address.countryCode,\n phoneNumber: address.phoneNumber,\n defaultShippingAddress: this.defaultShippingAddressId === address.id,\n defaultBillingAddress: this.defaultBillingAddressId === address.id,\n customFields: address.customFields,\n };\n if (!address.id) {\n saveOperations.push(\n this.dataService.customer\n .createCustomerAddress(id, input)\n .pipe(map(res => res.createCustomerAddress)),\n );\n } else {\n if (this.addressesToDeleteIds.has(address.id)) {\n saveOperations.push(\n this.dataService.customer\n .deleteCustomerAddress(address.id)\n .pipe(map(res => res.deleteCustomerAddress)),\n );\n } else {\n saveOperations.push(\n this.dataService.customer\n .updateCustomerAddress({\n ...input,\n id: address.id,\n })\n .pipe(map(res => res.updateCustomerAddress)),\n );\n }\n }\n }\n }\n }\n return forkJoin(saveOperations);\n }),\n )\n .subscribe(\n data => {\n let notified = false;\n for (const result of data) {\n switch (result.__typename) {\n case 'Customer':\n case 'Address':\n case 'Success':\n if (!notified) {\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'Customer',\n });\n notified = true;\n this.detailForm.markAsPristine();\n this.addressDefaultsUpdated = false;\n this.changeDetector.markForCheck();\n this.fetchHistory.next();\n this.refreshCustomer().subscribe();\n }\n break;\n case 'EmailAddressConflictError':\n this.notificationService.error(result.message);\n break;\n }\n }\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'Customer',\n });\n },\n );\n }\n\n addToGroup() {\n this.modalService\n .fromComponent(SelectCustomerGroupDialogComponent, {\n size: 'md',\n })\n .pipe(\n switchMap(groupIds => (groupIds ? from(groupIds) : EMPTY)),\n concatMap(groupId => this.dataService.customer.addCustomersToGroup(groupId, [this.id])),\n )\n .subscribe({\n next: res => {\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\n customerCount: 1,\n groupName: res.addCustomersToGroup.name,\n });\n },\n complete: () => {\n this.refreshCustomer().subscribe();\n this.fetchHistory.next();\n },\n });\n }\n\n removeFromGroup(group: CustomerWithOrders['groups'][number]) {\n this.modalService\n .dialog({\n title: _('customer.confirm-remove-customer-from-group'),\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(response =>\n response\n ? this.dataService.customer.removeCustomersFromGroup(group.id, [this.id])\n : EMPTY,\n ),\n switchMap(() => this.refreshCustomer()),\n )\n .subscribe(result => {\n this.notificationService.success(_(`customer.remove-customers-from-group-success`), {\n customerCount: 1,\n groupName: group.name,\n });\n this.fetchHistory.next();\n });\n }\n\n addNoteToCustomer({ note }: { note: string }) {\n this.dataService.customer.addNoteToCustomer(this.id, note).subscribe(() => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'Note',\n });\n });\n }\n\n updateNote(entry: TimelineHistoryEntry) {\n this.modalService\n .fromComponent(EditNoteDialogComponent, {\n closable: true,\n locals: {\n displayPrivacyControls: false,\n note: entry.data.note,\n },\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.dataService.customer.updateCustomerNote({\n noteId: entry.id,\n note: result.note,\n });\n } else {\n return EMPTY;\n }\n }),\n )\n .subscribe(result => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'Note',\n });\n });\n }\n\n deleteNote(entry: TimelineHistoryEntry) {\n return this.modalService\n .dialog({\n title: _('common.confirm-delete-note'),\n body: entry.data.note,\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(switchMap(res => (res ? this.dataService.customer.deleteCustomerNote(entry.id) : EMPTY)))\n .subscribe(() => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'Note',\n });\n });\n }\n\n protected setFormValues(entity: CustomerWithOrders): void {\n const customerGroup = this.detailForm.get('customer');\n if (customerGroup) {\n customerGroup.patchValue({\n title: entity.title ?? null,\n firstName: entity.firstName,\n lastName: entity.lastName,\n phoneNumber: entity.phoneNumber ?? null,\n emailAddress: entity.emailAddress,\n password: '',\n customFields: {},\n });\n }\n\n if (entity.addresses) {\n const addressesArray = new UntypedFormArray([]);\n for (const address of entity.addresses) {\n const { customFields, ...rest } = address as typeof address & { customFields: any };\n const addressGroup = this.formBuilder.group({\n ...rest,\n countryCode: address.country.code,\n customFields: this.formBuilder.group(\n this.addressCustomFields.reduce(\n (hash, field) => ({\n ...hash,\n [field.name]: address['customFields'][field.name],\n }),\n {},\n ),\n ),\n });\n addressesArray.push(addressGroup);\n if (address.defaultShippingAddress) {\n this.defaultShippingAddressId = address.id;\n }\n if (address.defaultBillingAddress) {\n this.defaultBillingAddressId = address.id;\n }\n }\n this.detailForm.setControl('addresses', addressesArray);\n }\n\n if (this.customFields.length) {\n this.setCustomFieldFormValues(\n this.customFields,\n this.detailForm.get(['customer', 'customFields']),\n entity,\n );\n }\n this.changeDetector.markForCheck();\n }\n\n /**\n * Refetch the customer with the current order list settings.\n */\n private fetchOrdersList() {\n this.dataService\n .query(CustomerDetailQueryDocument, {\n id: this.id,\n orderListOptions: {\n take: this.ordersPerPage,\n skip: (this.currentOrdersPage - 1) * this.ordersPerPage,\n sort: { orderPlacedAt: SortOrder.DESC },\n },\n })\n .single$.pipe(\n map(data => data.customer),\n filter(notNullOrUndefined),\n )\n .subscribe(result => this.orderListUpdates$.next(result));\n }\n\n private refreshCustomer() {\n return this.dataService.query(CustomerDetailQueryDocument, {\n id: this.id,\n orderListOptions: { take: 0 },\n }).single$;\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"'UpdateCustomer'\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"customer-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card *ngIf=\"entity$ | async as customer\">\n <vdr-customer-status-label [customer]=\"customer\"></vdr-customer-status-label>\n <vdr-labeled-data\n class=\"last-login\"\n *ngIf=\"customer.user?.lastLogin as lastLogin\"\n [label]=\"'customer.last-login' | translate\"\n >\n <time [dateTime]=\"lastLogin\">{{ lastLogin | timeAgo }}</time>\n </vdr-labeled-data>\n </vdr-card>\n <vdr-card\n [title]=\"'customer.customer-groups' | translate\"\n *ngIf=\"(entity$ | async)?.groups as groups\"\n >\n <div *ngIf=\"groups.length; else noGroups\">\n <vdr-chip\n *ngFor=\"let group of groups\"\n [colorFrom]=\"group.id\"\n icon=\"times\"\n (iconClick)=\"removeFromGroup(group)\"\n >{{ group.name }}</vdr-chip\n >\n </div>\n <ng-template #noGroups>\n <span class=\"color-weight-400\">\n {{ 'customer.not-a-member-of-any-groups' | translate }}\n </span>\n </ng-template>\n <div>\n <button\n class=\"button-small mt-1\"\n (click)=\"addToGroup()\"\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.add-customer-to-group' | translate }}\n </button>\n </div>\n </vdr-card>\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field\n [label]=\"'customer.title' | translate\"\n for=\"title\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\n </vdr-form-field>\n <div><!-- spacer --></div>\n <vdr-form-field\n [label]=\"'customer.first-name' | translate\"\n for=\"firstName\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.last-name' | translate\"\n for=\"lastName\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.email-address' | translate\"\n for=\"emailAddress\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.phone-number' | translate\"\n for=\"phoneNumber\"\n [readOnlyToggle]=\"!(isNew$ | async)\"\n >\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'customer.password' | translate\"\n for=\"password\"\n *ngIf=\"isNew$ | async\"\n >\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card\n formGroupName=\"customFields\"\n *ngIf=\"customFields.length\"\n [title]=\"'common.custom-fields' | translate\"\n >\n <vdr-tabbed-custom-fields\n entityName=\"Customer\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customer.customFields')\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n </form>\n <vdr-custom-detail-component-host\n locationId=\"customer-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n <ng-container *ngIf=\"!(isNew$ | async)\">\n <vdr-card [title]=\"'customer.addresses' | translate\">\n <div class=\"form-grid\">\n <vdr-address-card\n *ngFor=\"let addressForm of getAddressFormControls()\"\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\n [availableCountries]=\"availableCountries$ | async\"\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\n [addressForm]=\"addressForm\"\n [customFields]=\"addressCustomFields\"\n [editable]=\"\n (['UpdateCustomer'] | hasPermission) &&\n !addressesToDeleteIds.has(addressForm.value.id)\n \"\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\n (deleteAddress)=\"toggleDeleteAddress($event)\"\n ></vdr-address-card>\n </div>\n <button\n class=\"btn btn-secondary mt-2\"\n (click)=\"addAddress()\"\n *vdrIfPermissions=\"'UpdateCustomer'\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-address' | translate }}\n </button>\n </vdr-card>\n <vdr-card [title]=\"'customer.orders' | translate\" [paddingX]=\"false\">\n <vdr-data-table-2\n id=\"customer-order-list\"\n [items]=\"orders$ | async\"\n [itemsPerPage]=\"ordersPerPage\"\n [totalItems]=\"ordersCount$ | async\"\n [currentPage]=\"currentOrdersPage\"\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\n (pageChange)=\"setOrderCurrentPage($event)\"\n >\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-order=\"item\">\n {{ order.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\"\n id=\"created-at\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-order=\"item\">\n {{ order.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\n <ng-template let-order=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/orders', order.id]\"\n ><span>{{ order.code }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'order.order-type' | translate\"\n id=\"order-type\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-order=\"item\">\n <vdr-chip>{{ order.type }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\">\n <ng-template let-order=\"item\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\n <ng-template let-order=\"item\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\">\n <ng-template let-order=\"item\">\n {{ order.updatedAt | timeAgo }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\n <ng-template let-order=\"item\">\n {{ order.orderPlacedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of customFields\"\n [customField]=\"customField\"\n />\n </vdr-data-table-2>\n </vdr-card>\n <vdr-card [title]=\"'customer.customer-history' | translate\">\n <vdr-customer-history\n [customer]=\"entity$ | async\"\n [history]=\"history$ | async\"\n (addNote)=\"addNoteToCustomer($event)\"\n (updateNote)=\"updateNote($event)\"\n (deleteNote)=\"deleteNote($event)\"\n ></vdr-customer-history>\n </vdr-card>\n </ng-container>\n </vdr-page-block>\n</vdr-page-detail-layout>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { ResultOf } from '@graphql-typed-document-node/core';\nimport {\n DataService,\n GetCustomerGroupDetailDocument,\n getCustomFieldsDefaults,\n ModalService,\n NotificationService,\n TypedBaseDetailComponent,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nexport const CUSTOMER_GROUP_DETAIL_QUERY = gql`\n query GetCustomerGroupDetail($id: ID!) {\n customerGroup(id: $id) {\n ...CustomerGroupDetail\n }\n }\n fragment CustomerGroupDetail on CustomerGroup {\n id\n createdAt\n updatedAt\n name\n }\n`;\n\n@Component({\n selector: 'vdr-customer-group-detail',\n templateUrl: './customer-group-detail.component.html',\n styleUrls: ['./customer-group-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerGroupDetailComponent\n extends TypedBaseDetailComponent<typeof GetCustomerGroupDetailDocument, 'customerGroup'>\n implements OnInit\n{\n customFields = this.getCustomFieldConfig('CustomerGroup');\n detailForm = this.formBuilder.group({\n name: '',\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n\n constructor(\n private formBuilder: FormBuilder,\n protected dataService: DataService,\n private modalService: ModalService,\n private notificationService: NotificationService,\n ) {\n super();\n }\n\n ngOnInit() {\n super.init();\n }\n\n create() {\n const formvalue = this.detailForm.value;\n if (formvalue.name) {\n this.dataService.customer\n .createCustomerGroup({\n name: formvalue.name,\n customFields: formvalue.customFields,\n customerIds: [],\n })\n .subscribe(\n ({ createCustomerGroup }) => {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'CustomerGroup',\n });\n this.detailForm.markAsPristine();\n this.router.navigate(['../', createCustomerGroup.id], { relativeTo: this.route });\n },\n err => {\n this.notificationService.error(_('common.notify-create-error'), {\n entity: 'CustomerGroup',\n });\n },\n );\n }\n }\n\n save() {\n const formValue = this.detailForm.value;\n this.dataService.customer.updateCustomerGroup({ id: this.id, ...formValue }).subscribe(\n () => {\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'CustomerGroup',\n });\n this.detailForm.markAsPristine();\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'CustomerGroup',\n });\n },\n );\n }\n\n protected setFormValues(\n entity: NonNullable<ResultOf<typeof GetCustomerGroupDetailDocument>['customerGroup']>,\n ) {\n this.detailForm.patchValue({\n name: entity.name,\n });\n\n if (this.customFields.length) {\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);\n }\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-group-detail\"></vdr-action-bar-items>\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"'UpdateCustomer'\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"!(detailForm.valid && detailForm.dirty)\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<form class=\"form\" [formGroup]=\"detailForm\">\n <vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card *ngIf=\"entity$ | async as entity\">\n <vdr-page-entity-info [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input id=\"name\" type=\"text\" formControlName=\"name\" />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card\n formGroupName=\"customFields\"\n *ngIf=\"customFields.length\"\n [title]=\"'common.custom-fields' | translate\"\n >\n <vdr-tabbed-custom-fields\n entityName=\"CustomerGroup\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"customer-group-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n </vdr-page-block>\n </vdr-page-detail-layout>\n</form>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport {\n CreateCustomerGroupInput,\n CustomFieldConfig,\n Dialog,\n getCustomFieldsDefaults,\n ServerConfigService,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-customer-group-detail-dialog',\n templateUrl: './customer-group-detail-dialog.component.html',\n styleUrls: ['./customer-group-detail-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerGroupDetailDialogComponent implements Dialog<CreateCustomerGroupInput>, OnInit {\n group: { id?: string; name: string; customFields?: { [name: string]: any } };\n resolveWith: (result?: CreateCustomerGroupInput) => void;\n customFields: CustomFieldConfig[];\n form: UntypedFormGroup;\n\n constructor(\n private serverConfigService: ServerConfigService,\n private formBuilder: UntypedFormBuilder,\n ) {\n this.customFields = this.serverConfigService.getCustomFieldsFor('CustomerGroup');\n }\n\n ngOnInit() {\n this.form = this.formBuilder.group({\n name: [this.group.name, Validators.required],\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n if (this.customFields.length) {\n const customFieldsGroup = this.form.get('customFields') as UntypedFormGroup;\n\n for (const fieldDef of this.customFields) {\n const key = fieldDef.name;\n const value = this.group.customFields?.[key];\n const control = customFieldsGroup.get(key);\n if (control) {\n control.patchValue(value);\n }\n }\n }\n }\n\n cancel() {\n this.resolveWith();\n }\n\n save() {\n this.resolveWith(this.form.value);\n }\n}\n","<ng-template vdrDialogTitle>\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\n</ng-template>\n<form [formGroup]=\"form\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(['CreateCustomerGroup', 'UpdateCustomerGroup'] | hasPermission)\"\n />\n </vdr-form-field>\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\n <label>{{ 'common.custom-fields' | translate }}</label>\n <vdr-tabbed-custom-fields\n entityName=\"CustomerGroup\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"form.get('customFields')\"\n ></vdr-tabbed-custom-fields>\n </section>\n</form>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"save()\" [disabled]=\"!form.valid\" class=\"btn btn-primary\">\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\n </button>\n</ng-template>\n","import { createBulkDeleteAction, GetCustomerGroupsQuery, ItemOf, Permission } from '@vendure/admin-ui/core';\nimport { map } from 'rxjs/operators';\n\nexport const deleteCustomerGroupsBulkAction = createBulkDeleteAction<\n ItemOf<GetCustomerGroupsQuery, 'customerGroups'>\n>({\n location: 'customer-group-list',\n requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomerGroup),\n getItemName: item => item.name,\n bulkDelete: (dataService, ids) =>\n dataService.customer.deleteCustomerGroups(ids).pipe(map(res => res.deleteCustomerGroups)),\n});\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CUSTOMER_GROUP_FRAGMENT,\n DataService,\n GetCustomerGroupListDocument,\n GetCustomerGroupsQuery,\n GetCustomerGroupWithCustomersQuery,\n ItemOf,\n ModalService,\n NotificationService,\n TypedBaseListComponent,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { BehaviorSubject, combineLatest, EMPTY, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, mapTo, switchMap } from 'rxjs/operators';\n\nimport { AddCustomerToGroupDialogComponent } from '../add-customer-to-group-dialog/add-customer-to-group-dialog.component';\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\n\nexport const GET_CUSTOMER_GROUP_LIST = gql`\n query GetCustomerGroupList($options: CustomerGroupListOptions) {\n customerGroups(options: $options) {\n items {\n ...CustomerGroup\n }\n totalItems\n }\n }\n ${CUSTOMER_GROUP_FRAGMENT}\n`;\n\n@Component({\n selector: 'vdr-customer-group-list',\n templateUrl: './customer-group-list.component.html',\n styleUrls: ['./customer-group-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CustomerGroupListComponent\n extends TypedBaseListComponent<typeof GetCustomerGroupListDocument, 'customerGroups'>\n implements OnInit\n{\n dataTableListId = 'customer-group-list';\n readonly customFields = this.getCustomFieldConfig('CustomerGroup');\n activeGroup$: Observable<ItemOf<GetCustomerGroupsQuery, 'customerGroups'> | undefined>;\n activeIndex$: Observable<number>;\n listIsEmpty$: Observable<boolean>;\n members$: Observable<\n NonNullable<GetCustomerGroupWithCustomersQuery['customerGroup']>['customers']['items']\n >;\n membersTotal$: Observable<number>;\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\n skip: 0,\n take: 0,\n filterTerm: '',\n });\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilter({\n name: 'name',\n type: { kind: 'text' },\n label: _('common.name'),\n filterField: 'name',\n })\n .connectToRoute(this.route);\n\n readonly sorts = this.createSortCollection()\n .defaultSort('createdAt', 'DESC')\n .addSort({ name: 'createdAt' })\n .addSort({ name: 'updatedAt' })\n .addSort({ name: 'name' })\n .connectToRoute(this.route);\n private refreshActiveGroupMembers$ = new BehaviorSubject<void>(undefined);\n\n constructor(\n protected dataService: DataService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n public route: ActivatedRoute,\n protected router: Router,\n ) {\n super();\n super.configure({\n document: GetCustomerGroupListDocument,\n getItems: data => data.customerGroups,\n setVariables: (skip, take) => ({\n options: {\n skip,\n take,\n filter: {\n name: { contains: this.searchTermControl.value },\n ...this.filters.createFilterInput(),\n },\n sort: this.sorts.createSortInput(),\n },\n }),\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\n });\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n const activeGroupId$ = this.route.paramMap.pipe(\n map(pm => pm.get('contents')),\n distinctUntilChanged(),\n );\n this.listIsEmpty$ = this.items$.pipe(map(groups => groups.length === 0));\n this.activeGroup$ = combineLatest(this.items$, activeGroupId$).pipe(\n map(([groups, activeGroupId]) => {\n if (activeGroupId) {\n return groups.find(g => g.id === activeGroupId);\n }\n }),\n );\n this.activeIndex$ = combineLatest(this.items$, activeGroupId$).pipe(\n map(([groups, activeGroupId]) => {\n if (activeGroupId) {\n return groups.findIndex(g => g.id === activeGroupId);\n } else {\n return -1;\n }\n }),\n );\n const membersResult$ = combineLatest(\n this.activeGroup$,\n this.fetchGroupMembers$,\n this.refreshActiveGroupMembers$,\n ).pipe(\n switchMap(([activeGroup, { skip, take, filterTerm }]) => {\n if (activeGroup) {\n return this.dataService.customer\n .getCustomerGroupWithCustomers(activeGroup.id, {\n skip,\n take,\n filter: {\n emailAddress: {\n contains: filterTerm,\n },\n },\n })\n .mapStream(res => res.customerGroup?.customers);\n } else {\n return of(undefined);\n }\n }),\n );\n\n this.members$ = membersResult$.pipe(map(res => res?.items ?? []));\n this.membersTotal$ = membersResult$.pipe(map(res => res?.totalItems ?? 0));\n }\n\n closeMembers() {\n const params = { ...this.route.snapshot.params };\n delete params.contents;\n this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });\n }\n\n addToGroup(group: NonNullable<GetCustomerGroupWithCustomersQuery['customerGroup']>) {\n this.modalService\n .fromComponent(AddCustomerToGroupDialogComponent, {\n locals: {\n group,\n route: this.route,\n },\n size: 'md',\n verticalAlign: 'top',\n })\n .pipe(\n switchMap(customerIds =>\n customerIds\n ? this.dataService.customer\n .addCustomersToGroup(group.id, customerIds)\n .pipe(mapTo(customerIds))\n : EMPTY,\n ),\n )\n .subscribe({\n next: result => {\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\n customerCount: result.length,\n groupName: group.name,\n });\n this.refreshActiveGroupMembers$.next();\n },\n });\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\n <a class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" [routerLink]=\"['./', 'create']\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-customer-group' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"customer-group-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-split-view [rightPanelOpen]=\"activeGroup$ | async\" (closeClicked)=\"closeMembers()\">\n <ng-template vdrSplitViewLeft>\n <vdr-data-table-2\n class=\"mt-2\"\n [id]=\"dataTableListId\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n [activeIndex]=\"activeIndex$ | async\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\n >\n <vdr-bulk-action-menu\n locationId=\"customer-group-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'common.search-by-name' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-customerGroup=\"item\">\n {{ customerGroup.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.name' | translate\" id=\"name\"\n [optional]=\"false\"\n [sort]=\"sorts.get('name')\"\n >\n <ng-template let-customerGroup=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', customerGroup.id]\"\n ><span>{{ customerGroup.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\n <vdr-dt2-column\n [heading]=\"'common.view-contents' | translate\" id=\"view-contents\"\n [optional]=\"false\"\n >\n <ng-template let-customerGroup=\"item\">\n <a\n class=\"button-small bg-weight-150\"\n [routerLink]=\"['./', { contents: customerGroup.id }]\"\n queryParamsHandling=\"preserve\"\n >\n <span>{{ 'customer.view-group-members' | translate }}</span>\n <clr-icon shape=\"file-group\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </ng-template>\n <ng-template vdrSplitViewRight [splitViewTitle]=\"(activeGroup$ | async)?.name\">\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\n <button class=\"button-ghost ml-4\" (click)=\"addToGroup(activeGroup)\">\n <clr-icon shape=\"plus\"></clr-icon>\n <span>{{\n 'customer.add-customers-to-group' | translate : { groupName: activeGroup.name }\n }}</span>\n </button>\n <vdr-customer-group-member-list\n locationId=\"customer-group-members-list\"\n [members]=\"members$ | async\"\n [route]=\"route\"\n [totalItems]=\"membersTotal$ | async\"\n [activeGroup]=\"activeGroup$ | async\"\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\n />\n </ng-container>\n </ng-template>\n</vdr-split-view>\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BulkAction,\n DataService,\n ModalService,\n NotificationService,\n Permission,\n} from '@vendure/admin-ui/core';\nimport {\n CustomerGroupMember,\n CustomerGroupMemberListComponent,\n} from './customer-group-member-list.component';\n\nexport const removeCustomerGroupMembersBulkAction: BulkAction<\n CustomerGroupMember,\n CustomerGroupMemberListComponent\n> = {\n location: 'customer-group-members-list',\n label: _('customer.remove-from-group'),\n icon: 'trash',\n iconClass: 'is-danger',\n requiresPermission: Permission.UpdateCustomerGroup,\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n const dataService = injector.get(DataService);\n const notificationService = injector.get(NotificationService);\n\n const group = hostComponent.activeGroup;\n const customerIds = selection.map(s => s.id);\n\n dataService.customer.removeCustomersFromGroup(group.id, customerIds).subscribe({\n complete: () => {\n notificationService.success(_(`customer.remove-customers-from-group-success`), {\n customerCount: customerIds.length,\n groupName: group.name,\n });\n clearSelection();\n hostComponent.refresh();\n },\n });\n },\n};\n","import { createBulkDeleteAction, GetCustomerListQuery, ItemOf, Permission } from '@vendure/admin-ui/core';\nimport { map } from 'rxjs/operators';\n\nexport const deleteCustomersBulkAction = createBulkDeleteAction<ItemOf<GetCustomerListQuery, 'customers'>>({\n location: 'customer-list',\n requiresPermission: userPermissions => userPermissions.includes(Permission.DeleteCustomer),\n getItemName: item => item.firstName + ' ' + item.lastName,\n bulkDelete: (dataService, ids) =>\n dataService.customer.deleteCustomers(ids).pipe(map(res => res.deleteCustomers)),\n});\n","import { Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { CustomerListQueryDocument, LogicalOperator, TypedBaseListComponent } from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nexport const CUSTOMER_LIST_QUERY = gql`\n query CustomerListQuery($options: CustomerListOptions) {\n customers(options: $options) {\n items {\n ...CustomerListItem\n }\n totalItems\n }\n }\n\n fragment CustomerListItem on Customer {\n id\n createdAt\n updatedAt\n title\n firstName\n lastName\n emailAddress\n user {\n id\n verified\n }\n }\n`;\n\n@Component({\n selector: 'vdr-customer-list',\n templateUrl: './customer-list.component.html',\n styleUrls: ['./customer-list.component.scss'],\n standalone: false,\n})\nexport class CustomerListComponent\n extends TypedBaseListComponent<typeof CustomerListQueryDocument, 'customers'>\n implements OnInit\n{\n dataTableListId = 'customer-list';\n readonly customFields = this.getCustomFieldConfig('Customer');\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilter({\n name: 'firstName',\n type: { kind: 'text' },\n label: _('customer.first-name'),\n filterField: 'firstName',\n })\n .addFilter({\n name: 'lastName',\n type: { kind: 'text' },\n label: _('customer.last-name'),\n filterField: 'lastName',\n })\n .addFilter({\n name: 'emailAddress',\n type: { kind: 'text' },\n label: _('customer.email-address'),\n filterField: 'emailAddress',\n })\n .addCustomFieldFilters(this.customFields)\n .connectToRoute(this.route);\n\n readonly sorts = this.createSortCollection()\n .defaultSort('createdAt', 'DESC')\n .addSort({ name: 'createdAt' })\n .addSort({ name: 'updatedAt' })\n .addSort({ name: 'lastName' })\n .addSort({ name: 'emailAddress' })\n .addCustomFieldSorts(this.customFields)\n .connectToRoute(this.route);\n\n constructor() {\n super();\n this.configure({\n document: CustomerListQueryDocument,\n getItems: data => data.customers,\n setVariables: (skip, take) => ({\n options: {\n skip,\n take,\n filter: {\n ...(this.searchTermControl.value\n ? {\n emailAddress: {\n contains: this.searchTermControl.value,\n },\n lastName: {\n contains: this.searchTermControl.value,\n },\n postalCode: {\n contains: this.searchTermControl.value,\n },\n }\n : {}),\n ...this.filters.createFilterInput(),\n },\n filterOperator: this.searchTermControl.value ? LogicalOperator.OR : LogicalOperator.AND,\n sort: this.sorts.createSortInput(),\n },\n }),\n refreshListOnChanges: [this.sorts.valueChanges, this.filters.valueChanges],\n });\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left> </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"customer-list\"></vdr-action-bar-items>\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateCustomer'\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'customer.create-new-customer' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"customer-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-data-table-2\n class=\"mt-2\"\n [id]=\"dataTableListId\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\n>\n <vdr-bulk-action-menu\n locationId=\"customer-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'customer.search-customers-by-email-last-name-postal-code' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-customer=\"item\">\n {{ customer.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-customer=\"item\">\n {{ customer.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-customer=\"item\">\n {{ customer.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('lastName')\">\n <ng-template let-customer=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', customer.id]\"\n ><span> {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }} </span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.status' | translate\" id=\"status\">\n <ng-template let-customer=\"item\">\n <vdr-customer-status-label [customer]=\"customer\" />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'customer.email-address' | translate\" id=\"email-address\" [sort]=\"sorts.get('emailAddress')\">\n <ng-template let-customer=\"item\">\n {{ customer.emailAddress }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\n</vdr-data-table-2>\n","import { Route } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { CustomerFragment, detailBreadcrumb, PageComponent, PageService } from '@vendure/admin-ui/core';\n\nexport const createRoutes = (pageService: PageService): Route[] => [\n {\n path: 'customers',\n component: PageComponent,\n data: {\n locationId: 'customer-list',\n breadcrumb: _('breadcrumb.customers'),\n },\n children: pageService.getPageTabRoutes('customer-list'),\n },\n {\n path: 'customers/:id',\n component: PageComponent,\n data: {\n locationId: 'customer-detail',\n breadcrumb: { label: _('breadcrumb.customers'), link: ['../', 'customers'] },\n },\n children: pageService.getPageTabRoutes('customer-detail'),\n },\n {\n path: 'groups',\n component: PageComponent,\n data: {\n locationId: 'customer-group-list',\n breadcrumb: _('breadcrumb.customer-groups'),\n },\n children: pageService.getPageTabRoutes('customer-group-list'),\n },\n {\n path: 'groups/:id',\n component: PageComponent,\n data: {\n locationId: 'customer-group-detail',\n breadcrumb: { label: _('breadcrumb.customer-groups'), link: ['../', 'groups'] },\n },\n children: pageService.getPageTabRoutes('customer-group-detail'),\n },\n];\n\nexport function customerBreadcrumb(data: any, params: any) {\n return detailBreadcrumb<CustomerFragment>({\n entity: data.entity,\n id: params.id,\n breadcrumbKey: 'breadcrumb.customers',\n getName: customer => `${customer.firstName} ${customer.lastName}`,\n route: 'customers',\n });\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BulkActionRegistryService,\n CustomerDetailQueryDocument,\n detailComponentWithResolver,\n GetCustomerGroupDetailDocument,\n PageService,\n SharedModule,\n SortOrder,\n} from '@vendure/admin-ui/core';\n\nimport { AddCustomerToGroupDialogComponent } from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\nimport { AddressCardComponent } from './components/address-card/address-card.component';\nimport { AddressDetailDialogComponent } from './components/address-detail-dialog/address-detail-dialog.component';\nimport { CustomerDetailComponent } from './components/customer-detail/customer-detail.component';\nimport { CustomerGroupDetailDialogComponent } from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\nimport { deleteCustomerGroupsBulkAction } from './components/customer-group-list/customer-group-list-bulk-actions';\nimport { CustomerGroupListComponent } from './components/customer-group-list/customer-group-list.component';\nimport { removeCustomerGroupMembersBulkAction } from './components/customer-group-member-list/customer-group-member-list-bulk-actions';\nimport { CustomerGroupMemberListComponent } from './components/customer-group-member-list/customer-group-member-list.component';\nimport { CustomerHistoryEntryHostComponent } from './components/customer-history/customer-history-entry-host.component';\nimport { CustomerHistoryComponent } from './components/customer-history/customer-history.component';\nimport { deleteCustomersBulkAction } from './components/customer-list/customer-list-bulk-actions';\nimport { CustomerListComponent } from './components/customer-list/customer-list.component';\nimport { CustomerStatusLabelComponent } from './components/customer-status-label/customer-status-label.component';\nimport { SelectCustomerGroupDialogComponent } from './components/select-customer-group-dialog/select-customer-group-dialog.component';\nimport { createRoutes } from './customer.routes';\nimport { CustomerGroupDetailComponent } from './components/customer-group-detail/customer-group-detail.component';\n\n@NgModule({\n imports: [SharedModule, RouterModule.forChild([])],\n providers: [\n {\n provide: ROUTES,\n useFactory: (pageService: PageService) => createRoutes(pageService),\n multi: true,\n deps: [PageService],\n },\n ],\n declarations: [\n CustomerListComponent,\n CustomerDetailComponent,\n CustomerStatusLabelComponent,\n AddressCardComponent,\n CustomerGroupListComponent,\n CustomerGroupDetailDialogComponent,\n AddCustomerToGroupDialogComponent,\n CustomerGroupMemberListComponent,\n SelectCustomerGroupDialogComponent,\n CustomerHistoryComponent,\n AddressDetailDialogComponent,\n CustomerHistoryEntryHostComponent,\n CustomerGroupDetailComponent,\n ],\n exports: [AddressCardComponent],\n})\nexport class CustomerModule {\n private static hasRegisteredTabsAndBulkActions = false;\n\n constructor(bulkActionRegistryService: BulkActionRegistryService, pageService: PageService) {\n if (CustomerModule.hasRegisteredTabsAndBulkActions) {\n return;\n }\n bulkActionRegistryService.registerBulkAction(deleteCustomersBulkAction);\n bulkActionRegistryService.registerBulkAction(deleteCustomerGroupsBulkAction);\n bulkActionRegistryService.registerBulkAction(removeCustomerGroupMembersBulkAction);\n\n pageService.registerPageTab({\n priority: 0,\n location: 'customer-list',\n tab: _('customer.customers'),\n route: '',\n component: CustomerListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'customer-detail',\n tab: _('customer.customer'),\n route: '',\n component: detailComponentWithResolver({\n component: CustomerDetailComponent,\n query: CustomerDetailQueryDocument,\n entityKey: 'customer',\n variables: {\n orderListOptions: {\n sort: {\n orderPlacedAt: SortOrder.DESC,\n },\n },\n },\n getBreadcrumbs: entity => [\n {\n label: entity\n ? `${entity?.firstName} ${entity?.lastName}`\n : _('customer.create-new-customer'),\n link: [entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'customer-group-list',\n tab: _('customer.customer-groups'),\n route: '',\n component: CustomerGroupListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'customer-group-detail',\n tab: _('customer.customer-group'),\n route: '',\n component: detailComponentWithResolver({\n component: CustomerGroupDetailComponent,\n query: GetCustomerGroupDetailDocument,\n entityKey: 'customerGroup',\n getBreadcrumbs: entity => [\n {\n label: entity ? entity.name : _('customer.create-new-customer-group'),\n link: [entity?.id],\n },\n ],\n }),\n });\n CustomerModule.hasRegisteredTabsAndBulkActions = true;\n }\n}\n","// This file was generated by the build-public-api.ts script\nexport * from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\nexport * from './components/address-card/address-card.component';\nexport * from './components/address-detail-dialog/address-detail-dialog.component';\nexport * from './components/customer-detail/customer-detail.component';\nexport * from './components/customer-group-detail/customer-group-detail.component';\nexport * from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\nexport * from './components/customer-group-list/customer-group-list-bulk-actions';\nexport * from './components/customer-group-list/customer-group-list.component';\nexport * from './components/customer-group-member-list/customer-group-member-list-bulk-actions';\nexport * from './components/customer-group-member-list/customer-group-member-list.component';\nexport * from './components/customer-history/customer-history-entry-host.component';\nexport * from './components/customer-history/customer-history.component';\nexport * from './components/customer-list/customer-list-bulk-actions';\nexport * from './components/customer-list/customer-list.component';\nexport * from './components/customer-status-label/customer-status-label.component';\nexport * from './components/select-customer-group-dialog/select-customer-group-dialog.component';\nexport * from './customer.module';\nexport * from './customer.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4.CustomerStatusLabelComponent","i5","i6","i2.CustomerGroupMemberListComponent","i4","i5.CustomerHistoryEntryHostComponent","_","i6.CustomerStatusLabelComponent","i7.AddressCardComponent","i8.CustomerHistoryComponent","i9","i5.CustomerGroupMemberListComponent","i5.CustomerStatusLabelComponent"],"mappings":"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"}