@vendure/admin-ui 1.7.1 → 1.7.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 +8 -1
- package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-core.umd.js +28 -11
- package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-customer.umd.js +5 -4
- package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-order.umd.js +10 -7
- package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
- package/core/common/generated-types.d.ts +2 -1
- package/core/common/utilities/configurable-operation-utils.d.ts +4 -1
- package/core/common/version.d.ts +1 -1
- package/core/vendure-admin-ui-core.metadata.json +1 -1
- package/customer/vendure-admin-ui-customer.metadata.json +1 -1
- package/esm2015/catalog/components/option-value-input/option-value-input.component.js +8 -2
- package/esm2015/core/common/generated-types.js +2 -2
- package/esm2015/core/common/introspection-result.js +1 -1
- package/esm2015/core/common/utilities/configurable-operation-utils.js +8 -2
- package/esm2015/core/common/version.js +2 -2
- package/esm2015/core/components/app-shell/app-shell.component.js +1 -1
- package/esm2015/core/data/utils/remove-readonly-custom-fields.js +4 -1
- package/esm2015/core/shared/components/dropdown/dropdown-menu.component.js +11 -11
- package/esm2015/core/shared/components/dropdown/dropdown-trigger.directive.js +1 -1
- package/esm2015/core/shared/pipes/locale-currency.pipe.js +10 -2
- package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +6 -5
- package/esm2015/order/components/order-editor/order-editor.component.js +9 -5
- package/fesm2015/vendure-admin-ui-catalog.js +7 -1
- package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
- package/fesm2015/vendure-admin-ui-core.js +32 -15
- package/fesm2015/vendure-admin-ui-core.js.map +1 -1
- package/fesm2015/vendure-admin-ui-customer.js +5 -4
- package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
- package/fesm2015/vendure-admin-ui-order.js +8 -4
- package/fesm2015/vendure-admin-ui-order.js.map +1 -1
- package/order/vendure-admin-ui-order.metadata.json +1 -1
- package/package.json +2 -2
- package/static/styles/_variables.scss +1 -0
- package/static/styles/global/_sass-overrides.scss +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"AddCustomerToGroupDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"vdr-add-customer-to-group-dialog","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":21},"member":"OnPush"},"template":"<ng-template vdrDialogTitle>\r\n {{ 'customer.add-customers-to-group-with-name' | translate: {groupName: group.name} }}\r\n</ng-template>\r\n\r\n<vdr-customer-group-member-list\r\n [members]=\"customers$ | async\"\r\n [totalItems]=\"customersTotal$ | async\"\r\n [route]=\"route\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n>\r\n\r\n</vdr-customer-group-member-list>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedCustomerIds.length\" class=\"btn btn-primary\">\r\n {{ 'customer.add-customers-to-group-with-count' | translate: {count: selectedCustomerIds.length} }}\r\n </button>\r\n</ng-template>\r\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":27,"character":37}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}]}},"AddressCardComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"vdr-address-card","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":22,"character":21},"member":"OnPush"},"template":"<div class=\"card\" *ngIf=\"addressForm.value as address\">\r\n <div class=\"card-header\">\r\n <div class=\"address-title\">\r\n <span class=\"street-line\" *ngIf=\"address.streetLine1\">{{ address.streetLine1 }},</span>\r\n {{ address.countryCode }}\r\n </div>\r\n <div class=\"default-controls\">\r\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultShipping\">\r\n <clr-icon shape=\"truck\"></clr-icon>\r\n {{ 'customer.default-shipping-address' | translate }}\r\n </vdr-chip>\r\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultBilling\">\r\n <clr-icon shape=\"credit-card\"></clr-icon>\r\n {{ 'customer.default-billing-address' | translate }}\r\n </vdr-chip>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text\">\r\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\r\n </div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <vdr-entity-info [entity]=\"address\"></vdr-entity-info>\r\n <ng-container *ngIf=\"editable\">\r\n <button class=\"btn btn-sm btn-link\" (click)=\"editAddress()\">\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-sm btn-link\" vdrDropdownTrigger>\r\n {{ 'common.more' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <button\r\n vdrDropdownItem\r\n class=\"button\"\r\n [disabled]=\"isDefaultShipping\"\r\n (click)=\"setAsDefaultShippingAddress()\"\r\n >\r\n {{ 'customer.set-as-default-shipping-address' | translate }}\r\n </button>\r\n <button\r\n vdrDropdownItem\r\n class=\"button\"\r\n [disabled]=\"isDefaultBilling\"\r\n (click)=\"setAsDefaultBillingAddress()\"\r\n >\r\n {{ 'customer.set-as-default-billing-address' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"delete()\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","styles":[":host{display:block;max-width:360px}clr-input-container{margin-bottom:12px}.defaul-controls{display:flex}.is-default{margin:0;color:var(--color-success-500)}\n"]}]}],"members":{"addressForm":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":5}}]}],"customFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":5}}]}],"availableCountries":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":5}}]}],"isDefaultBilling":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":5}}]}],"isDefaultShipping":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":5}}]}],"editable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":5}}]}],"setAsDefaultShipping":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":5}}]}],"setAsDefaultBilling":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":5}}]}],"deleteAddress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":33,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ModalService","line":36,"character":38},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":36,"character":76}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"getCountryName":[{"__symbolic":"method"}],"setAsDefaultBillingAddress":[{"__symbolic":"method"}],"setAsDefaultShippingAddress":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"editAddress":[{"__symbolic":"method"}]}},"AddressDetailDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"vdr-address-detail-dialog","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":8,"character":21},"member":"OnPush"},"template":"<ng-template vdrDialogTitle>\r\n <span *ngIf=\"addressForm.get('streetLine1')?.value as streetLine1\">{{ streetLine1 }},</span>\r\n <span *ngIf=\"addressForm.get('countryCode')?.value as countryCode\"> {{ countryCode }}</span>\r\n</ng-template>\r\n\r\n<vdr-address-form\r\n [formGroup]=\"addressForm\"\r\n [availableCountries]=\"availableCountries\"\r\n [customFields]=\"customFields\"\r\n></vdr-address-form>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"save()\"\r\n [disabled]=\"!addressForm.valid || !addressForm.touched\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n</ng-template>\r\n","styles":["clr-input-container{margin-bottom:12px}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":16,"character":40}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}]}},"CustomerDetailComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"BaseDetailComponent","line":55,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":48,"character":1},"arguments":[{"selector":"vdr-customer-detail","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":52,"character":21},"member":"OnPush"},"template":"<vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-customer-status-label [customer]=\"entity$ | async\"></vdr-customer-status-label>\r\n <div\r\n class=\"last-login\"\r\n *ngIf=\"(entity$ | async)?.user?.lastLogin as lastLogin\"\r\n [title]=\"lastLogin | localeDate: 'medium'\"\r\n >\r\n {{ 'customer.last-login' | translate }}: {{ lastLogin | timeAgo }}\r\n </div>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\r\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\" [readOnlyToggle]=\"!(isNew$ | async)\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.first-name' | translate\"\r\n for=\"firstName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.last-name' | translate\"\r\n for=\"lastName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.email-address' | translate\"\r\n for=\"emailAddress\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.phone-number' | translate\"\r\n for=\"phoneNumber\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.password' | translate\" for=\"password\" *ngIf=\"isNew$ | async\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Customer\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get(['customer', 'customFields'])\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"customer-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n\r\n<div class=\"groups\" *ngIf=\"(entity$ | async)?.groups as groups\">\r\n <label class=\"clr-control-label\">{{ 'customer.customer-groups' | translate }}</label>\r\n <ng-container *ngIf=\"groups.length; else noGroups\">\r\n <vdr-chip\r\n *ngFor=\"let group of groups\"\r\n [colorFrom]=\"group.id\"\r\n icon=\"times\"\r\n (iconClick)=\"removeFromGroup(group)\"\r\n >{{ group.name }}</vdr-chip\r\n >\r\n </ng-container>\r\n <ng-template #noGroups>\r\n {{ 'customer.not-a-member-of-any-groups' | translate }}\r\n </ng-template>\r\n <div>\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"addToGroup()\"\r\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-4\">\r\n <h3>{{ 'customer.addresses' | translate }}</h3>\r\n <vdr-address-card\r\n *ngFor=\"let addressForm of getAddressFormControls()\"\r\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\r\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\r\n [addressForm]=\"addressForm\"\r\n [customFields]=\"addressCustomFields\"\r\n [editable]=\"(['UpdateCustomer'] | hasPermission) && !addressesToDeleteIds.has(addressForm.value.id)\"\r\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\r\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\r\n (deleteAddress)=\"toggleDeleteAddress($event)\"\r\n ></vdr-address-card>\r\n <button class=\"btn btn-secondary\" (click)=\"addAddress()\" *vdrIfPermissions=\"'UpdateCustomer'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-address' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"clr-col-md-8\">\r\n <h3>{{ 'customer.orders' | translate }}</h3>\r\n <vdr-data-table\r\n [items]=\"orders$ | async\"\r\n [itemsPerPage]=\"ordersPerPage\"\r\n [totalItems]=\"ordersCount$ | async\"\r\n [currentPage]=\"currentOrdersPage\"\r\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\r\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\r\n (pageChange)=\"setOrderCurrentPage($event)\"\r\n >\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.state' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.total' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.updated-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-order=\"item\">\r\n <td class=\"left\">{{ order.code }}</td>\r\n <td class=\"left\">{{ order.state }}</td>\r\n <td class=\"left\">{{ order.totalWithTax | localeCurrency: order.currencyCode }}</td>\r\n <td class=\"left\">{{ order.updatedAt | localeDate: 'medium' }}</td>\r\n <td class=\"right\">\r\n <vdr-table-row-action\r\n iconShape=\"shopping-cart\"\r\n [label]=\"'common.open' | translate\"\r\n [linkTo]=\"['/orders/', order.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n</div>\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-6\">\r\n <vdr-customer-history\r\n [customer]=\"entity$ | async\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNoteToCustomer($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-customer-history>\r\n </div>\r\n</div>\r\n","styles":[".last-login{margin-left:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":75,"character":15},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":76,"character":16},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ServerConfigService","line":77,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":78,"character":32},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":79,"character":29},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":80,"character":31},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ModalService","line":81,"character":30},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"NotificationService","line":82,"character":37}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getAddressFormControls":[{"__symbolic":"method"}],"setDefaultBillingAddressId":[{"__symbolic":"method"}],"setDefaultShippingAddressId":[{"__symbolic":"method"}],"toggleDeleteAddress":[{"__symbolic":"method"}],"addAddress":[{"__symbolic":"method"}],"setOrderItemsPerPage":[{"__symbolic":"method"}],"setOrderCurrentPage":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"addToGroup":[{"__symbolic":"method"}],"removeFromGroup":[{"__symbolic":"method"}],"addNoteToCustomer":[{"__symbolic":"method"}],"updateNote":[{"__symbolic":"method"}],"deleteNote":[{"__symbolic":"method"}],"setFormValues":[{"__symbolic":"method"}],"fetchOrdersList":[{"__symbolic":"method"}]}},"CustomerGroupDetailDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"vdr-customer-group-detail-dialog","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":14,"character":21},"member":"OnPush"},"template":"<ng-template vdrDialogTitle>\r\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\r\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\r\n</ng-template>\r\n<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['CreateCustomerGroup', 'UpdateCustomerGroup'] | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"CustomerGroup\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"form.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n</form>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"save()\" [disabled]=\"!form.valid\" class=\"btn btn-primary\">\r\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\r\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\r\n </button>\r\n</ng-template>\r\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ServerConfigService","line":22,"character":45},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":22,"character":87}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}]}},"CustomerGroupListComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"BaseListComponent","line":40,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":33,"character":1},"arguments":[{"selector":"vdr-customer-group-list","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":37,"character":21},"member":"OnPush"},"template":"<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"emailSearchTerm\"\r\n [formControl]=\"searchTerm\"\r\n [placeholder]=\"'customer.search-by-group-name' | translate\"\r\n class=\"search-input ml3\"\r\n />\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\r\n <button class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" (click)=\"create()\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer-group' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n<div class=\"group-wrapper\">\r\n <div class=\"group-list\">\r\n <vdr-data-table\r\n [class.expanded]=\"activeGroup$ | async\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n >\r\n <ng-template let-group=\"item\">\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-entity-info [entity]=\"group\"></vdr-entity-info>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-chip [colorFrom]=\"group.id\">{{ group.name }}</vdr-chip>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['./', { contents: group.id }]\"\r\n queryParamsHandling=\"preserve\"\r\n >\r\n <clr-icon shape=\"view-list\"></clr-icon>\r\n {{ 'customer.view-group-members' | translate }}\r\n </a>\r\n </td>\r\n <td class=\"right align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <button class=\"btn btn-link btn-sm\" (click)=\"update(group)\">\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n </td>\r\n <td [class.active]=\"group.id === activeGroupId\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"delete(group.id)\"\r\n [disabled]=\"!('DeleteCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n\r\n <table class=\"table mt0\" *ngIf=\"!(listIsEmpty$ | async); else emptyPlaceholder\">\r\n <tbody>\r\n <tr\r\n *ngFor=\"let group of items$ | async\"\r\n [class.active]=\"group.id === (activeGroup$ | async)?.id\"\r\n ></tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder></vdr-empty-placeholder>\r\n </ng-template>\r\n <div class=\"group-members\" [class.expanded]=\"activeGroup$ | async\">\r\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\r\n <div class=\"flex\">\r\n <div class=\"header-title-row\">{{ activeGroup.name }} ({{ membersTotal$ | async }})</div>\r\n <div class=\"flex-spacer\"></div>\r\n <button type=\"button\" class=\"close-button\" (click)=\"closeMembers()\">\r\n <clr-icon shape=\"close\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"controls\">\r\n <vdr-dropdown>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary btn-sm\"\r\n vdrDropdownTrigger\r\n [disabled]=\"selectedCustomerIds.length === 0\"\r\n >\r\n {{ 'common.with-selected' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"removeFromGroup(activeGroup, selectedCustomerIds)\"\r\n vdrDropdownItem\r\n [disabled]=\"!('UpdateCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'customer.remove-from-group' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addToGroup(activeGroup)\">\r\n {{ 'customer.add-customers-to-group' | translate: { groupName: activeGroup.name } }}\r\n </button>\r\n </div>\r\n <vdr-customer-group-member-list\r\n [members]=\"members$ | async\"\r\n [route]=\"route\"\r\n [totalItems]=\"membersTotal$ | async\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n ></vdr-customer-group-member-list>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","styles":[".group-wrapper{display:flex;height:calc(100% - 50px)}.group-wrapper .group-list{flex:1;overflow:auto;margin-top:0}.group-wrapper .group-list .active{background-color:var(--clr-global-selection-color)}.group-wrapper .group-list.expanded{width:calc(100% - 40vw)}vdr-data-table ::ng-deep table{margin-top:0}.group-members{height:100%;width:0;opacity:0;visibility:hidden;overflow:auto;transition:width .3s,opacity .2s .3s,visibility 0s .3s}.group-members.expanded{width:40vw;visibility:visible;opacity:1;padding-left:12px}.group-members .close-button{margin:0;background:none;border:none;cursor:pointer}.group-members ::ng-deep table.table{margin-top:0}.group-members ::ng-deep table.table th{top:0}.group-members .controls{display:flex;justify-content:space-between}vdr-empty-placeholder{flex:1}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":61,"character":29},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"NotificationService","line":62,"character":37},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ModalService","line":63,"character":30},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":64,"character":22},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":65,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"closeMembers":[{"__symbolic":"method"}],"addToGroup":[{"__symbolic":"method"}],"removeFromGroup":[{"__symbolic":"method"}]}},"CustomerGroupMemberFetchParams":{"__symbolic":"interface"},"CustomerGroupMemberListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":22,"character":1},"arguments":[{"selector":"vdr-customer-group-member-list","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":26,"character":21},"member":"OnPush"},"template":"<input\r\n type=\"text\"\r\n name=\"searchTerm\"\r\n [formControl]=\"filterTermControl\"\r\n [placeholder]=\"'customer.search-customers-by-email' | translate\"\r\n class=\"search-input\"\r\n/>\r\n\r\n<vdr-data-table\r\n [items]=\"members\"\r\n [itemsPerPage]=\"membersItemsPerPage$ | async\"\r\n [totalItems]=\"totalItems\"\r\n [currentPage]=\"membersCurrentPage$ | async\"\r\n (pageChange)=\"setContentsPageNumber($event)\"\r\n (itemsPerPageChange)=\"setContentsItemsPerPage($event)\"\r\n [allSelected]=\"areAllSelected()\"\r\n [isRowSelectedFn]=\"('UpdateCustomerGroup' | hasPermission) && isMemberSelected\"\r\n (rowSelectChange)=\"toggleSelectMember($event)\"\r\n (allSelectChange)=\"toggleSelectAll()\"\r\n>\r\n <vdr-dt-column [expand]=\"true\">{{ 'customer.name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column [expand]=\"true\">{{ 'customer.email-address' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-customer=\"item\">\r\n <td class=\"left align-middle\">\r\n {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }}\r\n </td>\r\n <td class=\"left align-middle\">{{ customer.emailAddress }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['/customer', 'customers', customer.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n","styles":[""]}]}],"members":{"members":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":5}}]}],"totalItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":5}}]}],"route":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":5}}]}],"selectedMemberIds":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":5}}]}],"selectionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":35,"character":5}}]}],"fetchParamsChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":36,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":44,"character":32},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":44,"character":61}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setContentsPageNumber":[{"__symbolic":"method"}],"setContentsItemsPerPage":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"setParam":[{"__symbolic":"method"}],"areAllSelected":[{"__symbolic":"method"}],"toggleSelectAll":[{"__symbolic":"method"}],"toggleSelectMember":[{"__symbolic":"method"}]}},"CustomerHistoryComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"vdr-customer-history","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":13,"character":21},"member":"OnPush"},"template":"<h4>{{ 'customer.customer-history' | translate }}</h4>\r\n<div class=\"entry-list\">\r\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" *vdrIfPermissions=\"'UpdateCustomer'\">\r\n <div class=\"note-entry\">\r\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\r\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToCustomer()\">\r\n {{ 'order.add-note' | translate }}\r\n </button>\r\n </div>\r\n </vdr-timeline-entry>\r\n <vdr-timeline-entry\r\n *ngFor=\"let entry of history\"\r\n [displayType]=\"getDisplayType(entry)\"\r\n [iconShape]=\"getTimelineIcon(entry)\"\r\n [createdAt]=\"entry.createdAt\"\r\n [name]=\"getName(entry)\"\r\n [featured]=\"isFeatured(entry)\"\r\n >\r\n <ng-container [ngSwitch]=\"entry.type\">\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REGISTERED\">\r\n <div class=\"title\">\r\n {{ 'customer.history-customer-registered' | translate }}\r\n </div>\r\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\r\n {{ 'customer.history-using-native-auth-strategy' | translate }}\r\n </ng-container>\r\n <ng-template #namedStrategy>\r\n {{\r\n 'customer.history-using-external-auth-strategy'\r\n | translate: { strategy: entry.data.strategy }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_VERIFIED\">\r\n <div class=\"title\">\r\n {{ 'customer.history-customer-verified' | translate }}\r\n </div>\r\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\r\n {{ 'customer.history-using-native-auth-strategy' | translate }}\r\n </ng-container>\r\n <ng-template #namedStrategy>\r\n {{\r\n 'customer.history-using-external-auth-strategy'\r\n | translate: { strategy: entry.data.strategy }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_DETAIL_UPDATED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-detail-updated' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDED_TO_GROUP\">\r\n {{\r\n 'customer.history-customer-added-to-group'\r\n | translate: { groupName: entry.data.groupName }\r\n }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REMOVED_FROM_GROUP\">\r\n {{\r\n 'customer.history-customer-removed-from-group'\r\n | translate: { groupName: entry.data.groupName }\r\n }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_CREATED\">\r\n {{ 'customer.history-customer-address-created' | translate }}\r\n <div class=\"flex\">\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_UPDATED\">\r\n {{ 'customer.history-customer-address-updated' | translate }}\r\n <div class=\"flex\">\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n <vdr-history-entry-detail>\r\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_DELETED\">\r\n {{ 'customer.history-customer-address-deleted' | translate }}\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_UPDATED\">\r\n {{ 'customer.history-customer-password-updated' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_REQUESTED\">\r\n {{ 'customer.history-customer-password-reset-requested' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_VERIFIED\">\r\n {{ 'customer.history-customer-password-reset-verified' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_REQUESTED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-email-update-requested' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\r\n entry.data.oldEmailAddress\r\n }}</vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\r\n entry.data.newEmailAddress\r\n }}</vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_VERIFIED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-email-update-verified' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\r\n entry.data.oldEmailAddress\r\n }}</vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\r\n entry.data.newEmailAddress\r\n }}</vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_NOTE\">\r\n <div class=\"flex\">\r\n <div class=\"note-text\">\r\n {{ entry.data.note }}\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"updateNote.emit(entry)\"\r\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"deleteNote.emit(entry)\"\r\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </vdr-timeline-entry>\r\n <vdr-timeline-entry [isLast]=\"true\"></vdr-timeline-entry>\r\n</div>\r\n","styles":[".entry-list{margin-top:24px;margin-left:24px;margin-right:12px}.note-entry{display:flex;align-items:center}.note-entry .note{flex:1}.note-entry button{margin:0}textarea.note{flex:1;height:36px;border-radius:3px;margin-right:6px}.note-text{color:var(--color-text-100);white-space:pre-wrap}.address-string{font-size:smaller;color:var(--color-text-200)}\n"]}]}],"members":{"customer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":5}}]}],"history":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":5}}]}],"addNote":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":5}}]}],"updateNote":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":19,"character":5}}]}],"deleteNote":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":5}}]}],"getDisplayType":[{"__symbolic":"method"}],"getTimelineIcon":[{"__symbolic":"method"}],"isFeatured":[{"__symbolic":"method"}],"getName":[{"__symbolic":"method"}],"addNoteToCustomer":[{"__symbolic":"method"}]}},"CustomerListComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"BaseListComponent","line":22,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"vdr-customer-list","template":"<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"emailSearchTerm\"\r\n [formControl]=\"searchTerm\"\r\n [placeholder]=\"'customer.search-customers-by-email-last-name-postal-code' | translate\"\r\n class=\"search-input ml3\"\r\n />\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateCustomer'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column [expand]=\"true\">{{ 'customer.name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column [expand]=\"true\">{{ 'customer.email-address' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'customer.customer-type' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-customer=\"item\">\r\n <td class=\"left align-middle\">\r\n {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }}\r\n </td>\r\n <td class=\"left align-middle\">{{ customer.emailAddress }}</td>\r\n <td class=\"left align-middle\">\r\n <vdr-customer-status-label [customer]=\"customer\"></vdr-customer-status-label>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', customer.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td>\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteCustomer(customer)\"\r\n [disabled]=\"!('DeleteCustomer' | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n","styles":[".search-input{margin-top:6px;min-width:300px}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":27,"character":29},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":28,"character":16},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":29,"character":15},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ModalService","line":30,"character":30},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"NotificationService","line":31,"character":37}]}],"ngOnInit":[{"__symbolic":"method"}],"deleteCustomer":[{"__symbolic":"method"}]}},"CustomerStatusLabelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"vdr-customer-status-label","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":8,"character":21},"member":"OnPush"},"template":"<vdr-chip *ngIf=\"customer.user?.id\">\r\n <ng-container *ngIf=\"customer.user?.verified\">\r\n <clr-icon shape=\"check-circle\" class=\"verified-user-icon\"></clr-icon>\r\n {{ 'customer.verified' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!customer.user?.verified\">\r\n <clr-icon shape=\"check-circle\" class=\"registered-user-icon\"></clr-icon>\r\n {{ 'customer.registered' | translate }}\r\n </ng-container>\r\n</vdr-chip>\r\n<vdr-chip *ngIf=\"!customer.user?.id\">{{ 'customer.guest' | translate }}</vdr-chip>\r\n","styles":[".registered-user-icon{color:var(--color-grey-300)}.verified-user-icon{color:var(--color-success-500)}\n"]}]}],"members":{"customer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":5}}]}]}},"SelectCustomerGroupDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"vdr-select-customer-group-dialog","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":10,"character":21},"member":"OnPush"},"template":"<ng-template vdrDialogTitle>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n</ng-template>\r\n\r\n<ng-select\r\n [items]=\"groups$ | async\"\r\n appendTo=\"body\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n bindValue=\"id\"\r\n [(ngModel)]=\"selectedGroupIds\"\r\n [clearable]=\"true\"\r\n [searchable]=\"false\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> × </span>\r\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n</ng-select>\r\n\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedGroupIds.length\" class=\"btn btn-primary\">\r\n {{ 'customer.add-customer-to-groups-with-count' | translate: {count: selectedGroupIds.length} }}\r\n </button>\r\n</ng-template>\r\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":17,"character":37}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}]}},"CustomerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"SharedModule","line":18,"character":14},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":18,"character":28},"member":"forChild"},"arguments":[{"__symbolic":"reference","name":"customerRoutes"}]}],"declarations":[{"__symbolic":"reference","name":"CustomerListComponent"},{"__symbolic":"reference","name":"CustomerDetailComponent"},{"__symbolic":"reference","name":"CustomerStatusLabelComponent"},{"__symbolic":"reference","name":"AddressCardComponent"},{"__symbolic":"reference","name":"CustomerGroupListComponent"},{"__symbolic":"reference","name":"CustomerGroupDetailDialogComponent"},{"__symbolic":"reference","name":"AddCustomerToGroupDialogComponent"},{"__symbolic":"reference","name":"CustomerGroupMemberListComponent"},{"__symbolic":"reference","name":"SelectCustomerGroupDialogComponent"},{"__symbolic":"reference","name":"CustomerHistoryComponent"},{"__symbolic":"reference","name":"AddressDetailDialogComponent"}],"exports":[{"__symbolic":"reference","name":"AddressCardComponent"}]}]}],"members":{}},"customerRoutes":[{"path":"customers","component":{"__symbolic":"reference","name":"CustomerListComponent"},"pathMatch":"","data":{"breadcrumb":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@biesbjerg/ngx-translate-extract-marker","name":"marker","line":20,"character":24},"arguments":["breadcrumb.customers"]}}},{"path":"customers/:id","component":{"__symbolic":"reference","name":"CustomerDetailComponent"},"resolve":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"createResolveData","line":26,"character":17},"arguments":[{"__symbolic":"reference","name":"CustomerResolver"}]},"canDeactivate":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"CanDeactivateDetailGuard","line":27,"character":24}],"data":{"breadcrumb":{"__symbolic":"reference","name":"customerBreadcrumb"}}},{"path":"groups","component":{"__symbolic":"reference","name":"CustomerGroupListComponent"},"data":{"breadcrumb":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@biesbjerg/ngx-translate-extract-marker","name":"marker","line":36,"character":24},"arguments":["breadcrumb.customer-groups"]}}}],"customerBreadcrumb":{"__symbolic":"function","parameters":["data","params"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"detailBreadcrumb","line":42,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":46,"character":17,"module":"./customer.routes"}]}},"CustomerResolver":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"BaseEntityResolver","line":9,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":10,"character":24},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":10,"character":45}]}]},"statics":{"ɵprov":{}}}},"origins":{"AddCustomerToGroupDialogComponent":"./components/add-customer-to-group-dialog/add-customer-to-group-dialog.component","AddressCardComponent":"./components/address-card/address-card.component","AddressDetailDialogComponent":"./components/address-detail-dialog/address-detail-dialog.component","CustomerDetailComponent":"./components/customer-detail/customer-detail.component","CustomerGroupDetailDialogComponent":"./components/customer-group-detail-dialog/customer-group-detail-dialog.component","CustomerGroupListComponent":"./components/customer-group-list/customer-group-list.component","CustomerGroupMemberFetchParams":"./components/customer-group-member-list/customer-group-member-list.component","CustomerGroupMemberListComponent":"./components/customer-group-member-list/customer-group-member-list.component","CustomerHistoryComponent":"./components/customer-history/customer-history.component","CustomerListComponent":"./components/customer-list/customer-list.component","CustomerStatusLabelComponent":"./components/customer-status-label/customer-status-label.component","SelectCustomerGroupDialogComponent":"./components/select-customer-group-dialog/select-customer-group-dialog.component","CustomerModule":"./customer.module","customerRoutes":"./customer.routes","customerBreadcrumb":"./customer.routes","CustomerResolver":"./providers/routing/customer-resolver"},"importAs":"@vendure/admin-ui/customer"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"AddCustomerToGroupDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"vdr-add-customer-to-group-dialog","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":21},"member":"OnPush"},"template":"<ng-template vdrDialogTitle>\r\n {{ 'customer.add-customers-to-group-with-name' | translate: {groupName: group.name} }}\r\n</ng-template>\r\n\r\n<vdr-customer-group-member-list\r\n [members]=\"customers$ | async\"\r\n [totalItems]=\"customersTotal$ | async\"\r\n [route]=\"route\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n>\r\n\r\n</vdr-customer-group-member-list>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedCustomerIds.length\" class=\"btn btn-primary\">\r\n {{ 'customer.add-customers-to-group-with-count' | translate: {count: selectedCustomerIds.length} }}\r\n </button>\r\n</ng-template>\r\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":27,"character":37}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}]}},"AddressCardComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"vdr-address-card","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":22,"character":21},"member":"OnPush"},"template":"<div class=\"card\" *ngIf=\"addressForm.value as address\">\r\n <div class=\"card-header\">\r\n <div class=\"address-title\">\r\n <span class=\"street-line\" *ngIf=\"address.streetLine1\">{{ address.streetLine1 }},</span>\r\n {{ address.countryCode }}\r\n </div>\r\n <div class=\"default-controls\">\r\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultShipping\">\r\n <clr-icon shape=\"truck\"></clr-icon>\r\n {{ 'customer.default-shipping-address' | translate }}\r\n </vdr-chip>\r\n <vdr-chip class=\"is-default p8\" *ngIf=\"isDefaultBilling\">\r\n <clr-icon shape=\"credit-card\"></clr-icon>\r\n {{ 'customer.default-billing-address' | translate }}\r\n </vdr-chip>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text\">\r\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\r\n </div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <vdr-entity-info [entity]=\"address\"></vdr-entity-info>\r\n <ng-container *ngIf=\"editable\">\r\n <button class=\"btn btn-sm btn-link\" (click)=\"editAddress()\">\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-sm btn-link\" vdrDropdownTrigger>\r\n {{ 'common.more' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <button\r\n vdrDropdownItem\r\n class=\"button\"\r\n [disabled]=\"isDefaultShipping\"\r\n (click)=\"setAsDefaultShippingAddress()\"\r\n >\r\n {{ 'customer.set-as-default-shipping-address' | translate }}\r\n </button>\r\n <button\r\n vdrDropdownItem\r\n class=\"button\"\r\n [disabled]=\"isDefaultBilling\"\r\n (click)=\"setAsDefaultBillingAddress()\"\r\n >\r\n {{ 'customer.set-as-default-billing-address' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"delete()\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","styles":[":host{display:block;max-width:360px}clr-input-container{margin-bottom:12px}.defaul-controls{display:flex}.is-default{margin:0;color:var(--color-success-500)}\n"]}]}],"members":{"addressForm":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":5}}]}],"customFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":5}}]}],"availableCountries":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":5}}]}],"isDefaultBilling":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":5}}]}],"isDefaultShipping":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":5}}]}],"editable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":5}}]}],"setAsDefaultShipping":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":5}}]}],"setAsDefaultBilling":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":5}}]}],"deleteAddress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":33,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ModalService","line":36,"character":38},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":36,"character":76}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"getCountryName":[{"__symbolic":"method"}],"setAsDefaultBillingAddress":[{"__symbolic":"method"}],"setAsDefaultShippingAddress":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"editAddress":[{"__symbolic":"method"}]}},"AddressDetailDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"vdr-address-detail-dialog","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":8,"character":21},"member":"OnPush"},"template":"<ng-template vdrDialogTitle>\r\n <span *ngIf=\"addressForm.get('streetLine1')?.value as streetLine1\">{{ streetLine1 }},</span>\r\n <span *ngIf=\"addressForm.get('countryCode')?.value as countryCode\"> {{ countryCode }}</span>\r\n</ng-template>\r\n\r\n<vdr-address-form\r\n [formGroup]=\"addressForm\"\r\n [availableCountries]=\"availableCountries\"\r\n [customFields]=\"customFields\"\r\n></vdr-address-form>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"save()\"\r\n [disabled]=\"!addressForm.valid || !addressForm.touched\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n</ng-template>\r\n","styles":["clr-input-container{margin-bottom:12px}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":16,"character":40}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}]}},"CustomerDetailComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"BaseDetailComponent","line":55,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":48,"character":1},"arguments":[{"selector":"vdr-customer-detail","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":52,"character":21},"member":"OnPush"},"template":"<vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n <vdr-customer-status-label [customer]=\"entity$ | async\"></vdr-customer-status-label>\r\n <div\r\n class=\"last-login\"\r\n *ngIf=\"(entity$ | async)?.user?.lastLogin as lastLogin\"\r\n [title]=\"lastLogin | localeDate: 'medium'\"\r\n >\r\n {{ 'customer.last-login' | translate }}: {{ lastLogin | timeAgo }}\r\n </div>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"'UpdateCustomer'\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"!(addressDefaultsUpdated || (detailForm.valid && detailForm.dirty))\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm.get('customer')\">\r\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\" [readOnlyToggle]=\"!(isNew$ | async)\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.first-name' | translate\"\r\n for=\"firstName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.last-name' | translate\"\r\n for=\"lastName\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.email-address' | translate\"\r\n for=\"emailAddress\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'customer.phone-number' | translate\"\r\n for=\"phoneNumber\"\r\n [readOnlyToggle]=\"!(isNew$ | async)\"\r\n >\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.password' | translate\" for=\"password\" *ngIf=\"isNew$ | async\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Customer\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get(['customer', 'customFields'])\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"customer-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n</form>\r\n\r\n<div class=\"groups\" *ngIf=\"(entity$ | async)?.groups as groups\">\r\n <label class=\"clr-control-label\">{{ 'customer.customer-groups' | translate }}</label>\r\n <ng-container *ngIf=\"groups.length; else noGroups\">\r\n <vdr-chip\r\n *ngFor=\"let group of groups\"\r\n [colorFrom]=\"group.id\"\r\n icon=\"times\"\r\n (iconClick)=\"removeFromGroup(group)\"\r\n >{{ group.name }}</vdr-chip\r\n >\r\n </ng-container>\r\n <ng-template #noGroups>\r\n {{ 'customer.not-a-member-of-any-groups' | translate }}\r\n </ng-template>\r\n <div>\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"addToGroup()\"\r\n *vdrIfPermissions=\"'UpdateCustomerGroup'\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-4\">\r\n <h3>{{ 'customer.addresses' | translate }}</h3>\r\n <vdr-address-card\r\n *ngFor=\"let addressForm of getAddressFormControls()\"\r\n [class.to-delete]=\"addressesToDeleteIds.has(addressForm.value.id)\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [isDefaultBilling]=\"defaultBillingAddressId === addressForm.value.id\"\r\n [isDefaultShipping]=\"defaultShippingAddressId === addressForm.value.id\"\r\n [addressForm]=\"addressForm\"\r\n [customFields]=\"addressCustomFields\"\r\n [editable]=\"(['UpdateCustomer'] | hasPermission) && !addressesToDeleteIds.has(addressForm.value.id)\"\r\n (setAsDefaultBilling)=\"setDefaultBillingAddressId($event)\"\r\n (setAsDefaultShipping)=\"setDefaultShippingAddressId($event)\"\r\n (deleteAddress)=\"toggleDeleteAddress($event)\"\r\n ></vdr-address-card>\r\n <button class=\"btn btn-secondary\" (click)=\"addAddress()\" *vdrIfPermissions=\"'UpdateCustomer'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-address' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"clr-col-md-8\">\r\n <h3>{{ 'customer.orders' | translate }}</h3>\r\n <vdr-data-table\r\n [items]=\"orders$ | async\"\r\n [itemsPerPage]=\"ordersPerPage\"\r\n [totalItems]=\"ordersCount$ | async\"\r\n [currentPage]=\"currentOrdersPage\"\r\n [emptyStateLabel]=\"'customer.no-orders-placed' | translate\"\r\n (itemsPerPageChange)=\"setOrderItemsPerPage($event)\"\r\n (pageChange)=\"setOrderCurrentPage($event)\"\r\n >\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.state' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.total' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.updated-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-order=\"item\">\r\n <td class=\"left\">{{ order.code }}</td>\r\n <td class=\"left\">{{ order.state }}</td>\r\n <td class=\"left\">{{ order.totalWithTax | localeCurrency: order.currencyCode }}</td>\r\n <td class=\"left\">{{ order.updatedAt | localeDate: 'medium' }}</td>\r\n <td class=\"right\">\r\n <vdr-table-row-action\r\n iconShape=\"shopping-cart\"\r\n [label]=\"'common.open' | translate\"\r\n [linkTo]=\"['/orders/', order.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n</div>\r\n<div class=\"clr-row\" *ngIf=\"!(isNew$ | async)\">\r\n <div class=\"clr-col-md-6\">\r\n <vdr-customer-history\r\n [customer]=\"entity$ | async\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNoteToCustomer($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-customer-history>\r\n </div>\r\n</div>\r\n","styles":[".last-login{margin-left:6px;color:var(--color-grey-500)}.to-delete{opacity:.5}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":75,"character":15},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":76,"character":16},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ServerConfigService","line":77,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":78,"character":32},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":79,"character":29},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":80,"character":31},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ModalService","line":81,"character":30},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"NotificationService","line":82,"character":37}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getAddressFormControls":[{"__symbolic":"method"}],"setDefaultBillingAddressId":[{"__symbolic":"method"}],"setDefaultShippingAddressId":[{"__symbolic":"method"}],"toggleDeleteAddress":[{"__symbolic":"method"}],"addAddress":[{"__symbolic":"method"}],"setOrderItemsPerPage":[{"__symbolic":"method"}],"setOrderCurrentPage":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"addToGroup":[{"__symbolic":"method"}],"removeFromGroup":[{"__symbolic":"method"}],"addNoteToCustomer":[{"__symbolic":"method"}],"updateNote":[{"__symbolic":"method"}],"deleteNote":[{"__symbolic":"method"}],"setFormValues":[{"__symbolic":"method"}],"fetchOrdersList":[{"__symbolic":"method"}]}},"CustomerGroupDetailDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"vdr-customer-group-detail-dialog","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":14,"character":21},"member":"OnPush"},"template":"<ng-template vdrDialogTitle>\r\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\r\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\r\n</ng-template>\r\n<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['CreateCustomerGroup', 'UpdateCustomerGroup'] | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"CustomerGroup\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"form.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n</form>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"save()\" [disabled]=\"!form.valid\" class=\"btn btn-primary\">\r\n <span *ngIf=\"group.id\">{{ 'customer.update-customer-group' | translate }}</span>\r\n <span *ngIf=\"!group.id\">{{ 'customer.create-customer-group' | translate }}</span>\r\n </button>\r\n</ng-template>\r\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ServerConfigService","line":22,"character":45},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":22,"character":87}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}]}},"CustomerGroupListComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"BaseListComponent","line":40,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":33,"character":1},"arguments":[{"selector":"vdr-customer-group-list","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":37,"character":21},"member":"OnPush"},"template":"<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"emailSearchTerm\"\r\n [formControl]=\"searchTerm\"\r\n [placeholder]=\"'customer.search-by-group-name' | translate\"\r\n class=\"search-input ml3\"\r\n />\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-group-list\"></vdr-action-bar-items>\r\n <button class=\"btn btn-primary\" *vdrIfPermissions=\"'CreateCustomerGroup'\" (click)=\"create()\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer-group' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n<div class=\"group-wrapper\">\r\n <div class=\"group-list\">\r\n <vdr-data-table\r\n [class.expanded]=\"activeGroup$ | async\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n >\r\n <ng-template let-group=\"item\">\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-entity-info [entity]=\"group\"></vdr-entity-info>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <vdr-chip [colorFrom]=\"group.id\">{{ group.name }}</vdr-chip>\r\n </td>\r\n <td class=\"left align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['./', { contents: group.id }]\"\r\n queryParamsHandling=\"preserve\"\r\n >\r\n <clr-icon shape=\"view-list\"></clr-icon>\r\n {{ 'customer.view-group-members' | translate }}\r\n </a>\r\n </td>\r\n <td class=\"right align-middle\" [class.active]=\"group.id === activeGroupId\">\r\n <button class=\"btn btn-link btn-sm\" (click)=\"update(group)\">\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n </td>\r\n <td [class.active]=\"group.id === activeGroupId\" class=\"align-middle\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"delete(group.id)\"\r\n [disabled]=\"!('DeleteCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n </vdr-data-table>\r\n </div>\r\n <ng-template #emptyPlaceholder>\r\n <vdr-empty-placeholder></vdr-empty-placeholder>\r\n </ng-template>\r\n <div class=\"group-members\" [class.expanded]=\"activeGroup$ | async\">\r\n <ng-container *ngIf=\"activeGroup$ | async as activeGroup\">\r\n <div class=\"flex\">\r\n <div class=\"header-title-row\">{{ activeGroup.name }} ({{ membersTotal$ | async }})</div>\r\n <div class=\"flex-spacer\"></div>\r\n <button type=\"button\" class=\"close-button\" (click)=\"closeMembers()\">\r\n <clr-icon shape=\"close\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"controls\">\r\n <vdr-dropdown>\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary btn-sm\"\r\n vdrDropdownTrigger\r\n [disabled]=\"selectedCustomerIds.length === 0\"\r\n >\r\n {{ 'common.with-selected' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"removeFromGroup(activeGroup, selectedCustomerIds)\"\r\n vdrDropdownItem\r\n [disabled]=\"!('UpdateCustomerGroup' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'customer.remove-from-group' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addToGroup(activeGroup)\">\r\n {{ 'customer.add-customers-to-group' | translate: { groupName: activeGroup.name } }}\r\n </button>\r\n </div>\r\n <vdr-customer-group-member-list\r\n [members]=\"members$ | async\"\r\n [route]=\"route\"\r\n [totalItems]=\"membersTotal$ | async\"\r\n [selectedMemberIds]=\"selectedCustomerIds\"\r\n (selectionChange)=\"selectedCustomerIds = $event\"\r\n (fetchParamsChange)=\"fetchGroupMembers$.next($event)\"\r\n ></vdr-customer-group-member-list>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","styles":[".group-wrapper{display:flex;height:calc(100% - 50px)}.group-wrapper .group-list{flex:1;overflow:auto;margin-top:0}.group-wrapper .group-list .active{background-color:var(--clr-global-selection-color)}.group-wrapper .group-list.expanded{width:calc(100% - 40vw)}vdr-data-table ::ng-deep table{margin-top:0}.group-members{height:100%;width:0;opacity:0;visibility:hidden;overflow:auto;transition:width .3s,opacity .2s .3s,visibility 0s .3s}.group-members.expanded{width:40vw;visibility:visible;opacity:1;padding-left:12px}.group-members .close-button{margin:0;background:none;border:none;cursor:pointer}.group-members ::ng-deep table.table{margin-top:0}.group-members ::ng-deep table.table th{top:0}.group-members .controls{display:flex;justify-content:space-between}vdr-empty-placeholder{flex:1}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":61,"character":29},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"NotificationService","line":62,"character":37},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ModalService","line":63,"character":30},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":64,"character":22},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":65,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"closeMembers":[{"__symbolic":"method"}],"addToGroup":[{"__symbolic":"method"}],"removeFromGroup":[{"__symbolic":"method"}]}},"CustomerGroupMemberFetchParams":{"__symbolic":"interface"},"CustomerGroupMemberListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":22,"character":1},"arguments":[{"selector":"vdr-customer-group-member-list","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":26,"character":21},"member":"OnPush"},"template":"<input\r\n type=\"text\"\r\n name=\"searchTerm\"\r\n [formControl]=\"filterTermControl\"\r\n [placeholder]=\"'customer.search-customers-by-email' | translate\"\r\n class=\"search-input\"\r\n/>\r\n\r\n<vdr-data-table\r\n [items]=\"members\"\r\n [itemsPerPage]=\"membersItemsPerPage$ | async\"\r\n [totalItems]=\"totalItems\"\r\n [currentPage]=\"membersCurrentPage$ | async\"\r\n (pageChange)=\"setContentsPageNumber($event)\"\r\n (itemsPerPageChange)=\"setContentsItemsPerPage($event)\"\r\n [allSelected]=\"areAllSelected()\"\r\n [isRowSelectedFn]=\"('UpdateCustomerGroup' | hasPermission) && isMemberSelected\"\r\n (rowSelectChange)=\"toggleSelectMember($event)\"\r\n (allSelectChange)=\"toggleSelectAll()\"\r\n>\r\n <vdr-dt-column [expand]=\"true\">{{ 'customer.name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column [expand]=\"true\">{{ 'customer.email-address' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-customer=\"item\">\r\n <td class=\"left align-middle\">\r\n {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }}\r\n </td>\r\n <td class=\"left align-middle\">{{ customer.emailAddress }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['/customer', 'customers', customer.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n","styles":[""]}]}],"members":{"members":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":5}}]}],"totalItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":5}}]}],"route":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":5}}]}],"selectedMemberIds":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":5}}]}],"selectionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":35,"character":5}}]}],"fetchParamsChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":36,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":44,"character":32},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":44,"character":61}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setContentsPageNumber":[{"__symbolic":"method"}],"setContentsItemsPerPage":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"setParam":[{"__symbolic":"method"}],"areAllSelected":[{"__symbolic":"method"}],"toggleSelectAll":[{"__symbolic":"method"}],"toggleSelectMember":[{"__symbolic":"method"}]}},"CustomerHistoryComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"vdr-customer-history","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":13,"character":21},"member":"OnPush"},"template":"<h4>{{ 'customer.customer-history' | translate }}</h4>\r\n<div class=\"entry-list\">\r\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" *vdrIfPermissions=\"'UpdateCustomer'\">\r\n <div class=\"note-entry\">\r\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\r\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToCustomer()\">\r\n {{ 'order.add-note' | translate }}\r\n </button>\r\n </div>\r\n </vdr-timeline-entry>\r\n <vdr-timeline-entry\r\n *ngFor=\"let entry of history\"\r\n [displayType]=\"getDisplayType(entry)\"\r\n [iconShape]=\"getTimelineIcon(entry)\"\r\n [createdAt]=\"entry.createdAt\"\r\n [name]=\"getName(entry)\"\r\n [featured]=\"isFeatured(entry)\"\r\n >\r\n <ng-container [ngSwitch]=\"entry.type\">\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REGISTERED\">\r\n <div class=\"title\">\r\n {{ 'customer.history-customer-registered' | translate }}\r\n </div>\r\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\r\n {{ 'customer.history-using-native-auth-strategy' | translate }}\r\n </ng-container>\r\n <ng-template #namedStrategy>\r\n {{\r\n 'customer.history-using-external-auth-strategy'\r\n | translate: { strategy: entry.data.strategy }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_VERIFIED\">\r\n <div class=\"title\">\r\n {{ 'customer.history-customer-verified' | translate }}\r\n </div>\r\n <ng-container *ngIf=\"entry.data.strategy === 'native'; else namedStrategy\">\r\n {{ 'customer.history-using-native-auth-strategy' | translate }}\r\n </ng-container>\r\n <ng-template #namedStrategy>\r\n {{\r\n 'customer.history-using-external-auth-strategy'\r\n | translate: { strategy: entry.data.strategy }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_DETAIL_UPDATED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-detail-updated' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDED_TO_GROUP\">\r\n {{\r\n 'customer.history-customer-added-to-group'\r\n | translate: { groupName: entry.data.groupName }\r\n }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_REMOVED_FROM_GROUP\">\r\n {{\r\n 'customer.history-customer-removed-from-group'\r\n | translate: { groupName: entry.data.groupName }\r\n }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_CREATED\">\r\n {{ 'customer.history-customer-address-created' | translate }}\r\n <div class=\"flex\">\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_UPDATED\">\r\n {{ 'customer.history-customer-address-updated' | translate }}\r\n <div class=\"flex\">\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n <vdr-history-entry-detail>\r\n <vdr-object-tree [value]=\"entry.data.input\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_ADDRESS_DELETED\">\r\n {{ 'customer.history-customer-address-deleted' | translate }}\r\n <div class=\"address-string\">{{ entry.data.address }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_UPDATED\">\r\n {{ 'customer.history-customer-password-updated' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_REQUESTED\">\r\n {{ 'customer.history-customer-password-reset-requested' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_PASSWORD_RESET_VERIFIED\">\r\n {{ 'customer.history-customer-password-reset-verified' | translate }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_REQUESTED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-email-update-requested' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\r\n entry.data.oldEmailAddress\r\n }}</vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\r\n entry.data.newEmailAddress\r\n }}</vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_EMAIL_UPDATE_VERIFIED\">\r\n <div class=\"flex\">\r\n {{ 'customer.history-customer-email-update-verified' | translate }}\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'customer.old-email-address' | translate\">{{\r\n entry.data.oldEmailAddress\r\n }}</vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'customer.new-email-address' | translate\">{{\r\n entry.data.newEmailAddress\r\n }}</vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.CUSTOMER_NOTE\">\r\n <div class=\"flex\">\r\n <div class=\"note-text\">\r\n {{ entry.data.note }}\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"updateNote.emit(entry)\"\r\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n class=\"button\"\r\n vdrDropdownItem\r\n (click)=\"deleteNote.emit(entry)\"\r\n [disabled]=\"!('UpdateCustomer' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </vdr-timeline-entry>\r\n <vdr-timeline-entry [isLast]=\"true\"></vdr-timeline-entry>\r\n</div>\r\n","styles":[".entry-list{margin-top:24px;margin-left:24px;margin-right:12px}.note-entry{display:flex;align-items:center}.note-entry .note{flex:1}.note-entry button{margin:0}textarea.note{flex:1;height:36px;border-radius:3px;margin-right:6px}.note-text{color:var(--color-text-100);white-space:pre-wrap}.address-string{font-size:smaller;color:var(--color-text-200)}\n"]}]}],"members":{"customer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":5}}]}],"history":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":5}}]}],"addNote":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":5}}]}],"updateNote":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":19,"character":5}}]}],"deleteNote":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":5}}]}],"getDisplayType":[{"__symbolic":"method"}],"getTimelineIcon":[{"__symbolic":"method"}],"isFeatured":[{"__symbolic":"method"}],"getName":[{"__symbolic":"method"}],"addNoteToCustomer":[{"__symbolic":"method"}]}},"CustomerListComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"BaseListComponent","line":22,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"vdr-customer-list","template":"<vdr-action-bar>\r\n <vdr-ab-left>\r\n <input\r\n type=\"text\"\r\n name=\"emailSearchTerm\"\r\n [formControl]=\"searchTerm\"\r\n [placeholder]=\"'customer.search-customers-by-email-last-name-postal-code' | translate\"\r\n class=\"search-input ml3\"\r\n />\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"customer-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreateCustomer'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'customer.create-new-customer' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column [expand]=\"true\">{{ 'customer.name' | translate }}</vdr-dt-column>\r\n <vdr-dt-column [expand]=\"true\">{{ 'customer.email-address' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'customer.customer-type' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-customer=\"item\">\r\n <td class=\"left align-middle\">\r\n {{ customer.title }} {{ customer.firstName }} {{ customer.lastName }}\r\n </td>\r\n <td class=\"left align-middle\">{{ customer.emailAddress }}</td>\r\n <td class=\"left align-middle\">\r\n <vdr-customer-status-label [customer]=\"customer\"></vdr-customer-status-label>\r\n </td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', customer.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td>\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteCustomer(customer)\"\r\n [disabled]=\"!('DeleteCustomer' | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n","styles":[".search-input{margin-top:6px;min-width:300px}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":27,"character":29},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":28,"character":16},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":29,"character":15},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"ModalService","line":30,"character":30},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"NotificationService","line":31,"character":37}]}],"ngOnInit":[{"__symbolic":"method"}],"deleteCustomer":[{"__symbolic":"method"}]}},"CustomerStatusLabelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"vdr-customer-status-label","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":8,"character":21},"member":"OnPush"},"template":"<vdr-chip *ngIf=\"customer.user?.id\">\r\n <ng-container *ngIf=\"customer.user?.verified\">\r\n <clr-icon shape=\"check-circle\" class=\"verified-user-icon\"></clr-icon>\r\n {{ 'customer.verified' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"!customer.user?.verified\">\r\n <clr-icon shape=\"check-circle\" class=\"registered-user-icon\"></clr-icon>\r\n {{ 'customer.registered' | translate }}\r\n </ng-container>\r\n</vdr-chip>\r\n<vdr-chip *ngIf=\"!customer.user?.id\">{{ 'customer.guest' | translate }}</vdr-chip>\r\n","styles":[".registered-user-icon{color:var(--color-grey-300)}.verified-user-icon{color:var(--color-success-500)}\n"]}]}],"members":{"customer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":5}}]}]}},"SelectCustomerGroupDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"vdr-select-customer-group-dialog","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":10,"character":21},"member":"OnPush"},"template":"<ng-template vdrDialogTitle>\r\n {{ 'customer.add-customer-to-group' | translate }}\r\n</ng-template>\r\n\r\n<ng-select\r\n [items]=\"groups$ | async\"\r\n appendTo=\"body\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n bindValue=\"id\"\r\n [(ngModel)]=\"selectedGroupIds\"\r\n [clearable]=\"true\"\r\n [searchable]=\"false\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> × </span>\r\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-chip [colorFrom]=\"item.id\">{{ item.name }}</vdr-chip>\r\n </ng-template>\r\n</ng-select>\r\n\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"add()\" [disabled]=\"!selectedGroupIds.length\" class=\"btn btn-primary\">\r\n {{ 'customer.add-customer-to-groups-with-count' | translate: {count: selectedGroupIds.length} }}\r\n </button>\r\n</ng-template>\r\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":17,"character":37}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}]}},"CustomerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"SharedModule","line":18,"character":14},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":18,"character":28},"member":"forChild"},"arguments":[{"__symbolic":"reference","name":"customerRoutes"}]}],"declarations":[{"__symbolic":"reference","name":"CustomerListComponent"},{"__symbolic":"reference","name":"CustomerDetailComponent"},{"__symbolic":"reference","name":"CustomerStatusLabelComponent"},{"__symbolic":"reference","name":"AddressCardComponent"},{"__symbolic":"reference","name":"CustomerGroupListComponent"},{"__symbolic":"reference","name":"CustomerGroupDetailDialogComponent"},{"__symbolic":"reference","name":"AddCustomerToGroupDialogComponent"},{"__symbolic":"reference","name":"CustomerGroupMemberListComponent"},{"__symbolic":"reference","name":"SelectCustomerGroupDialogComponent"},{"__symbolic":"reference","name":"CustomerHistoryComponent"},{"__symbolic":"reference","name":"AddressDetailDialogComponent"}],"exports":[{"__symbolic":"reference","name":"AddressCardComponent"}]}]}],"members":{}},"customerRoutes":[{"path":"customers","component":{"__symbolic":"reference","name":"CustomerListComponent"},"pathMatch":"","data":{"breadcrumb":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@biesbjerg/ngx-translate-extract-marker","name":"marker","line":20,"character":24},"arguments":["breadcrumb.customers"]}}},{"path":"customers/:id","component":{"__symbolic":"reference","name":"CustomerDetailComponent"},"resolve":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"createResolveData","line":26,"character":17},"arguments":[{"__symbolic":"reference","name":"CustomerResolver"}]},"canDeactivate":[{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"CanDeactivateDetailGuard","line":27,"character":24}],"data":{"breadcrumb":{"__symbolic":"reference","name":"customerBreadcrumb"}}},{"path":"groups","component":{"__symbolic":"reference","name":"CustomerGroupListComponent"},"data":{"breadcrumb":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@biesbjerg/ngx-translate-extract-marker","name":"marker","line":36,"character":24},"arguments":["breadcrumb.customer-groups"]}}}],"customerBreadcrumb":{"__symbolic":"function","parameters":["data","params"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"detailBreadcrumb","line":42,"character":11},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":46,"character":17,"module":"./customer.routes"}]}},"CustomerResolver":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"BaseEntityResolver","line":9,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":10,"character":24},{"__symbolic":"reference","module":"@vendure/admin-ui/core","name":"DataService","line":10,"character":45}]}]},"statics":{"ɵprov":{}}}},"origins":{"AddCustomerToGroupDialogComponent":"./components/add-customer-to-group-dialog/add-customer-to-group-dialog.component","AddressCardComponent":"./components/address-card/address-card.component","AddressDetailDialogComponent":"./components/address-detail-dialog/address-detail-dialog.component","CustomerDetailComponent":"./components/customer-detail/customer-detail.component","CustomerGroupDetailDialogComponent":"./components/customer-group-detail-dialog/customer-group-detail-dialog.component","CustomerGroupListComponent":"./components/customer-group-list/customer-group-list.component","CustomerGroupMemberFetchParams":"./components/customer-group-member-list/customer-group-member-list.component","CustomerGroupMemberListComponent":"./components/customer-group-member-list/customer-group-member-list.component","CustomerHistoryComponent":"./components/customer-history/customer-history.component","CustomerListComponent":"./components/customer-list/customer-list.component","CustomerStatusLabelComponent":"./components/customer-status-label/customer-status-label.component","SelectCustomerGroupDialogComponent":"./components/select-customer-group-dialog/select-customer-group-dialog.component","CustomerModule":"./customer.module","customerRoutes":"./customer.routes","customerBreadcrumb":"./customer.routes","CustomerResolver":"./providers/routing/customer-resolver"},"importAs":"@vendure/admin-ui/customer"}
|
|
@@ -97,7 +97,13 @@ export class OptionValueInputComponent {
|
|
|
97
97
|
this.addOptionValue();
|
|
98
98
|
}
|
|
99
99
|
addOptionValue() {
|
|
100
|
-
const options = this.parseInputIntoOptions(this.input)
|
|
100
|
+
const options = this.parseInputIntoOptions(this.input).filter(option => {
|
|
101
|
+
var _a;
|
|
102
|
+
// do not add an option with the same name
|
|
103
|
+
// as an existing option
|
|
104
|
+
const existing = (_a = this.options) !== null && _a !== void 0 ? _a : this.formValue;
|
|
105
|
+
return !(existing === null || existing === void 0 ? void 0 : existing.find(o => (o === null || o === void 0 ? void 0 : o.name) === option.name));
|
|
106
|
+
});
|
|
101
107
|
if (!this.formValue && this.options) {
|
|
102
108
|
for (const option of options) {
|
|
103
109
|
this.add.emit(option);
|
|
@@ -145,4 +151,4 @@ OptionValueInputComponent.propDecorators = {
|
|
|
145
151
|
edit: [{ type: Output }],
|
|
146
152
|
disabled: [{ type: Input }]
|
|
147
153
|
};
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLXZhbHVlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9vcHRpb24tdmFsdWUtaW5wdXQvb3B0aW9uLXZhbHVlLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFJTixTQUFTLEVBQ1QsWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQWE7SUFDdkQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO0lBQ3hELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQWVGLE1BQU0sT0FBTyx5QkFBeUI7SUFxQmxDLFlBQW9CLGNBQWlDO1FBQWpDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQXBCNUMsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUlkLFFBQUcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3BDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUM5RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGlCQUFZLEdBQUcsQ0FBQyxD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QUFFLENBQUM7YUFDbEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNyQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7SUFDTCxDQUFDOzs7WUF2SUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLDg1Q0FBa0Q7Z0JBRWxELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPO2dCQUNoRCxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQzs7YUFDakQ7OztZQXBDRyxpQkFBaUI7Ozt3QkFzQ2hCLEtBQUs7dUJBQ0wsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7eUJBQ3RDLFlBQVksU0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO3NCQUNsRCxLQUFLO2tCQUNMLE1BQU07cUJBQ04sTUFBTTttQkFDTixNQUFNO3VCQUNOLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFByb3ZpZGVyLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi91bmlxdWUnO1xuXG5leHBvcnQgY29uc3QgT1BUSU9OX1ZBTFVFX0lOUFVUX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcHRpb25WYWx1ZUlucHV0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZSxcbn07XG5cbmludGVyZmFjZSBPcHRpb24ge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBsb2NrZWQ6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndmRyLW9wdGlvbi12YWx1ZS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL29wdGlvbi12YWx1ZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vb3B0aW9uLXZhbHVlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIHByb3ZpZGVyczogW09QVElPTl9WQUxVRV9JTlBVVF9WQUxVRV9BQ0NFU1NPUl0sXG59KVxuZXhwb3J0IGNsYXNzIE9wdGlvblZhbHVlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KCkgZ3JvdXBOYW1lID0gJyc7XG4gICAgQFZpZXdDaGlsZCgndGV4dEFyZWEnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0ZXh0QXJlYTogRWxlbWVudFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkcmVuKCdlZGl0TmFtZUlucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG5hbWVJbnB1dHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgICBASW5wdXQoKSBvcHRpb25zOiBPcHRpb25bXTtcbiAgICBAT3V0cHV0KCkgYWRkID0gbmV3IEV2ZW50RW1pdHRlcjxPcHRpb24+KCk7XG4gICAgQE91dHB1dCgpIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IG9wdGlvbjogT3B0aW9uIH0+KCk7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBpbnB1dCA9ICcnO1xuICAgIGlzRm9jdXNzZWQgPSBmYWxzZTtcbiAgICBsYXN0U2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBmb3JtVmFsdWU6IE9wdGlvbltdO1xuICAgIGVkaXRpbmdJbmRleCA9IC0xO1xuICAgIG9uQ2hhbmdlRm46ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICAgIG9uVG91Y2hGbjogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgICBnZXQgb3B0aW9uVmFsdWVzKCk6IE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVZhbHVlID8/IHRoaXMub3B0aW9ucyA/PyBbXTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaEZuID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtVmFsdWUgPSBvYmogfHwgW107XG4gICAgfVxuXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIHRoaXMudGV4dEFyZWEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIGVkaXROYW1lKGluZGV4OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gdGhpcy5vcHRpb25WYWx1ZXNbaW5kZXhdO1xuICAgICAgICBpZiAoIW9wdGlvblZhbHVlLmxvY2tlZCAmJiAhb3B0aW9uVmFsdWUuaWQpIHtcbiAgICAgICAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLm5hbWVJbnB1dHMuZ2V0KGluZGV4KT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gaW5wdXQ/LmZvY3VzKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlT3B0aW9uKGluZGV4OiBudW1iZXIsIGV2ZW50OiBJbnB1dEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gdGhpcy5vcHRpb25WYWx1ZXNbaW5kZXhdO1xuICAgICAgICBjb25zdCBuZXdOYW1lID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgaWYgKG9wdGlvblZhbHVlKSB7XG4gICAgICAgICAgICBpZiAobmV3TmFtZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlLm5hbWUgPSBuZXdOYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdC5lbWl0KHsgaW5kZXgsIG9wdGlvbjogb3B0aW9uVmFsdWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdJbmRleCA9IC0xO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlT3B0aW9uKG9wdGlvbjogT3B0aW9uKSB7XG4gICAgICAgIGlmICghb3B0aW9uLmxvY2tlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtVmFsdWUgPSB0aGlzLmZvcm1WYWx1ZT8uZmlsdGVyKG8gPT4gby5uYW1lICE9PSBvcHRpb24ubmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuZm9ybVZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmUuZW1pdChvcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICcsJzpcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFkZE9wdGlvblZhbHVlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGFzdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTGFzdE9wdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZUJsdXIoKSB7XG4gICAgICAgIHRoaXMuaXNGb2N1c3NlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFkZE9wdGlvblZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRPcHRpb25WYWx1ZSgpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMucGFyc2VJbnB1dEludG9PcHRpb25zKHRoaXMuaW5wdXQpO1xuICAgICAgICBpZiAoIXRoaXMuZm9ybVZhbHVlICYmIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkLmVtaXQob3B0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVZhbHVlID0gdW5pcXVlKFsuLi50aGlzLmZvcm1WYWx1ZSwgLi4ub3B0aW9uc10pO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuZm9ybVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlucHV0ID0gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUlucHV0SW50b09wdGlvbnMoaW5wdXQ6IHN0cmluZyk6IE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIGlucHV0XG4gICAgICAgICAgICAuc3BsaXQoL1ssXFxuXS8pXG4gICAgICAgICAgICAubWFwKHMgPT4gcy50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHMgPT4gcyAhPT0gJycpXG4gICAgICAgICAgICAubWFwKHMgPT4gKHsgbmFtZTogcywgbG9ja2VkOiBmYWxzZSB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVMYXN0T3B0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25WYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvblZhbHVlc1t0aGlzLm9wdGlvblZhbHVlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlT3B0aW9uKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLXZhbHVlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9vcHRpb24tdmFsdWUtaW5wdXQvb3B0aW9uLXZhbHVlLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFJTixTQUFTLEVBQ1QsWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQWE7SUFDdkQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO0lBQ3hELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQWVGLE1BQU0sT0FBTyx5QkFBeUI7SUFxQmxDLFlBQW9CLGNBQWlDO1FBQWpDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQXBCNUMsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUlkLFFBQUcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3BDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUM5RCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGlCQUFZLEdBQUcsQ0FBQyxD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QUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO3NCQUNsRCxLQUFLO2tCQUNMLE1BQU07cUJBQ04sTUFBTTttQkFDTixNQUFNO3VCQUNOLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBQcm92aWRlcixcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3Q2hpbGRyZW4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi91bmlxdWUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9QVElPTl9WQUxVRV9JTlBVVF9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE9wdGlvblZhbHVlSW5wdXRDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbn07XHJcblxyXG5pbnRlcmZhY2UgT3B0aW9uIHtcclxuICAgIGlkPzogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgbG9ja2VkOiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLW9wdGlvbi12YWx1ZS1pbnB1dCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vb3B0aW9uLXZhbHVlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL29wdGlvbi12YWx1ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gICAgcHJvdmlkZXJzOiBbT1BUSU9OX1ZBTFVFX0lOUFVUX1ZBTFVFX0FDQ0VTU09SXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9wdGlvblZhbHVlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgICBASW5wdXQoKSBncm91cE5hbWUgPSAnJztcclxuICAgIEBWaWV3Q2hpbGQoJ3RleHRBcmVhJywgeyBzdGF0aWM6IHRydWUgfSkgdGV4dEFyZWE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XHJcbiAgICBAVmlld0NoaWxkcmVuKCdlZGl0TmFtZUlucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG5hbWVJbnB1dHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICAgIEBJbnB1dCgpIG9wdGlvbnM6IE9wdGlvbltdO1xyXG4gICAgQE91dHB1dCgpIGFkZCA9IG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uPigpO1xyXG4gICAgQE91dHB1dCgpIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uPigpO1xyXG4gICAgQE91dHB1dCgpIGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgb3B0aW9uOiBPcHRpb24gfT4oKTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBpbnB1dCA9ICcnO1xyXG4gICAgaXNGb2N1c3NlZCA9IGZhbHNlO1xyXG4gICAgbGFzdFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICBmb3JtVmFsdWU6IE9wdGlvbltdO1xyXG4gICAgZWRpdGluZ0luZGV4ID0gLTE7XHJcbiAgICBvbkNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcclxuICAgIG9uVG91Y2hGbjogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4gICAgZ2V0IG9wdGlvblZhbHVlcygpOiBPcHRpb25bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVZhbHVlID8/IHRoaXMub3B0aW9ucyA/PyBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoRm4gPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1WYWx1ZSA9IG9iaiB8fCBbXTtcclxuICAgIH1cclxuXHJcbiAgICBmb2N1cygpIHtcclxuICAgICAgICB0aGlzLnRleHRBcmVhLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0TmFtZShpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gdGhpcy5vcHRpb25WYWx1ZXNbaW5kZXhdO1xyXG4gICAgICAgIGlmICghb3B0aW9uVmFsdWUubG9ja2VkICYmICFvcHRpb25WYWx1ZS5pZCkge1xyXG4gICAgICAgICAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMubmFtZUlucHV0cy5nZXQoaW5kZXgpPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGlucHV0Py5mb2N1cygpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlT3B0aW9uKGluZGV4OiBudW1iZXIsIGV2ZW50OiBJbnB1dEV2ZW50KSB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSB0aGlzLm9wdGlvblZhbHVlc1tpbmRleF07XHJcbiAgICAgICAgY29uc3QgbmV3TmFtZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICAgICAgaWYgKG9wdGlvblZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmIChuZXdOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZS5uYW1lID0gbmV3TmFtZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWRpdC5lbWl0KHsgaW5kZXgsIG9wdGlvbjogb3B0aW9uVmFsdWUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5lZGl0aW5nSW5kZXggPSAtMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlT3B0aW9uKG9wdGlvbjogT3B0aW9uKSB7XHJcbiAgICAgICAgaWYgKCFvcHRpb24ubG9ja2VkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtVmFsdWUgPSB0aGlzLmZvcm1WYWx1ZT8uZmlsdGVyKG8gPT4gby5uYW1lICE9PSBvcHRpb24ubmFtZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy5mb3JtVmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmUuZW1pdChvcHRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJywnOlxyXG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZE9wdGlvblZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXN0U2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUxhc3RPcHRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlucHV0ID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQmx1cigpIHtcclxuICAgICAgICB0aGlzLmlzRm9jdXNzZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvblZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRPcHRpb25WYWx1ZSgpIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wYXJzZUlucHV0SW50b09wdGlvbnModGhpcy5pbnB1dCkuZmlsdGVyKG9wdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgYW4gb3B0aW9uIHdpdGggdGhlIHNhbWUgbmFtZVxyXG4gICAgICAgICAgICAvLyBhcyBhbiBleGlzdGluZyBvcHRpb25cclxuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLm9wdGlvbnMgPz8gdGhpcy5mb3JtVmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiAhZXhpc3Rpbmc/LmZpbmQobyA9PiBvPy5uYW1lID09PSBvcHRpb24ubmFtZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1WYWx1ZSAmJiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGQuZW1pdChvcHRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtVmFsdWUgPSB1bmlxdWUoWy4uLnRoaXMuZm9ybVZhbHVlLCAuLi5vcHRpb25zXSk7XHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLmZvcm1WYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW5wdXQgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHBhcnNlSW5wdXRJbnRvT3B0aW9ucyhpbnB1dDogc3RyaW5nKTogT3B0aW9uW10ge1xyXG4gICAgICAgIHJldHVybiBpbnB1dFxyXG4gICAgICAgICAgICAuc3BsaXQoL1ssXFxuXS8pXHJcbiAgICAgICAgICAgIC5tYXAocyA9PiBzLnRyaW0oKSlcclxuICAgICAgICAgICAgLmZpbHRlcihzID0+IHMgIT09ICcnKVxyXG4gICAgICAgICAgICAubWFwKHMgPT4gKHsgbmFtZTogcywgbG9ja2VkOiBmYWxzZSB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVMYXN0T3B0aW9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvblZhbHVlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25WYWx1ZXNbdGhpcy5vcHRpb25WYWx1ZXMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlT3B0aW9uKG9wdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|