@vendure/admin-ui 1.4.7 → 1.5.2
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.
- package/bundles/vendure-admin-ui-catalog.umd.js +134 -143
- package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-core.umd.js +329 -269
- package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-customer.umd.js +51 -20
- package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-order.umd.js +109 -19
- package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-settings.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-system.umd.js.map +1 -1
- package/catalog/components/{product-assets/product-assets.component.d.ts → assets/assets.component.d.ts} +4 -10
- package/catalog/components/product-detail/product-detail.component.d.ts +2 -1
- package/catalog/components/product-variants-list/product-variants-list.component.d.ts +2 -1
- package/catalog/public_api.d.ts +1 -1
- package/catalog/vendure-admin-ui-catalog.metadata.json +1 -1
- package/core/common/generated-types.d.ts +109 -6
- package/core/common/version.d.ts +1 -1
- package/core/data/definitions/customer-definitions.d.ts +1 -0
- package/core/data/providers/customer-data.service.d.ts +1 -0
- package/core/data/providers/promotion-data.service.d.ts +2 -2
- package/core/public_api.d.ts +2 -0
- package/core/shared/components/asset-preview-links/asset-preview-links.component.d.ts +5 -0
- package/core/shared/components/object-tree/object-tree.component.d.ts +3 -3
- package/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.d.ts +15 -0
- package/core/vendure-admin-ui-core.metadata.json +1 -1
- package/customer/components/address-card/address-card.component.d.ts +2 -0
- package/customer/components/customer-detail/customer-detail.component.d.ts +2 -0
- package/customer/components/customer-list/customer-list.component.d.ts +1 -2
- package/customer/vendure-admin-ui-customer.metadata.json +1 -1
- package/esm2015/catalog/catalog.module.js +3 -3
- package/esm2015/catalog/components/assets/assets.component.js +93 -0
- package/esm2015/catalog/components/collection-detail/collection-detail.component.js +2 -2
- package/esm2015/catalog/components/facet-detail/facet-detail.component.js +3 -3
- package/esm2015/catalog/components/product-detail/product-detail.component.js +4 -3
- package/esm2015/catalog/components/product-variants-list/product-variants-list.component.js +9 -2
- package/esm2015/catalog/public_api.js +2 -2
- package/esm2015/core/common/generated-types.js +30 -1
- package/esm2015/core/common/introspection-result.js +189 -249
- package/esm2015/core/common/utilities/configurable-operation-utils.js +21 -3
- package/esm2015/core/common/version.js +2 -2
- package/esm2015/core/data/definitions/customer-definitions.js +8 -1
- package/esm2015/core/data/definitions/order-definitions.js +2 -1
- package/esm2015/core/data/providers/customer-data.service.js +5 -2
- package/esm2015/core/data/providers/interceptor.js +1 -1
- package/esm2015/core/data/providers/promotion-data.service.js +3 -2
- package/esm2015/core/data/providers/shipping-method-data.service.js +1 -1
- package/esm2015/core/data/utils/remove-readonly-custom-fields.js +1 -1
- package/esm2015/core/public_api.js +3 -1
- package/esm2015/core/shared/components/address-form/address-form.component.js +1 -1
- package/esm2015/core/shared/components/asset-gallery/asset-gallery.component.js +2 -2
- package/esm2015/core/shared/components/asset-preview/asset-preview.component.js +4 -4
- package/esm2015/core/shared/components/asset-preview-links/asset-preview-links.component.js +18 -0
- package/esm2015/core/shared/components/object-tree/object-tree.component.js +3 -3
- package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.js +48 -0
- package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.js +2 -2
- package/esm2015/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.js +1 -1
- package/esm2015/core/shared/shared.module.js +5 -1
- package/esm2015/customer/components/address-card/address-card.component.js +9 -3
- package/esm2015/customer/components/customer-detail/customer-detail.component.js +35 -13
- package/esm2015/customer/components/customer-list/customer-list.component.js +12 -9
- package/esm2015/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.js +1 -1
- package/esm2015/order/components/cancel-order-dialog/cancel-order-dialog.component.js +36 -6
- package/esm2015/order/components/fulfill-order-dialog/fulfill-order-dialog.component.js +1 -1
- package/esm2015/order/components/line-refunds/line-refunds.component.js +1 -1
- package/esm2015/order/components/modification-detail/modification-detail.component.js +1 -1
- package/esm2015/order/components/order-detail/order-detail.component.js +2 -2
- package/esm2015/order/components/order-editor/order-editor.component.js +23 -8
- package/esm2015/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.js +1 -1
- package/esm2015/order/components/order-history/order-history.component.js +2 -2
- package/esm2015/order/components/order-list/order-list.component.js +1 -1
- package/esm2015/order/components/order-table/order-table.component.js +3 -3
- package/esm2015/order/components/refund-order-dialog/refund-order-dialog.component.js +10 -5
- package/esm2015/order/order.routes.js +1 -1
- package/esm2015/settings/components/role-list/role-list.component.js +1 -1
- package/esm2015/settings/components/test-order-builder/test-order-builder.component.js +1 -1
- package/esm2015/settings/providers/routing/shipping-method-resolver.js +1 -1
- package/esm2015/system/components/job-list/job-list.component.js +1 -1
- package/fesm2015/vendure-admin-ui-catalog.js +105 -111
- package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
- package/fesm2015/vendure-admin-ui-core.js +310 -249
- package/fesm2015/vendure-admin-ui-core.js.map +1 -1
- package/fesm2015/vendure-admin-ui-customer.js +53 -22
- package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
- package/fesm2015/vendure-admin-ui-order.js +69 -19
- package/fesm2015/vendure-admin-ui-order.js.map +1 -1
- package/fesm2015/vendure-admin-ui-settings.js.map +1 -1
- package/fesm2015/vendure-admin-ui-system.js.map +1 -1
- package/order/components/cancel-order-dialog/cancel-order-dialog.component.d.ts +3 -0
- package/order/components/order-editor/order-editor.component.d.ts +8 -2
- package/order/vendure-admin-ui-order.metadata.json +1 -1
- package/package.json +5 -5
- package/static/i18n-messages/cs.json +7 -1
- package/static/i18n-messages/de.json +7 -1
- package/static/i18n-messages/en.json +9 -3
- package/static/i18n-messages/es.json +7 -1
- package/static/i18n-messages/fr.json +7 -1
- package/static/i18n-messages/it.json +7 -1
- package/static/i18n-messages/pl.json +7 -1
- package/static/i18n-messages/pt_BR.json +7 -1
- package/static/i18n-messages/pt_PT.json +7 -1
- package/static/i18n-messages/ru.json +7 -1
- package/static/i18n-messages/uk.json +7 -1
- package/static/i18n-messages/zh_Hans.json +7 -1
- package/static/i18n-messages/zh_Hant.json +7 -1
- package/static/styles/global/_overrides.scss +6 -0
- package/static/theme.min.css +1 -1
- package/static/vendure-ui-config.json +25 -10
- package/esm2015/catalog/components/product-assets/product-assets.component.js +0 -108
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendure-admin-ui-customer.js","sources":["../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.ts","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.ts","../../src/lib/customer/src/components/address-card/address-card.component.ts","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.ts","../../src/lib/customer/src/components/customer-detail/customer-detail.component.ts","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.ts","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.ts","../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.ts","../../src/lib/customer/src/providers/routing/customer-resolver.ts","../../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, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { DataService, Dialog, GetCustomerGroups, GetCustomerList } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\r\n\r\n@Component({\r\n selector: 'vdr-add-customer-to-group-dialog',\r\n templateUrl: './add-customer-to-group-dialog.component.html',\r\n styleUrls: ['./add-customer-to-group-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddCustomerToGroupDialogComponent implements Dialog<string[]>, OnInit {\r\n resolveWith: (result?: string[]) => void;\r\n group: GetCustomerGroups.Items;\r\n route: ActivatedRoute;\r\n selectedCustomerIds: string[] = [];\r\n customers$: Observable<GetCustomerList.Items[]>;\r\n customersTotal$: Observable<number>;\r\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\r\n skip: 0,\r\n take: 10,\r\n filterTerm: '',\r\n });\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n const customerResult$ = this.fetchGroupMembers$.pipe(\r\n switchMap(({ skip, take, filterTerm }) => {\r\n return this.dataService.customer\r\n .getCustomerList(take, skip, filterTerm)\r\n .mapStream((res) => res.customers);\r\n }),\r\n );\r\n\r\n this.customers$ = customerResult$.pipe(map((res) => res.items));\r\n this.customersTotal$ = customerResult$.pipe(map((res) => res.totalItems));\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n add() {\r\n this.resolveWith(this.selectedCustomerIds);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig, Dialog, GetAvailableCountries } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-address-detail-dialog',\r\n templateUrl: './address-detail-dialog.component.html',\r\n styleUrls: ['./address-detail-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddressDetailDialogComponent implements Dialog<FormGroup>, OnInit {\r\n addressForm: FormGroup;\r\n customFields: CustomFieldConfig;\r\n availableCountries: GetAvailableCountries.Items[] = [];\r\n resolveWith: (result?: FormGroup) => void;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n this.addressForm.valueChanges.subscribe(() => this.changeDetector.markForCheck());\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n save() {\r\n this.resolveWith(this.addressForm);\r\n }\r\n}\r\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 { FormControl, FormGroup } from '@angular/forms';\nimport { CustomFieldConfig, GetAvailableCountries, 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})\nexport class AddressCardComponent implements OnInit, OnChanges {\n @Input() addressForm: FormGroup;\n @Input() customFields: CustomFieldConfig;\n @Input() availableCountries: GetAvailableCountries.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 private dataDependenciesPopulated = new BehaviorSubject<boolean>(false);\n\n constructor(private modalService: ModalService, private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n const streetLine1 = this.addressForm.get('streetLine1') as FormControl;\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 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","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { DataService, Dialog, GetCustomerGroups, GetCustomerList } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-select-customer-group-dialog',\r\n templateUrl: './select-customer-group-dialog.component.html',\r\n styleUrls: ['./select-customer-group-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SelectCustomerGroupDialogComponent implements Dialog<string[]>, OnInit {\r\n resolveWith: (result?: string[]) => void;\r\n groups$: Observable<GetCustomerGroups.Items[]>;\r\n selectedGroupIds: string[] = [];\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.groups$ = this.dataService.customer\r\n .getCustomerGroupList()\r\n .mapStream((res) => res.customerGroups.items);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n add() {\r\n this.resolveWith(this.selectedGroupIds);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseDetailComponent,\r\n CreateAddressInput,\r\n CreateCustomerAddress,\r\n CreateCustomerAddressMutation,\r\n CreateCustomerInput,\r\n Customer,\r\n CustomFieldConfig,\r\n DataService,\r\n EditNoteDialogComponent,\r\n GetAvailableCountries,\r\n GetCustomer,\r\n GetCustomerHistory,\r\n GetCustomerQuery,\r\n HistoryEntry,\r\n ModalService,\r\n NotificationService,\r\n ServerConfigService,\r\n SortOrder,\r\n UpdateCustomer,\r\n UpdateCustomerAddress,\r\n UpdateCustomerAddressMutation,\r\n UpdateCustomerInput,\r\n UpdateCustomerMutation,\r\n} from '@vendure/admin-ui/core';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { EMPTY, forkJoin, from, Observable, Subject } from 'rxjs';\r\nimport {\r\n concatMap,\r\n filter,\r\n map,\r\n merge,\r\n mergeMap,\r\n shareReplay,\r\n startWith,\r\n switchMap,\r\n take,\r\n} from 'rxjs/operators';\r\n\r\nimport { SelectCustomerGroupDialogComponent } from '../select-customer-group-dialog/select-customer-group-dialog.component';\r\n\r\ntype CustomerWithOrders = NonNullable<GetCustomerQuery['customer']>;\r\n\r\n@Component({\r\n selector: 'vdr-customer-detail',\r\n templateUrl: './customer-detail.component.html',\r\n styleUrls: ['./customer-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerDetailComponent\r\n extends BaseDetailComponent<CustomerWithOrders>\r\n implements OnInit, OnDestroy\r\n{\r\n detailForm: FormGroup;\r\n customFields: CustomFieldConfig[];\r\n addressCustomFields: CustomFieldConfig[];\r\n availableCountries$: Observable<GetAvailableCountries.Items[]>;\r\n orders$: Observable<GetCustomer.Items[]>;\r\n ordersCount$: Observable<number>;\r\n history$: Observable<GetCustomerHistory.Items[] | undefined>;\r\n fetchHistory = new Subject<void>();\r\n defaultShippingAddressId: string;\r\n defaultBillingAddressId: string;\r\n addressDefaultsUpdated = false;\r\n ordersPerPage = 10;\r\n currentOrdersPage = 1;\r\n private orderListUpdates$ = new Subject<CustomerWithOrders>();\r\n\r\n constructor(\r\n route: ActivatedRoute,\r\n router: Router,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n private formBuilder: FormBuilder,\r\n protected dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n\r\n this.customFields = this.getCustomFieldConfig('Customer');\r\n this.addressCustomFields = this.getCustomFieldConfig('Address');\r\n this.detailForm = this.formBuilder.group({\r\n customer: this.formBuilder.group({\r\n title: '',\r\n firstName: ['', Validators.required],\r\n lastName: ['', Validators.required],\r\n phoneNumber: '',\r\n emailAddress: ['', [Validators.required, Validators.email]],\r\n password: '',\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n }),\r\n addresses: new FormArray([]),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.availableCountries$ = this.dataService.settings\r\n .getAvailableCountries()\r\n .mapSingle(result => result.countries.items)\r\n .pipe(shareReplay(1));\r\n\r\n const customerWithUpdates$ = this.entity$.pipe(merge(this.orderListUpdates$));\r\n this.orders$ = customerWithUpdates$.pipe(map(customer => customer.orders.items));\r\n this.ordersCount$ = this.entity$.pipe(map(customer => customer.orders.totalItems));\r\n this.history$ = this.fetchHistory.pipe(\r\n startWith(null),\r\n switchMap(() => {\r\n return this.dataService.customer\r\n .getCustomerHistory(this.id, {\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n })\r\n .mapStream(data => data.customer?.history.items);\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n this.orderListUpdates$.complete();\r\n }\r\n\r\n getAddressFormControls(): FormControl[] {\r\n const formArray = this.detailForm.get(['addresses']) as FormArray;\r\n return formArray.controls as FormControl[];\r\n }\r\n\r\n setDefaultBillingAddressId(id: string) {\r\n this.defaultBillingAddressId = id;\r\n this.addressDefaultsUpdated = true;\r\n }\r\n\r\n setDefaultShippingAddressId(id: string) {\r\n this.defaultShippingAddressId = id;\r\n this.addressDefaultsUpdated = true;\r\n }\r\n\r\n addAddress() {\r\n const addressFormArray = this.detailForm.get('addresses') as FormArray;\r\n const newAddress = this.formBuilder.group({\r\n fullName: '',\r\n company: '',\r\n streetLine1: ['', Validators.required],\r\n streetLine2: '',\r\n city: '',\r\n province: '',\r\n postalCode: '',\r\n countryCode: ['', Validators.required],\r\n phoneNumber: '',\r\n defaultShippingAddress: false,\r\n defaultBillingAddress: false,\r\n });\r\n if (this.addressCustomFields.length) {\r\n const customFieldsGroup = this.formBuilder.group({});\r\n for (const fieldDef of this.addressCustomFields) {\r\n customFieldsGroup.addControl(fieldDef.name, new FormControl(''));\r\n }\r\n newAddress.addControl('customFields', customFieldsGroup);\r\n }\r\n addressFormArray.push(newAddress);\r\n }\r\n\r\n setOrderItemsPerPage(itemsPerPage: number) {\r\n this.ordersPerPage = +itemsPerPage;\r\n this.fetchOrdersList();\r\n }\r\n\r\n setOrderCurrentPage(page: number) {\r\n this.currentOrdersPage = +page;\r\n this.fetchOrdersList();\r\n }\r\n\r\n create() {\r\n const customerForm = this.detailForm.get('customer');\r\n if (!customerForm) {\r\n return;\r\n }\r\n const formValue = customerForm.value;\r\n const customFields = customerForm.get('customFields')?.value;\r\n const customer: CreateCustomerInput = {\r\n title: formValue.title,\r\n emailAddress: formValue.emailAddress,\r\n firstName: formValue.firstName,\r\n lastName: formValue.lastName,\r\n phoneNumber: formValue.phoneNumber,\r\n customFields,\r\n };\r\n this.dataService.customer\r\n .createCustomer(customer, formValue.password)\r\n .subscribe(({ createCustomer }) => {\r\n switch (createCustomer.__typename) {\r\n case 'Customer':\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Customer',\r\n });\r\n if (createCustomer.emailAddress && !formValue.password) {\r\n this.notificationService.notify({\r\n message: _('customer.email-verification-sent'),\r\n translationVars: { emailAddress: formValue.emailAddress },\r\n type: 'info',\r\n duration: 10000,\r\n });\r\n }\r\n this.detailForm.markAsPristine();\r\n this.addressDefaultsUpdated = false;\r\n this.changeDetector.markForCheck();\r\n this.router.navigate(['../', createCustomer.id], { relativeTo: this.route });\r\n break;\r\n case 'EmailAddressConflictError':\r\n this.notificationService.error(createCustomer.message);\r\n }\r\n });\r\n }\r\n\r\n save() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n mergeMap(({ id }) => {\r\n const saveOperations: Array<\r\n Observable<\r\n | UpdateCustomer.UpdateCustomer\r\n | CreateCustomerAddress.CreateCustomerAddress\r\n | UpdateCustomerAddress.UpdateCustomerAddress\r\n >\r\n > = [];\r\n const customerForm = this.detailForm.get('customer');\r\n if (customerForm && customerForm.dirty) {\r\n const formValue = customerForm.value;\r\n const customFields = customerForm.get('customFields')?.value;\r\n const customer: UpdateCustomerInput = {\r\n id,\r\n title: formValue.title,\r\n emailAddress: formValue.emailAddress,\r\n firstName: formValue.firstName,\r\n lastName: formValue.lastName,\r\n phoneNumber: formValue.phoneNumber,\r\n customFields,\r\n };\r\n saveOperations.push(\r\n this.dataService.customer\r\n .updateCustomer(customer)\r\n .pipe(map(res => res.updateCustomer)),\r\n );\r\n }\r\n const addressFormArray = this.detailForm.get('addresses') as FormArray;\r\n if ((addressFormArray && addressFormArray.dirty) || this.addressDefaultsUpdated) {\r\n for (const addressControl of addressFormArray.controls) {\r\n if (addressControl.dirty || this.addressDefaultsUpdated) {\r\n const address = addressControl.value;\r\n const input: CreateAddressInput = {\r\n fullName: address.fullName,\r\n company: address.company,\r\n streetLine1: address.streetLine1,\r\n streetLine2: address.streetLine2,\r\n city: address.city,\r\n province: address.province,\r\n postalCode: address.postalCode,\r\n countryCode: address.countryCode,\r\n phoneNumber: address.phoneNumber,\r\n defaultShippingAddress: this.defaultShippingAddressId === address.id,\r\n defaultBillingAddress: this.defaultBillingAddressId === address.id,\r\n customFields: address.customFields,\r\n };\r\n if (!address.id) {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .createCustomerAddress(id, input)\r\n .pipe(map(res => res.createCustomerAddress)),\r\n );\r\n } else {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .updateCustomerAddress({\r\n ...input,\r\n id: address.id,\r\n })\r\n .pipe(map(res => res.updateCustomerAddress)),\r\n );\r\n }\r\n }\r\n }\r\n }\r\n return forkJoin(saveOperations);\r\n }),\r\n )\r\n .subscribe(\r\n data => {\r\n for (const result of data) {\r\n switch (result.__typename) {\r\n case 'Customer':\r\n case 'Address':\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Customer',\r\n });\r\n this.detailForm.markAsPristine();\r\n this.addressDefaultsUpdated = false;\r\n this.changeDetector.markForCheck();\r\n this.fetchHistory.next();\r\n break;\r\n case 'EmailAddressConflictError':\r\n this.notificationService.error(result.message);\r\n break;\r\n }\r\n }\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Customer',\r\n });\r\n },\r\n );\r\n }\r\n\r\n addToGroup() {\r\n this.modalService\r\n .fromComponent(SelectCustomerGroupDialogComponent, {\r\n size: 'md',\r\n })\r\n .pipe(\r\n switchMap(groupIds => (groupIds ? from(groupIds) : EMPTY)),\r\n concatMap(groupId => this.dataService.customer.addCustomersToGroup(groupId, [this.id])),\r\n )\r\n .subscribe({\r\n next: res => {\r\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\r\n customerCount: 1,\r\n groupName: res.addCustomersToGroup.name,\r\n });\r\n },\r\n complete: () => {\r\n this.dataService.customer.getCustomer(this.id, { take: 0 }).single$.subscribe();\r\n this.fetchHistory.next();\r\n },\r\n });\r\n }\r\n\r\n removeFromGroup(group: GetCustomer.Groups) {\r\n this.modalService\r\n .dialog({\r\n title: _('customer.confirm-remove-customer-from-group'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response\r\n ? this.dataService.customer.removeCustomersFromGroup(group.id, [this.id])\r\n : EMPTY,\r\n ),\r\n switchMap(() => this.dataService.customer.getCustomer(this.id, { take: 0 }).single$),\r\n )\r\n .subscribe(result => {\r\n this.notificationService.success(_(`customer.remove-customers-from-group-success`), {\r\n customerCount: 1,\r\n groupName: group.name,\r\n });\r\n this.fetchHistory.next();\r\n });\r\n }\r\n\r\n addNoteToCustomer({ note }: { note: string }) {\r\n this.dataService.customer.addNoteToCustomer(this.id, note).subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n updateNote(entry: HistoryEntry) {\r\n this.modalService\r\n .fromComponent(EditNoteDialogComponent, {\r\n closable: true,\r\n locals: {\r\n displayPrivacyControls: false,\r\n note: entry.data.note,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.customer.updateCustomerNote({\r\n noteId: entry.id,\r\n note: result.note,\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n deleteNote(entry: HistoryEntry) {\r\n return this.modalService\r\n .dialog({\r\n title: _('common.confirm-delete-note'),\r\n body: entry.data.note,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(switchMap(res => (res ? this.dataService.customer.deleteCustomerNote(entry.id) : EMPTY)))\r\n .subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n protected setFormValues(entity: CustomerWithOrders): void {\r\n const customerGroup = this.detailForm.get('customer');\r\n if (customerGroup) {\r\n customerGroup.patchValue({\r\n title: entity.title,\r\n firstName: entity.firstName,\r\n lastName: entity.lastName,\r\n phoneNumber: entity.phoneNumber,\r\n emailAddress: entity.emailAddress,\r\n });\r\n }\r\n\r\n if (entity.addresses) {\r\n const addressesArray = new FormArray([]);\r\n for (const address of entity.addresses) {\r\n const { customFields, ...rest } = address as any;\r\n const addressGroup = this.formBuilder.group({\r\n ...rest,\r\n countryCode: address.country.code,\r\n });\r\n addressesArray.push(addressGroup);\r\n if (address.defaultShippingAddress) {\r\n this.defaultShippingAddressId = address.id;\r\n }\r\n if (address.defaultBillingAddress) {\r\n this.defaultBillingAddressId = address.id;\r\n }\r\n\r\n if (this.addressCustomFields.length) {\r\n const customFieldsGroup = this.formBuilder.group({});\r\n for (const fieldDef of this.addressCustomFields) {\r\n const key = fieldDef.name;\r\n const value = (address as any).customFields?.[key];\r\n const control = new FormControl(value);\r\n customFieldsGroup.addControl(key, control);\r\n }\r\n addressGroup.addControl('customFields', customFieldsGroup);\r\n }\r\n }\r\n this.detailForm.setControl('addresses', addressesArray);\r\n }\r\n\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['customer', 'customFields']),\r\n entity,\r\n );\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Refetch the customer with the current order list settings.\r\n */\r\n private fetchOrdersList() {\r\n this.dataService.customer\r\n .getCustomer(this.id, {\r\n take: this.ordersPerPage,\r\n skip: (this.currentOrdersPage - 1) * this.ordersPerPage,\r\n })\r\n .single$.pipe(\r\n map(data => data.customer),\r\n filter(notNullOrUndefined),\r\n )\r\n .subscribe(result => this.orderListUpdates$.next(result));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport {\r\n CreateCustomerGroupInput,\r\n CustomFieldConfig,\r\n Dialog,\r\n ServerConfigService,\r\n UpdateCustomerGroupInput,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-detail-dialog',\r\n templateUrl: './customer-group-detail-dialog.component.html',\r\n styleUrls: ['./customer-group-detail-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupDetailDialogComponent implements Dialog<CreateCustomerGroupInput>, OnInit {\r\n group: { id?: string; name: string; customFields?: { [name: string]: any } };\r\n resolveWith: (result?: CreateCustomerGroupInput) => void;\r\n customFields: CustomFieldConfig[];\r\n form: FormGroup;\r\n\r\n constructor(private serverConfigService: ServerConfigService, private formBuilder: FormBuilder) {\r\n this.customFields = this.serverConfigService.getCustomFieldsFor('CustomerGroup');\r\n }\r\n\r\n ngOnInit() {\r\n this.form = this.formBuilder.group({\r\n name: [this.group.name, Validators.required],\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n });\r\n if (this.customFields.length) {\r\n const customFieldsGroup = this.form.get('customFields') as FormGroup;\r\n\r\n for (const fieldDef of this.customFields) {\r\n const key = fieldDef.name;\r\n const value = this.group.customFields?.[key];\r\n const control = customFieldsGroup.get(key);\r\n if (control) {\r\n control.patchValue(value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n save() {\r\n this.resolveWith(this.form.value);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n DataService,\r\n DeletionResult,\r\n GetCustomerGroups,\r\n GetCustomerGroupWithCustomers,\r\n GetZones,\r\n ModalService,\r\n NotificationService,\r\n} from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, combineLatest, EMPTY, Observable, of } from 'rxjs';\r\nimport { distinctUntilChanged, map, mapTo, switchMap, tap } from 'rxjs/operators';\r\n\r\nimport { AddCustomerToGroupDialogComponent } from '../add-customer-to-group-dialog/add-customer-to-group-dialog.component';\r\nimport { CustomerGroupDetailDialogComponent } from '../customer-group-detail-dialog/customer-group-detail-dialog.component';\r\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-list',\r\n templateUrl: './customer-group-list.component.html',\r\n styleUrls: ['./customer-group-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupListComponent implements OnInit {\r\n activeGroup$: Observable<GetCustomerGroups.Items | undefined>;\r\n groups$: Observable<GetCustomerGroups.Items[]>;\r\n listIsEmpty$: Observable<boolean>;\r\n members$: Observable<GetCustomerGroupWithCustomers.Items[]>;\r\n membersTotal$: Observable<number>;\r\n selectedCustomerIds: string[] = [];\r\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\r\n skip: 0,\r\n take: 0,\r\n filterTerm: '',\r\n });\r\n private refreshActiveGroupMembers$ = new BehaviorSubject<void>(undefined);\r\n\r\n constructor(\r\n private dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n public route: ActivatedRoute,\r\n private router: Router,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.groups$ = this.dataService.customer\r\n .getCustomerGroupList()\r\n .mapStream(data => data.customerGroups.items);\r\n const activeGroupId$ = this.route.paramMap.pipe(\r\n map(pm => pm.get('contents')),\r\n distinctUntilChanged(),\r\n tap(() => (this.selectedCustomerIds = [])),\r\n );\r\n this.listIsEmpty$ = this.groups$.pipe(map(groups => groups.length === 0));\r\n this.activeGroup$ = combineLatest(this.groups$, activeGroupId$).pipe(\r\n map(([groups, activeGroupId]) => {\r\n if (activeGroupId) {\r\n return groups.find(g => g.id === activeGroupId);\r\n }\r\n }),\r\n );\r\n const membersResult$ = combineLatest(\r\n this.activeGroup$,\r\n this.fetchGroupMembers$,\r\n this.refreshActiveGroupMembers$,\r\n ).pipe(\r\n switchMap(([activeGroup, { skip, take, filterTerm }]) => {\r\n if (activeGroup) {\r\n return this.dataService.customer\r\n .getCustomerGroupWithCustomers(activeGroup.id, {\r\n skip,\r\n take,\r\n filter: {\r\n emailAddress: {\r\n contains: filterTerm,\r\n },\r\n },\r\n })\r\n .mapStream(res => res.customerGroup?.customers);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n );\r\n\r\n this.members$ = membersResult$.pipe(map(res => res?.items ?? []));\r\n this.membersTotal$ = membersResult$.pipe(map(res => res?.totalItems ?? 0));\r\n }\r\n\r\n create() {\r\n this.modalService\r\n .fromComponent(CustomerGroupDetailDialogComponent, { locals: { group: { name: '' } } })\r\n .pipe(\r\n switchMap(result =>\r\n result\r\n ? this.dataService.customer.createCustomerGroup({ ...result, customerIds: [] })\r\n : EMPTY,\r\n ),\r\n // refresh list\r\n switchMap(() => this.dataService.customer.getCustomerGroupList().single$),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n delete(groupId: string) {\r\n this.modalService\r\n .dialog({\r\n title: _('customer.confirm-delete-customer-group'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response ? this.dataService.customer.deleteCustomerGroup(groupId) : EMPTY,\r\n ),\r\n\r\n switchMap(result => {\r\n if (result.deleteCustomerGroup.result === DeletionResult.DELETED) {\r\n // refresh list\r\n return this.dataService.customer\r\n .getCustomerGroupList()\r\n .mapSingle(() => ({ errorMessage: false }));\r\n } else {\r\n return of({ errorMessage: result.deleteCustomerGroup.message });\r\n }\r\n }),\r\n )\r\n .subscribe(\r\n result => {\r\n if (typeof result.errorMessage === 'string') {\r\n this.notificationService.error(result.errorMessage);\r\n } else {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n }\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n update(group: GetCustomerGroups.Items) {\r\n this.modalService\r\n .fromComponent(CustomerGroupDetailDialogComponent, { locals: { group } })\r\n .pipe(\r\n switchMap(result =>\r\n result\r\n ? this.dataService.customer.updateCustomerGroup({ id: group.id, ...result })\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n closeMembers() {\r\n const params = { ...this.route.snapshot.params };\r\n delete params.contents;\r\n this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });\r\n }\r\n\r\n addToGroup(group: GetCustomerGroupWithCustomers.CustomerGroup) {\r\n this.modalService\r\n .fromComponent(AddCustomerToGroupDialogComponent, {\r\n locals: {\r\n group,\r\n route: this.route,\r\n },\r\n size: 'md',\r\n verticalAlign: 'top',\r\n })\r\n .pipe(\r\n switchMap(customerIds =>\r\n customerIds\r\n ? this.dataService.customer\r\n .addCustomersToGroup(group.id, customerIds)\r\n .pipe(mapTo(customerIds))\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe({\r\n next: result => {\r\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\r\n customerCount: result.length,\r\n groupName: group.name,\r\n });\r\n this.refreshActiveGroupMembers$.next();\r\n this.selectedCustomerIds = [];\r\n },\r\n });\r\n }\r\n\r\n removeFromGroup(group: GetZones.Zones, customerIds: string[]) {\r\n this.dataService.customer.removeCustomersFromGroup(group.id, customerIds).subscribe({\r\n complete: () => {\r\n this.notificationService.success(_(`customer.remove-customers-from-group-success`), {\r\n customerCount: customerIds.length,\r\n groupName: group.name,\r\n });\r\n this.refreshActiveGroupMembers$.next();\r\n this.selectedCustomerIds = [];\r\n },\r\n });\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Customer, DataService, GetCustomerGroupWithCustomers } from '@vendure/admin-ui/core';\r\nimport { ZoneMember } from '@vendure/admin-ui/settings';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, takeUntil, tap } from 'rxjs/operators';\r\n\r\nexport interface CustomerGroupMemberFetchParams {\r\n skip: number;\r\n take: number;\r\n filterTerm: string;\r\n}\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-member-list',\r\n templateUrl: './customer-group-member-list.component.html',\r\n styleUrls: ['./customer-group-member-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupMemberListComponent implements OnInit, OnDestroy {\r\n @Input() members: Array<\r\n Pick<Customer, 'id' | 'createdAt' | 'updatedAt' | 'title' | 'firstName' | 'lastName' | 'emailAddress'>\r\n >;\r\n @Input() totalItems: number;\r\n @Input() route: ActivatedRoute;\r\n @Input() selectedMemberIds: string[] = [];\r\n @Output() selectionChange = new EventEmitter<string[]>();\r\n @Output() fetchParamsChange = new EventEmitter<CustomerGroupMemberFetchParams>();\r\n\r\n membersItemsPerPage$: Observable<number>;\r\n membersCurrentPage$: Observable<number>;\r\n filterTermControl = new FormControl('');\r\n private refresh$ = new BehaviorSubject<boolean>(true);\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(private router: Router, private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.membersCurrentPage$ = this.route.paramMap.pipe(\r\n map((qpm) => qpm.get('membersPage')),\r\n map((page) => (!page ? 1 : +page)),\r\n startWith(1),\r\n distinctUntilChanged(),\r\n );\r\n\r\n this.membersItemsPerPage$ = this.route.paramMap.pipe(\r\n map((qpm) => qpm.get('membersPerPage')),\r\n map((perPage) => (!perPage ? 10 : +perPage)),\r\n startWith(10),\r\n distinctUntilChanged(),\r\n );\r\n\r\n const filterTerm$ = this.filterTermControl.valueChanges.pipe(\r\n debounceTime(250),\r\n tap(() => this.setContentsPageNumber(1)),\r\n startWith(''),\r\n );\r\n\r\n combineLatest(this.membersCurrentPage$, this.membersItemsPerPage$, filterTerm$, this.refresh$)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(([currentPage, itemsPerPage, filterTerm]) => {\r\n const take = itemsPerPage;\r\n const skip = (currentPage - 1) * itemsPerPage;\r\n this.fetchParamsChange.emit({\r\n filterTerm,\r\n skip,\r\n take,\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setContentsPageNumber(page: number) {\r\n this.setParam('membersPage', page);\r\n }\r\n\r\n setContentsItemsPerPage(perPage: number) {\r\n this.setParam('membersPerPage', perPage);\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n\r\n private setParam(key: string, value: any) {\r\n this.router.navigate(['./', { ...this.route.snapshot.params, [key]: value }], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n areAllSelected(): boolean {\r\n if (this.members) {\r\n return this.selectedMemberIds.length === this.members.length;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n toggleSelectAll() {\r\n if (this.areAllSelected()) {\r\n this.selectionChange.emit([]);\r\n } else {\r\n this.selectionChange.emit(this.members.map((v) => v.id));\r\n }\r\n }\r\n\r\n toggleSelectMember(member: ZoneMember) {\r\n if (this.selectedMemberIds.includes(member.id)) {\r\n this.selectionChange.emit(this.selectedMemberIds.filter((id) => id !== member.id));\r\n } else {\r\n this.selectionChange.emit([...this.selectedMemberIds, member.id]);\r\n }\r\n }\r\n\r\n isMemberSelected = (member: ZoneMember): boolean => {\r\n return -1 < this.selectedMemberIds.indexOf(member.id);\r\n };\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport {\r\n Customer,\r\n GetCustomerHistory,\r\n HistoryEntry,\r\n HistoryEntryType,\r\n TimelineDisplayType,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-history',\r\n templateUrl: './customer-history.component.html',\r\n styleUrls: ['./customer-history.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerHistoryComponent {\r\n @Input() customer: Customer.Fragment;\r\n @Input() history: GetCustomerHistory.Items[];\r\n @Output() addNote = new EventEmitter<{ note: string }>();\r\n @Output() updateNote = new EventEmitter<HistoryEntry>();\r\n @Output() deleteNote = new EventEmitter<HistoryEntry>();\r\n note = '';\r\n readonly type = HistoryEntryType;\r\n\r\n getDisplayType(entry: GetCustomerHistory.Items): TimelineDisplayType {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n case HistoryEntryType.CUSTOMER_EMAIL_UPDATE_VERIFIED:\r\n case HistoryEntryType.CUSTOMER_PASSWORD_RESET_VERIFIED:\r\n return 'success';\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n return 'muted';\r\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\r\n return 'error';\r\n default:\r\n return 'default';\r\n }\r\n }\r\n\r\n getTimelineIcon(entry: GetCustomerHistory.Items): string | [string, string] | undefined {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n return 'user';\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n return ['assign-user', 'is-solid'];\r\n case HistoryEntryType.CUSTOMER_NOTE:\r\n return 'note';\r\n case HistoryEntryType.CUSTOMER_ADDED_TO_GROUP:\r\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\r\n return 'users';\r\n }\r\n }\r\n\r\n isFeatured(entry: GetCustomerHistory.Items): boolean {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n getName(entry: GetCustomerHistory.Items): string {\r\n const { administrator } = entry;\r\n if (administrator) {\r\n return `${administrator.firstName} ${administrator.lastName}`;\r\n } else {\r\n return `${this.customer.firstName} ${this.customer.lastName}`;\r\n }\r\n }\r\n\r\n addNoteToCustomer() {\r\n this.addNote.emit({ note: this.note });\r\n this.note = '';\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseListComponent,\r\n DataService,\r\n GetCustomerList,\r\n ModalService,\r\n NotificationService,\r\n} from '@vendure/admin-ui/core';\r\nimport { SortOrder } from '@vendure/common/lib/generated-shop-types';\r\nimport { EMPTY, merge } from 'rxjs';\r\nimport { debounceTime, filter, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-customer-list',\r\n templateUrl: './customer-list.component.html',\r\n styleUrls: ['./customer-list.component.scss'],\r\n})\r\nexport class CustomerListComponent\r\n extends BaseListComponent<GetCustomerList.Query, GetCustomerList.Items>\r\n implements OnInit {\r\n emailSearchTerm = new FormControl('');\r\n lastNameSearchTerm = new FormControl('');\r\n constructor(\r\n private dataService: DataService,\r\n router: Router,\r\n route: ActivatedRoute,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n ) {\r\n super(router, route);\r\n super.setQueryFn(\r\n (...args: any[]) => this.dataService.customer.getCustomerList(...args).refetchOnChannelChange(),\r\n data => data.customers,\r\n (skip, take) => ({\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n emailAddress: {\r\n contains: this.emailSearchTerm.value,\r\n },\r\n lastName: {\r\n contains: this.lastNameSearchTerm.value,\r\n },\r\n },\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n },\r\n }),\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n merge(this.emailSearchTerm.valueChanges, this.lastNameSearchTerm.valueChanges)\r\n .pipe(\r\n filter(value => 2 < value.length || value.length === 0),\r\n debounceTime(250),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe(() => this.refresh());\r\n }\r\n\r\n deleteCustomer(customer: GetCustomerList.Items) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-customer'),\r\n body: `${customer.firstName} ${customer.lastName}`,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(switchMap(res => (res ? this.dataService.customer.deleteCustomer(customer.id) : EMPTY)))\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Customer',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'Customer',\r\n });\r\n },\r\n );\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { Customer } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-status-label',\r\n templateUrl: './customer-status-label.component.html',\r\n styleUrls: ['./customer-status-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerStatusLabelComponent {\r\n @Input() customer: Customer.Fragment;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { Customer } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CustomerResolver extends BaseEntityResolver<Customer.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Customer',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n title: '',\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n phoneNumber: null,\r\n addresses: null,\r\n user: null,\r\n },\r\n id => dataService.customer.getCustomer(id).mapStream(data => data.customer),\r\n );\r\n }\r\n}\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CanDeactivateDetailGuard,\r\n createResolveData,\r\n Customer,\r\n detailBreadcrumb,\r\n} from '@vendure/admin-ui/core';\r\n\r\nimport { CustomerDetailComponent } from './components/customer-detail/customer-detail.component';\r\nimport { CustomerGroupListComponent } from './components/customer-group-list/customer-group-list.component';\r\nimport { CustomerListComponent } from './components/customer-list/customer-list.component';\r\nimport { CustomerResolver } from './providers/routing/customer-resolver';\r\n\r\nexport const customerRoutes: Route[] = [\r\n {\r\n path: 'customers',\r\n component: CustomerListComponent,\r\n pathMatch: '',\r\n data: {\r\n breadcrumb: _('breadcrumb.customers'),\r\n },\r\n },\r\n {\r\n path: 'customers/:id',\r\n component: CustomerDetailComponent,\r\n resolve: createResolveData(CustomerResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: customerBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'groups',\r\n component: CustomerGroupListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.customer-groups'),\r\n },\r\n },\r\n];\r\n\r\nexport function customerBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<Customer.Fragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.customers',\r\n getName: (customer) => `${customer.firstName} ${customer.lastName}`,\r\n route: 'customers',\r\n });\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { AddCustomerToGroupDialogComponent } from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\r\nimport { AddressCardComponent } from './components/address-card/address-card.component';\r\nimport { AddressDetailDialogComponent } from './components/address-detail-dialog/address-detail-dialog.component';\r\nimport { CustomerDetailComponent } from './components/customer-detail/customer-detail.component';\r\nimport { CustomerGroupDetailDialogComponent } from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\r\nimport { CustomerGroupListComponent } from './components/customer-group-list/customer-group-list.component';\r\nimport { CustomerGroupMemberListComponent } from './components/customer-group-member-list/customer-group-member-list.component';\r\nimport { CustomerHistoryComponent } from './components/customer-history/customer-history.component';\r\nimport { CustomerListComponent } from './components/customer-list/customer-list.component';\r\nimport { CustomerStatusLabelComponent } from './components/customer-status-label/customer-status-label.component';\r\nimport { SelectCustomerGroupDialogComponent } from './components/select-customer-group-dialog/select-customer-group-dialog.component';\r\nimport { customerRoutes } from './customer.routes';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild(customerRoutes)],\r\n declarations: [\r\n CustomerListComponent,\r\n CustomerDetailComponent,\r\n CustomerStatusLabelComponent,\r\n AddressCardComponent,\r\n CustomerGroupListComponent,\r\n CustomerGroupDetailDialogComponent,\r\n AddCustomerToGroupDialogComponent,\r\n CustomerGroupMemberListComponent,\r\n SelectCustomerGroupDialogComponent,\r\n CustomerHistoryComponent,\r\n AddressDetailDialogComponent,\r\n ],\r\n exports: [AddressCardComponent],\r\n})\r\nexport class CustomerModule {}\r\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-dialog/customer-group-detail-dialog.component';\nexport * from './components/customer-group-list/customer-group-list.component';\nexport * from './components/customer-group-member-list/customer-group-member-list.component';\nexport * from './components/customer-history/customer-history.component';\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';\nexport * from './providers/routing/customer-resolver';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_","SortOrder","merge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vendure-admin-ui-customer.js","sources":["../../src/lib/customer/src/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.ts","../../src/lib/customer/src/components/address-detail-dialog/address-detail-dialog.component.ts","../../src/lib/customer/src/components/address-card/address-card.component.ts","../../src/lib/customer/src/components/select-customer-group-dialog/select-customer-group-dialog.component.ts","../../src/lib/customer/src/components/customer-detail/customer-detail.component.ts","../../src/lib/customer/src/components/customer-group-detail-dialog/customer-group-detail-dialog.component.ts","../../src/lib/customer/src/components/customer-group-list/customer-group-list.component.ts","../../src/lib/customer/src/components/customer-group-member-list/customer-group-member-list.component.ts","../../src/lib/customer/src/components/customer-history/customer-history.component.ts","../../src/lib/customer/src/components/customer-list/customer-list.component.ts","../../src/lib/customer/src/components/customer-status-label/customer-status-label.component.ts","../../src/lib/customer/src/providers/routing/customer-resolver.ts","../../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, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { DataService, Dialog, GetCustomerGroups, GetCustomerList } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\r\n\r\n@Component({\r\n selector: 'vdr-add-customer-to-group-dialog',\r\n templateUrl: './add-customer-to-group-dialog.component.html',\r\n styleUrls: ['./add-customer-to-group-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddCustomerToGroupDialogComponent implements Dialog<string[]>, OnInit {\r\n resolveWith: (result?: string[]) => void;\r\n group: GetCustomerGroups.Items;\r\n route: ActivatedRoute;\r\n selectedCustomerIds: string[] = [];\r\n customers$: Observable<GetCustomerList.Items[]>;\r\n customersTotal$: Observable<number>;\r\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\r\n skip: 0,\r\n take: 10,\r\n filterTerm: '',\r\n });\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n const customerResult$ = this.fetchGroupMembers$.pipe(\r\n switchMap(({ skip, take, filterTerm }) => {\r\n return this.dataService.customer\r\n .getCustomerList(take, skip, filterTerm)\r\n .mapStream((res) => res.customers);\r\n }),\r\n );\r\n\r\n this.customers$ = customerResult$.pipe(map((res) => res.items));\r\n this.customersTotal$ = customerResult$.pipe(map((res) => res.totalItems));\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n add() {\r\n this.resolveWith(this.selectedCustomerIds);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig, Dialog, GetAvailableCountries } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-address-detail-dialog',\r\n templateUrl: './address-detail-dialog.component.html',\r\n styleUrls: ['./address-detail-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddressDetailDialogComponent implements Dialog<FormGroup>, OnInit {\r\n addressForm: FormGroup;\r\n customFields: CustomFieldConfig;\r\n availableCountries: GetAvailableCountries.Items[] = [];\r\n resolveWith: (result?: FormGroup) => void;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n this.addressForm.valueChanges.subscribe(() => this.changeDetector.markForCheck());\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n save() {\r\n this.resolveWith(this.addressForm);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig, GetAvailableCountries, ModalService } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { filter, take } from 'rxjs/operators';\r\n\r\nimport { AddressDetailDialogComponent } from '../address-detail-dialog/address-detail-dialog.component';\r\n\r\n@Component({\r\n selector: 'vdr-address-card',\r\n templateUrl: './address-card.component.html',\r\n styleUrls: ['./address-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddressCardComponent implements OnInit, OnChanges {\r\n @Input() addressForm: FormGroup;\r\n @Input() customFields: CustomFieldConfig;\r\n @Input() availableCountries: GetAvailableCountries.Items[] = [];\r\n @Input() isDefaultBilling: string;\r\n @Input() isDefaultShipping: string;\r\n @Input() editable = true;\r\n @Output() setAsDefaultShipping = new EventEmitter<string>();\r\n @Output() setAsDefaultBilling = new EventEmitter<string>();\r\n @Output() deleteAddress = new EventEmitter<string>();\r\n private dataDependenciesPopulated = new BehaviorSubject<boolean>(false);\r\n\r\n constructor(private modalService: ModalService, private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n const streetLine1 = this.addressForm.get('streetLine1') as FormControl;\r\n // Make the address dialog display automatically if there is no address line\r\n // as is the case when adding a new address.\r\n if (!streetLine1.value) {\r\n this.dataDependenciesPopulated\r\n .pipe(\r\n filter(value => value),\r\n take(1),\r\n )\r\n .subscribe(() => {\r\n this.editAddress();\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.customFields != null && this.availableCountries != null) {\r\n this.dataDependenciesPopulated.next(true);\r\n }\r\n }\r\n\r\n getCountryName(countryCode: string) {\r\n if (!this.availableCountries) {\r\n return '';\r\n }\r\n const match = this.availableCountries.find(c => c.code === countryCode);\r\n return match ? match.name : '';\r\n }\r\n\r\n setAsDefaultBillingAddress() {\r\n this.setAsDefaultBilling.emit(this.addressForm.value.id);\r\n this.addressForm.markAsDirty();\r\n }\r\n\r\n setAsDefaultShippingAddress() {\r\n this.setAsDefaultShipping.emit(this.addressForm.value.id);\r\n this.addressForm.markAsDirty();\r\n }\r\n\r\n delete() {\r\n this.deleteAddress.emit(this.addressForm.value.id);\r\n this.addressForm.markAsDirty();\r\n }\r\n\r\n editAddress() {\r\n this.modalService\r\n .fromComponent(AddressDetailDialogComponent, {\r\n locals: {\r\n addressForm: this.addressForm,\r\n customFields: this.customFields,\r\n availableCountries: this.availableCountries,\r\n },\r\n size: 'md',\r\n closable: true,\r\n })\r\n .subscribe(() => {\r\n this.changeDetector.markForCheck();\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { DataService, Dialog, GetCustomerGroups, GetCustomerList } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-select-customer-group-dialog',\r\n templateUrl: './select-customer-group-dialog.component.html',\r\n styleUrls: ['./select-customer-group-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SelectCustomerGroupDialogComponent implements Dialog<string[]>, OnInit {\r\n resolveWith: (result?: string[]) => void;\r\n groups$: Observable<GetCustomerGroups.Items[]>;\r\n selectedGroupIds: string[] = [];\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.groups$ = this.dataService.customer\r\n .getCustomerGroupList()\r\n .mapStream((res) => res.customerGroups.items);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n add() {\r\n this.resolveWith(this.selectedGroupIds);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseDetailComponent,\r\n CreateAddressInput,\r\n CreateCustomerAddress,\r\n CreateCustomerAddressMutation,\r\n CreateCustomerInput,\r\n Customer,\r\n CustomFieldConfig,\r\n DataService,\r\n DeleteCustomerAddress,\r\n EditNoteDialogComponent,\r\n GetAvailableCountries,\r\n GetCustomer,\r\n GetCustomerHistory,\r\n GetCustomerQuery,\r\n HistoryEntry,\r\n ModalService,\r\n NotificationService,\r\n ServerConfigService,\r\n SortOrder,\r\n UpdateCustomer,\r\n UpdateCustomerAddress,\r\n UpdateCustomerAddressMutation,\r\n UpdateCustomerInput,\r\n UpdateCustomerMutation,\r\n} from '@vendure/admin-ui/core';\r\nimport { assertNever, notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { EMPTY, forkJoin, from, Observable, Subject } from 'rxjs';\r\nimport {\r\n concatMap,\r\n filter,\r\n map,\r\n merge,\r\n mergeMap,\r\n shareReplay,\r\n startWith,\r\n switchMap,\r\n take,\r\n} from 'rxjs/operators';\r\n\r\nimport { SelectCustomerGroupDialogComponent } from '../select-customer-group-dialog/select-customer-group-dialog.component';\r\n\r\ntype CustomerWithOrders = NonNullable<GetCustomerQuery['customer']>;\r\n\r\n@Component({\r\n selector: 'vdr-customer-detail',\r\n templateUrl: './customer-detail.component.html',\r\n styleUrls: ['./customer-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerDetailComponent\r\n extends BaseDetailComponent<CustomerWithOrders>\r\n implements OnInit, OnDestroy\r\n{\r\n detailForm: FormGroup;\r\n customFields: CustomFieldConfig[];\r\n addressCustomFields: CustomFieldConfig[];\r\n availableCountries$: Observable<GetAvailableCountries.Items[]>;\r\n orders$: Observable<GetCustomer.Items[]>;\r\n ordersCount$: Observable<number>;\r\n history$: Observable<GetCustomerHistory.Items[] | undefined>;\r\n fetchHistory = new Subject<void>();\r\n defaultShippingAddressId: string;\r\n defaultBillingAddressId: string;\r\n addressesToDeleteIds = new Set<string>();\r\n addressDefaultsUpdated = false;\r\n ordersPerPage = 10;\r\n currentOrdersPage = 1;\r\n private orderListUpdates$ = new Subject<CustomerWithOrders>();\r\n\r\n constructor(\r\n route: ActivatedRoute,\r\n router: Router,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n private formBuilder: FormBuilder,\r\n protected dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n\r\n this.customFields = this.getCustomFieldConfig('Customer');\r\n this.addressCustomFields = this.getCustomFieldConfig('Address');\r\n this.detailForm = this.formBuilder.group({\r\n customer: this.formBuilder.group({\r\n title: '',\r\n firstName: ['', Validators.required],\r\n lastName: ['', Validators.required],\r\n phoneNumber: '',\r\n emailAddress: ['', [Validators.required, Validators.email]],\r\n password: '',\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n }),\r\n addresses: new FormArray([]),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.availableCountries$ = this.dataService.settings\r\n .getAvailableCountries()\r\n .mapSingle(result => result.countries.items)\r\n .pipe(shareReplay(1));\r\n\r\n const customerWithUpdates$ = this.entity$.pipe(merge(this.orderListUpdates$));\r\n this.orders$ = customerWithUpdates$.pipe(map(customer => customer.orders.items));\r\n this.ordersCount$ = this.entity$.pipe(map(customer => customer.orders.totalItems));\r\n this.history$ = this.fetchHistory.pipe(\r\n startWith(null),\r\n switchMap(() => {\r\n return this.dataService.customer\r\n .getCustomerHistory(this.id, {\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n })\r\n .mapStream(data => data.customer?.history.items);\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n this.orderListUpdates$.complete();\r\n }\r\n\r\n getAddressFormControls(): FormControl[] {\r\n const formArray = this.detailForm.get(['addresses']) as FormArray;\r\n return formArray.controls as FormControl[];\r\n }\r\n\r\n setDefaultBillingAddressId(id: string) {\r\n this.defaultBillingAddressId = id;\r\n this.addressDefaultsUpdated = true;\r\n }\r\n\r\n setDefaultShippingAddressId(id: string) {\r\n this.defaultShippingAddressId = id;\r\n this.addressDefaultsUpdated = true;\r\n }\r\n\r\n toggleDeleteAddress(id: string) {\r\n if (this.addressesToDeleteIds.has(id)) {\r\n this.addressesToDeleteIds.delete(id);\r\n } else {\r\n this.addressesToDeleteIds.add(id);\r\n }\r\n }\r\n\r\n addAddress() {\r\n const addressFormArray = this.detailForm.get('addresses') as FormArray;\r\n const newAddress = this.formBuilder.group({\r\n fullName: '',\r\n company: '',\r\n streetLine1: ['', Validators.required],\r\n streetLine2: '',\r\n city: '',\r\n province: '',\r\n postalCode: '',\r\n countryCode: ['', Validators.required],\r\n phoneNumber: '',\r\n defaultShippingAddress: false,\r\n defaultBillingAddress: false,\r\n });\r\n if (this.addressCustomFields.length) {\r\n const customFieldsGroup = this.formBuilder.group({});\r\n for (const fieldDef of this.addressCustomFields) {\r\n customFieldsGroup.addControl(fieldDef.name, new FormControl(''));\r\n }\r\n newAddress.addControl('customFields', customFieldsGroup);\r\n }\r\n addressFormArray.push(newAddress);\r\n }\r\n\r\n setOrderItemsPerPage(itemsPerPage: number) {\r\n this.ordersPerPage = +itemsPerPage;\r\n this.fetchOrdersList();\r\n }\r\n\r\n setOrderCurrentPage(page: number) {\r\n this.currentOrdersPage = +page;\r\n this.fetchOrdersList();\r\n }\r\n\r\n create() {\r\n const customerForm = this.detailForm.get('customer');\r\n if (!customerForm) {\r\n return;\r\n }\r\n const formValue = customerForm.value;\r\n const customFields = customerForm.get('customFields')?.value;\r\n const customer: CreateCustomerInput = {\r\n title: formValue.title,\r\n emailAddress: formValue.emailAddress,\r\n firstName: formValue.firstName,\r\n lastName: formValue.lastName,\r\n phoneNumber: formValue.phoneNumber,\r\n customFields,\r\n };\r\n this.dataService.customer\r\n .createCustomer(customer, formValue.password)\r\n .subscribe(({ createCustomer }) => {\r\n switch (createCustomer.__typename) {\r\n case 'Customer':\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Customer',\r\n });\r\n if (createCustomer.emailAddress && !formValue.password) {\r\n this.notificationService.notify({\r\n message: _('customer.email-verification-sent'),\r\n translationVars: { emailAddress: formValue.emailAddress },\r\n type: 'info',\r\n duration: 10000,\r\n });\r\n }\r\n this.detailForm.markAsPristine();\r\n this.addressDefaultsUpdated = false;\r\n this.changeDetector.markForCheck();\r\n this.router.navigate(['../', createCustomer.id], { relativeTo: this.route });\r\n break;\r\n case 'EmailAddressConflictError':\r\n this.notificationService.error(createCustomer.message);\r\n }\r\n });\r\n }\r\n\r\n save() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n mergeMap(({ id }) => {\r\n const saveOperations: Array<\r\n Observable<\r\n | UpdateCustomer.UpdateCustomer\r\n | CreateCustomerAddress.CreateCustomerAddress\r\n | UpdateCustomerAddress.UpdateCustomerAddress\r\n | DeleteCustomerAddress.DeleteCustomerAddress\r\n >\r\n > = [];\r\n const customerForm = this.detailForm.get('customer');\r\n if (customerForm && customerForm.dirty) {\r\n const formValue = customerForm.value;\r\n const customFields = customerForm.get('customFields')?.value;\r\n const customer: UpdateCustomerInput = {\r\n id,\r\n title: formValue.title,\r\n emailAddress: formValue.emailAddress,\r\n firstName: formValue.firstName,\r\n lastName: formValue.lastName,\r\n phoneNumber: formValue.phoneNumber,\r\n customFields,\r\n };\r\n saveOperations.push(\r\n this.dataService.customer\r\n .updateCustomer(customer)\r\n .pipe(map(res => res.updateCustomer)),\r\n );\r\n }\r\n const addressFormArray = this.detailForm.get('addresses') as FormArray;\r\n if ((addressFormArray && addressFormArray.dirty) || this.addressDefaultsUpdated) {\r\n for (const addressControl of addressFormArray.controls) {\r\n if (addressControl.dirty || this.addressDefaultsUpdated) {\r\n const address = addressControl.value;\r\n const input: CreateAddressInput = {\r\n fullName: address.fullName,\r\n company: address.company,\r\n streetLine1: address.streetLine1,\r\n streetLine2: address.streetLine2,\r\n city: address.city,\r\n province: address.province,\r\n postalCode: address.postalCode,\r\n countryCode: address.countryCode,\r\n phoneNumber: address.phoneNumber,\r\n defaultShippingAddress: this.defaultShippingAddressId === address.id,\r\n defaultBillingAddress: this.defaultBillingAddressId === address.id,\r\n customFields: address.customFields,\r\n };\r\n if (!address.id) {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .createCustomerAddress(id, input)\r\n .pipe(map(res => res.createCustomerAddress)),\r\n );\r\n } else {\r\n if (this.addressesToDeleteIds.has(address.id)) {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .deleteCustomerAddress(address.id)\r\n .pipe(map(res => res.deleteCustomerAddress)),\r\n );\r\n } else {\r\n saveOperations.push(\r\n this.dataService.customer\r\n .updateCustomerAddress({\r\n ...input,\r\n id: address.id,\r\n })\r\n .pipe(map(res => res.updateCustomerAddress)),\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return forkJoin(saveOperations);\r\n }),\r\n )\r\n .subscribe(\r\n data => {\r\n let notified = false;\r\n for (const result of data) {\r\n switch (result.__typename) {\r\n case 'Customer':\r\n case 'Address':\r\n case 'Success':\r\n if (!notified) {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Customer',\r\n });\r\n notified = true;\r\n this.detailForm.markAsPristine();\r\n this.addressDefaultsUpdated = false;\r\n this.changeDetector.markForCheck();\r\n this.fetchHistory.next();\r\n this.dataService.customer.getCustomer(this.id).single$.subscribe();\r\n }\r\n break;\r\n case 'EmailAddressConflictError':\r\n this.notificationService.error(result.message);\r\n break;\r\n }\r\n }\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Customer',\r\n });\r\n },\r\n );\r\n }\r\n\r\n addToGroup() {\r\n this.modalService\r\n .fromComponent(SelectCustomerGroupDialogComponent, {\r\n size: 'md',\r\n })\r\n .pipe(\r\n switchMap(groupIds => (groupIds ? from(groupIds) : EMPTY)),\r\n concatMap(groupId => this.dataService.customer.addCustomersToGroup(groupId, [this.id])),\r\n )\r\n .subscribe({\r\n next: res => {\r\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\r\n customerCount: 1,\r\n groupName: res.addCustomersToGroup.name,\r\n });\r\n },\r\n complete: () => {\r\n this.dataService.customer.getCustomer(this.id, { take: 0 }).single$.subscribe();\r\n this.fetchHistory.next();\r\n },\r\n });\r\n }\r\n\r\n removeFromGroup(group: GetCustomer.Groups) {\r\n this.modalService\r\n .dialog({\r\n title: _('customer.confirm-remove-customer-from-group'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response\r\n ? this.dataService.customer.removeCustomersFromGroup(group.id, [this.id])\r\n : EMPTY,\r\n ),\r\n switchMap(() => this.dataService.customer.getCustomer(this.id, { take: 0 }).single$),\r\n )\r\n .subscribe(result => {\r\n this.notificationService.success(_(`customer.remove-customers-from-group-success`), {\r\n customerCount: 1,\r\n groupName: group.name,\r\n });\r\n this.fetchHistory.next();\r\n });\r\n }\r\n\r\n addNoteToCustomer({ note }: { note: string }) {\r\n this.dataService.customer.addNoteToCustomer(this.id, note).subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n updateNote(entry: HistoryEntry) {\r\n this.modalService\r\n .fromComponent(EditNoteDialogComponent, {\r\n closable: true,\r\n locals: {\r\n displayPrivacyControls: false,\r\n note: entry.data.note,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.customer.updateCustomerNote({\r\n noteId: entry.id,\r\n note: result.note,\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n deleteNote(entry: HistoryEntry) {\r\n return this.modalService\r\n .dialog({\r\n title: _('common.confirm-delete-note'),\r\n body: entry.data.note,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(switchMap(res => (res ? this.dataService.customer.deleteCustomerNote(entry.id) : EMPTY)))\r\n .subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n protected setFormValues(entity: CustomerWithOrders): void {\r\n const customerGroup = this.detailForm.get('customer');\r\n if (customerGroup) {\r\n customerGroup.patchValue({\r\n title: entity.title,\r\n firstName: entity.firstName,\r\n lastName: entity.lastName,\r\n phoneNumber: entity.phoneNumber,\r\n emailAddress: entity.emailAddress,\r\n });\r\n }\r\n\r\n if (entity.addresses) {\r\n const addressesArray = new FormArray([]);\r\n for (const address of entity.addresses) {\r\n const { customFields, ...rest } = address as any;\r\n const addressGroup = this.formBuilder.group({\r\n ...rest,\r\n countryCode: address.country.code,\r\n });\r\n addressesArray.push(addressGroup);\r\n if (address.defaultShippingAddress) {\r\n this.defaultShippingAddressId = address.id;\r\n }\r\n if (address.defaultBillingAddress) {\r\n this.defaultBillingAddressId = address.id;\r\n }\r\n\r\n if (this.addressCustomFields.length) {\r\n const customFieldsGroup = this.formBuilder.group({});\r\n for (const fieldDef of this.addressCustomFields) {\r\n const key = fieldDef.name;\r\n const value = (address as any).customFields?.[key];\r\n const control = new FormControl(value);\r\n customFieldsGroup.addControl(key, control);\r\n }\r\n addressGroup.addControl('customFields', customFieldsGroup);\r\n }\r\n }\r\n this.detailForm.setControl('addresses', addressesArray);\r\n }\r\n\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['customer', 'customFields']),\r\n entity,\r\n );\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n /**\r\n * Refetch the customer with the current order list settings.\r\n */\r\n private fetchOrdersList() {\r\n this.dataService.customer\r\n .getCustomer(this.id, {\r\n take: this.ordersPerPage,\r\n skip: (this.currentOrdersPage - 1) * this.ordersPerPage,\r\n })\r\n .single$.pipe(\r\n map(data => data.customer),\r\n filter(notNullOrUndefined),\r\n )\r\n .subscribe(result => this.orderListUpdates$.next(result));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport {\r\n CreateCustomerGroupInput,\r\n CustomFieldConfig,\r\n Dialog,\r\n ServerConfigService,\r\n UpdateCustomerGroupInput,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-detail-dialog',\r\n templateUrl: './customer-group-detail-dialog.component.html',\r\n styleUrls: ['./customer-group-detail-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupDetailDialogComponent implements Dialog<CreateCustomerGroupInput>, OnInit {\r\n group: { id?: string; name: string; customFields?: { [name: string]: any } };\r\n resolveWith: (result?: CreateCustomerGroupInput) => void;\r\n customFields: CustomFieldConfig[];\r\n form: FormGroup;\r\n\r\n constructor(private serverConfigService: ServerConfigService, private formBuilder: FormBuilder) {\r\n this.customFields = this.serverConfigService.getCustomFieldsFor('CustomerGroup');\r\n }\r\n\r\n ngOnInit() {\r\n this.form = this.formBuilder.group({\r\n name: [this.group.name, Validators.required],\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n });\r\n if (this.customFields.length) {\r\n const customFieldsGroup = this.form.get('customFields') as FormGroup;\r\n\r\n for (const fieldDef of this.customFields) {\r\n const key = fieldDef.name;\r\n const value = this.group.customFields?.[key];\r\n const control = customFieldsGroup.get(key);\r\n if (control) {\r\n control.patchValue(value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n save() {\r\n this.resolveWith(this.form.value);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n DataService,\r\n DeletionResult,\r\n GetCustomerGroups,\r\n GetCustomerGroupWithCustomers,\r\n GetZones,\r\n ModalService,\r\n NotificationService,\r\n} from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, combineLatest, EMPTY, Observable, of } from 'rxjs';\r\nimport { distinctUntilChanged, map, mapTo, switchMap, tap } from 'rxjs/operators';\r\n\r\nimport { AddCustomerToGroupDialogComponent } from '../add-customer-to-group-dialog/add-customer-to-group-dialog.component';\r\nimport { CustomerGroupDetailDialogComponent } from '../customer-group-detail-dialog/customer-group-detail-dialog.component';\r\nimport { CustomerGroupMemberFetchParams } from '../customer-group-member-list/customer-group-member-list.component';\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-list',\r\n templateUrl: './customer-group-list.component.html',\r\n styleUrls: ['./customer-group-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupListComponent implements OnInit {\r\n activeGroup$: Observable<GetCustomerGroups.Items | undefined>;\r\n groups$: Observable<GetCustomerGroups.Items[]>;\r\n listIsEmpty$: Observable<boolean>;\r\n members$: Observable<GetCustomerGroupWithCustomers.Items[]>;\r\n membersTotal$: Observable<number>;\r\n selectedCustomerIds: string[] = [];\r\n fetchGroupMembers$ = new BehaviorSubject<CustomerGroupMemberFetchParams>({\r\n skip: 0,\r\n take: 0,\r\n filterTerm: '',\r\n });\r\n private refreshActiveGroupMembers$ = new BehaviorSubject<void>(undefined);\r\n\r\n constructor(\r\n private dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n public route: ActivatedRoute,\r\n private router: Router,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.groups$ = this.dataService.customer\r\n .getCustomerGroupList()\r\n .mapStream(data => data.customerGroups.items);\r\n const activeGroupId$ = this.route.paramMap.pipe(\r\n map(pm => pm.get('contents')),\r\n distinctUntilChanged(),\r\n tap(() => (this.selectedCustomerIds = [])),\r\n );\r\n this.listIsEmpty$ = this.groups$.pipe(map(groups => groups.length === 0));\r\n this.activeGroup$ = combineLatest(this.groups$, activeGroupId$).pipe(\r\n map(([groups, activeGroupId]) => {\r\n if (activeGroupId) {\r\n return groups.find(g => g.id === activeGroupId);\r\n }\r\n }),\r\n );\r\n const membersResult$ = combineLatest(\r\n this.activeGroup$,\r\n this.fetchGroupMembers$,\r\n this.refreshActiveGroupMembers$,\r\n ).pipe(\r\n switchMap(([activeGroup, { skip, take, filterTerm }]) => {\r\n if (activeGroup) {\r\n return this.dataService.customer\r\n .getCustomerGroupWithCustomers(activeGroup.id, {\r\n skip,\r\n take,\r\n filter: {\r\n emailAddress: {\r\n contains: filterTerm,\r\n },\r\n },\r\n })\r\n .mapStream(res => res.customerGroup?.customers);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n );\r\n\r\n this.members$ = membersResult$.pipe(map(res => res?.items ?? []));\r\n this.membersTotal$ = membersResult$.pipe(map(res => res?.totalItems ?? 0));\r\n }\r\n\r\n create() {\r\n this.modalService\r\n .fromComponent(CustomerGroupDetailDialogComponent, { locals: { group: { name: '' } } })\r\n .pipe(\r\n switchMap(result =>\r\n result\r\n ? this.dataService.customer.createCustomerGroup({ ...result, customerIds: [] })\r\n : EMPTY,\r\n ),\r\n // refresh list\r\n switchMap(() => this.dataService.customer.getCustomerGroupList().single$),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n delete(groupId: string) {\r\n this.modalService\r\n .dialog({\r\n title: _('customer.confirm-delete-customer-group'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response ? this.dataService.customer.deleteCustomerGroup(groupId) : EMPTY,\r\n ),\r\n\r\n switchMap(result => {\r\n if (result.deleteCustomerGroup.result === DeletionResult.DELETED) {\r\n // refresh list\r\n return this.dataService.customer\r\n .getCustomerGroupList()\r\n .mapSingle(() => ({ errorMessage: false }));\r\n } else {\r\n return of({ errorMessage: result.deleteCustomerGroup.message });\r\n }\r\n }),\r\n )\r\n .subscribe(\r\n result => {\r\n if (typeof result.errorMessage === 'string') {\r\n this.notificationService.error(result.errorMessage);\r\n } else {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n }\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n update(group: GetCustomerGroups.Items) {\r\n this.modalService\r\n .fromComponent(CustomerGroupDetailDialogComponent, { locals: { group } })\r\n .pipe(\r\n switchMap(result =>\r\n result\r\n ? this.dataService.customer.updateCustomerGroup({ id: group.id, ...result })\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'CustomerGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n closeMembers() {\r\n const params = { ...this.route.snapshot.params };\r\n delete params.contents;\r\n this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });\r\n }\r\n\r\n addToGroup(group: GetCustomerGroupWithCustomers.CustomerGroup) {\r\n this.modalService\r\n .fromComponent(AddCustomerToGroupDialogComponent, {\r\n locals: {\r\n group,\r\n route: this.route,\r\n },\r\n size: 'md',\r\n verticalAlign: 'top',\r\n })\r\n .pipe(\r\n switchMap(customerIds =>\r\n customerIds\r\n ? this.dataService.customer\r\n .addCustomersToGroup(group.id, customerIds)\r\n .pipe(mapTo(customerIds))\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe({\r\n next: result => {\r\n this.notificationService.success(_(`customer.add-customers-to-group-success`), {\r\n customerCount: result.length,\r\n groupName: group.name,\r\n });\r\n this.refreshActiveGroupMembers$.next();\r\n this.selectedCustomerIds = [];\r\n },\r\n });\r\n }\r\n\r\n removeFromGroup(group: GetZones.Zones, customerIds: string[]) {\r\n this.dataService.customer.removeCustomersFromGroup(group.id, customerIds).subscribe({\r\n complete: () => {\r\n this.notificationService.success(_(`customer.remove-customers-from-group-success`), {\r\n customerCount: customerIds.length,\r\n groupName: group.name,\r\n });\r\n this.refreshActiveGroupMembers$.next();\r\n this.selectedCustomerIds = [];\r\n },\r\n });\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Customer, DataService, GetCustomerGroupWithCustomers } from '@vendure/admin-ui/core';\r\nimport { ZoneMember } from '@vendure/admin-ui/settings';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, takeUntil, tap } from 'rxjs/operators';\r\n\r\nexport interface CustomerGroupMemberFetchParams {\r\n skip: number;\r\n take: number;\r\n filterTerm: string;\r\n}\r\n\r\n@Component({\r\n selector: 'vdr-customer-group-member-list',\r\n templateUrl: './customer-group-member-list.component.html',\r\n styleUrls: ['./customer-group-member-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerGroupMemberListComponent implements OnInit, OnDestroy {\r\n @Input() members: Array<\r\n Pick<Customer, 'id' | 'createdAt' | 'updatedAt' | 'title' | 'firstName' | 'lastName' | 'emailAddress'>\r\n >;\r\n @Input() totalItems: number;\r\n @Input() route: ActivatedRoute;\r\n @Input() selectedMemberIds: string[] = [];\r\n @Output() selectionChange = new EventEmitter<string[]>();\r\n @Output() fetchParamsChange = new EventEmitter<CustomerGroupMemberFetchParams>();\r\n\r\n membersItemsPerPage$: Observable<number>;\r\n membersCurrentPage$: Observable<number>;\r\n filterTermControl = new FormControl('');\r\n private refresh$ = new BehaviorSubject<boolean>(true);\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(private router: Router, private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.membersCurrentPage$ = this.route.paramMap.pipe(\r\n map((qpm) => qpm.get('membersPage')),\r\n map((page) => (!page ? 1 : +page)),\r\n startWith(1),\r\n distinctUntilChanged(),\r\n );\r\n\r\n this.membersItemsPerPage$ = this.route.paramMap.pipe(\r\n map((qpm) => qpm.get('membersPerPage')),\r\n map((perPage) => (!perPage ? 10 : +perPage)),\r\n startWith(10),\r\n distinctUntilChanged(),\r\n );\r\n\r\n const filterTerm$ = this.filterTermControl.valueChanges.pipe(\r\n debounceTime(250),\r\n tap(() => this.setContentsPageNumber(1)),\r\n startWith(''),\r\n );\r\n\r\n combineLatest(this.membersCurrentPage$, this.membersItemsPerPage$, filterTerm$, this.refresh$)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(([currentPage, itemsPerPage, filterTerm]) => {\r\n const take = itemsPerPage;\r\n const skip = (currentPage - 1) * itemsPerPage;\r\n this.fetchParamsChange.emit({\r\n filterTerm,\r\n skip,\r\n take,\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setContentsPageNumber(page: number) {\r\n this.setParam('membersPage', page);\r\n }\r\n\r\n setContentsItemsPerPage(perPage: number) {\r\n this.setParam('membersPerPage', perPage);\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n\r\n private setParam(key: string, value: any) {\r\n this.router.navigate(['./', { ...this.route.snapshot.params, [key]: value }], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n areAllSelected(): boolean {\r\n if (this.members) {\r\n return this.selectedMemberIds.length === this.members.length;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n toggleSelectAll() {\r\n if (this.areAllSelected()) {\r\n this.selectionChange.emit([]);\r\n } else {\r\n this.selectionChange.emit(this.members.map((v) => v.id));\r\n }\r\n }\r\n\r\n toggleSelectMember(member: ZoneMember) {\r\n if (this.selectedMemberIds.includes(member.id)) {\r\n this.selectionChange.emit(this.selectedMemberIds.filter((id) => id !== member.id));\r\n } else {\r\n this.selectionChange.emit([...this.selectedMemberIds, member.id]);\r\n }\r\n }\r\n\r\n isMemberSelected = (member: ZoneMember): boolean => {\r\n return -1 < this.selectedMemberIds.indexOf(member.id);\r\n };\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport {\r\n Customer,\r\n GetCustomerHistory,\r\n HistoryEntry,\r\n HistoryEntryType,\r\n TimelineDisplayType,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-history',\r\n templateUrl: './customer-history.component.html',\r\n styleUrls: ['./customer-history.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerHistoryComponent {\r\n @Input() customer: Customer.Fragment;\r\n @Input() history: GetCustomerHistory.Items[];\r\n @Output() addNote = new EventEmitter<{ note: string }>();\r\n @Output() updateNote = new EventEmitter<HistoryEntry>();\r\n @Output() deleteNote = new EventEmitter<HistoryEntry>();\r\n note = '';\r\n readonly type = HistoryEntryType;\r\n\r\n getDisplayType(entry: GetCustomerHistory.Items): TimelineDisplayType {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n case HistoryEntryType.CUSTOMER_EMAIL_UPDATE_VERIFIED:\r\n case HistoryEntryType.CUSTOMER_PASSWORD_RESET_VERIFIED:\r\n return 'success';\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n return 'muted';\r\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\r\n return 'error';\r\n default:\r\n return 'default';\r\n }\r\n }\r\n\r\n getTimelineIcon(entry: GetCustomerHistory.Items): string | [string, string] | undefined {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n return 'user';\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n return ['assign-user', 'is-solid'];\r\n case HistoryEntryType.CUSTOMER_NOTE:\r\n return 'note';\r\n case HistoryEntryType.CUSTOMER_ADDED_TO_GROUP:\r\n case HistoryEntryType.CUSTOMER_REMOVED_FROM_GROUP:\r\n return 'users';\r\n }\r\n }\r\n\r\n isFeatured(entry: GetCustomerHistory.Items): boolean {\r\n switch (entry.type) {\r\n case HistoryEntryType.CUSTOMER_REGISTERED:\r\n case HistoryEntryType.CUSTOMER_VERIFIED:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n getName(entry: GetCustomerHistory.Items): string {\r\n const { administrator } = entry;\r\n if (administrator) {\r\n return `${administrator.firstName} ${administrator.lastName}`;\r\n } else {\r\n return `${this.customer.firstName} ${this.customer.lastName}`;\r\n }\r\n }\r\n\r\n addNoteToCustomer() {\r\n this.addNote.emit({ note: this.note });\r\n this.note = '';\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseListComponent,\r\n DataService,\r\n GetCustomerList,\r\n LogicalOperator,\r\n ModalService,\r\n NotificationService,\r\n} from '@vendure/admin-ui/core';\r\nimport { SortOrder } from '@vendure/common/lib/generated-shop-types';\r\nimport { EMPTY } from 'rxjs';\r\nimport { debounceTime, filter, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-customer-list',\r\n templateUrl: './customer-list.component.html',\r\n styleUrls: ['./customer-list.component.scss'],\r\n})\r\nexport class CustomerListComponent\r\n extends BaseListComponent<GetCustomerList.Query, GetCustomerList.Items>\r\n implements OnInit\r\n{\r\n searchTerm = new FormControl('');\r\n constructor(\r\n private dataService: DataService,\r\n router: Router,\r\n route: ActivatedRoute,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n ) {\r\n super(router, route);\r\n super.setQueryFn(\r\n (...args: any[]) => this.dataService.customer.getCustomerList(...args).refetchOnChannelChange(),\r\n data => data.customers,\r\n (skip, take) => ({\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n emailAddress: {\r\n contains: this.searchTerm.value,\r\n },\r\n lastName: {\r\n contains: this.searchTerm.value,\r\n },\r\n postalCode: {\r\n contains: this.searchTerm.value,\r\n },\r\n },\r\n filterOperator: LogicalOperator.OR,\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n },\r\n }),\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.searchTerm.valueChanges\r\n .pipe(\r\n filter(value => 2 < value.length || value.length === 0),\r\n debounceTime(250),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe(() => this.refresh());\r\n }\r\n\r\n deleteCustomer(customer: GetCustomerList.Items) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-customer'),\r\n body: `${customer.firstName} ${customer.lastName}`,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(switchMap(res => (res ? this.dataService.customer.deleteCustomer(customer.id) : EMPTY)))\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Customer',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'Customer',\r\n });\r\n },\r\n );\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { Customer } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-customer-status-label',\r\n templateUrl: './customer-status-label.component.html',\r\n styleUrls: ['./customer-status-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomerStatusLabelComponent {\r\n @Input() customer: Customer.Fragment;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { Customer } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CustomerResolver extends BaseEntityResolver<Customer.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Customer',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n title: '',\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n phoneNumber: null,\r\n addresses: null,\r\n user: null,\r\n },\r\n id => dataService.customer.getCustomer(id).mapStream(data => data.customer),\r\n );\r\n }\r\n}\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CanDeactivateDetailGuard,\r\n createResolveData,\r\n Customer,\r\n detailBreadcrumb,\r\n} from '@vendure/admin-ui/core';\r\n\r\nimport { CustomerDetailComponent } from './components/customer-detail/customer-detail.component';\r\nimport { CustomerGroupListComponent } from './components/customer-group-list/customer-group-list.component';\r\nimport { CustomerListComponent } from './components/customer-list/customer-list.component';\r\nimport { CustomerResolver } from './providers/routing/customer-resolver';\r\n\r\nexport const customerRoutes: Route[] = [\r\n {\r\n path: 'customers',\r\n component: CustomerListComponent,\r\n pathMatch: '',\r\n data: {\r\n breadcrumb: _('breadcrumb.customers'),\r\n },\r\n },\r\n {\r\n path: 'customers/:id',\r\n component: CustomerDetailComponent,\r\n resolve: createResolveData(CustomerResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: customerBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'groups',\r\n component: CustomerGroupListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.customer-groups'),\r\n },\r\n },\r\n];\r\n\r\nexport function customerBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<Customer.Fragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.customers',\r\n getName: (customer) => `${customer.firstName} ${customer.lastName}`,\r\n route: 'customers',\r\n });\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { AddCustomerToGroupDialogComponent } from './components/add-customer-to-group-dialog/add-customer-to-group-dialog.component';\r\nimport { AddressCardComponent } from './components/address-card/address-card.component';\r\nimport { AddressDetailDialogComponent } from './components/address-detail-dialog/address-detail-dialog.component';\r\nimport { CustomerDetailComponent } from './components/customer-detail/customer-detail.component';\r\nimport { CustomerGroupDetailDialogComponent } from './components/customer-group-detail-dialog/customer-group-detail-dialog.component';\r\nimport { CustomerGroupListComponent } from './components/customer-group-list/customer-group-list.component';\r\nimport { CustomerGroupMemberListComponent } from './components/customer-group-member-list/customer-group-member-list.component';\r\nimport { CustomerHistoryComponent } from './components/customer-history/customer-history.component';\r\nimport { CustomerListComponent } from './components/customer-list/customer-list.component';\r\nimport { CustomerStatusLabelComponent } from './components/customer-status-label/customer-status-label.component';\r\nimport { SelectCustomerGroupDialogComponent } from './components/select-customer-group-dialog/select-customer-group-dialog.component';\r\nimport { customerRoutes } from './customer.routes';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild(customerRoutes)],\r\n declarations: [\r\n CustomerListComponent,\r\n CustomerDetailComponent,\r\n CustomerStatusLabelComponent,\r\n AddressCardComponent,\r\n CustomerGroupListComponent,\r\n CustomerGroupDetailDialogComponent,\r\n AddCustomerToGroupDialogComponent,\r\n CustomerGroupMemberListComponent,\r\n SelectCustomerGroupDialogComponent,\r\n CustomerHistoryComponent,\r\n AddressDetailDialogComponent,\r\n ],\r\n exports: [AddressCardComponent],\r\n})\r\nexport class CustomerModule {}\r\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-dialog/customer-group-detail-dialog.component';\nexport * from './components/customer-group-list/customer-group-list.component';\nexport * from './components/customer-group-member-list/customer-group-member-list.component';\nexport * from './components/customer-history/customer-history.component';\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';\nexport * from './providers/routing/customer-resolver';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_","SortOrder"],"mappings":"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"}
|