@vendure/admin-ui 2.1.2 → 2.1.4
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/catalog/catalog.module.d.ts +1 -0
- package/core/common/generated-types.d.ts +2 -1
- package/core/common/version.d.ts +1 -1
- package/core/extension/add-nav-menu-item.d.ts +5 -1
- package/core/providers/nav-builder/nav-builder-types.d.ts +27 -1
- package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
- package/customer/customer.module.d.ts +1 -2
- package/esm2022/catalog/catalog.module.mjs +6 -1
- package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +2 -2
- package/esm2022/core/common/generated-types.mjs +1 -1
- package/esm2022/core/common/utilities/configurable-operation-utils.mjs +10 -2
- package/esm2022/core/common/version.mjs +2 -2
- package/esm2022/core/data/utils/add-custom-fields.mjs +5 -1
- package/esm2022/core/extension/add-nav-menu-item.mjs +6 -2
- package/esm2022/core/providers/nav-builder/nav-builder-types.mjs +1 -1
- package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +2 -2
- package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +1 -1
- package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +3 -3
- package/esm2022/core/shared/components/modal-dialog/modal-dialog.component.mjs +2 -2
- package/esm2022/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +11 -11
- package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +2 -2
- package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +2 -2
- package/esm2022/customer/customer.module.mjs +6 -3
- package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +9 -9
- package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +3 -3
- package/esm2022/marketing/marketing.module.mjs +6 -2
- package/esm2022/order/order.module.mjs +6 -2
- package/esm2022/settings/components/channel-list/channel-list-bulk-actions.mjs +11 -4
- package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +9 -9
- package/esm2022/settings/settings.module.mjs +6 -2
- package/esm2022/system/system.module.mjs +1 -1
- package/fesm2022/vendure-admin-ui-catalog.mjs +6 -1
- package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-core.mjs +38 -22
- package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-customer.mjs +5 -2
- package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-marketing.mjs +15 -11
- package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-order.mjs +5 -1
- package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-settings.mjs +21 -10
- package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-system.mjs.map +1 -1
- package/marketing/marketing.module.d.ts +1 -1
- package/order/order.module.d.ts +1 -1
- package/package.json +18 -18
- package/settings/components/stock-location-list/stock-location-list.component.d.ts +1 -1
- package/settings/settings.module.d.ts +1 -1
- package/static/styles/theme/dark.scss +2 -1
- package/static/theme.min.css +1 -1
|
@@ -15,13 +15,13 @@ import * as i5 from '@ngx-translate/core';
|
|
|
15
15
|
import * as i3$1 from '@angular/router';
|
|
16
16
|
import { ROUTES, RouterModule } from '@angular/router';
|
|
17
17
|
|
|
18
|
-
const GET_PROMOTION_DETAIL = gql `
|
|
19
|
-
query GetPromotionDetail($id: ID!) {
|
|
20
|
-
promotion(id: $id) {
|
|
21
|
-
...Promotion
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
${PROMOTION_FRAGMENT}
|
|
18
|
+
const GET_PROMOTION_DETAIL = gql `
|
|
19
|
+
query GetPromotionDetail($id: ID!) {
|
|
20
|
+
promotion(id: $id) {
|
|
21
|
+
...Promotion
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
${PROMOTION_FRAGMENT}
|
|
25
25
|
`;
|
|
26
26
|
class PromotionDetailComponent extends TypedBaseDetailComponent {
|
|
27
27
|
constructor(changeDetector, dataService, formBuilder, notificationService) {
|
|
@@ -202,7 +202,7 @@ class PromotionDetailComponent extends TypedBaseDetailComponent {
|
|
|
202
202
|
});
|
|
203
203
|
entity.actions.forEach(o => this.addOperation('actions', o));
|
|
204
204
|
if (this.customFields.length) {
|
|
205
|
-
this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);
|
|
205
|
+
this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity, currentTranslation);
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
/**
|
|
@@ -431,11 +431,11 @@ class PromotionListComponent extends TypedBaseListComponent {
|
|
|
431
431
|
};
|
|
432
432
|
}
|
|
433
433
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: PromotionListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
434
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: PromotionListComponent, selector: "vdr-promotion-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"contentLanguage$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"
|
|
434
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: PromotionListComponent, selector: "vdr-promotion-list", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"contentLanguage$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"promotion-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreatePromotion'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'marketing.create-new-promotion' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-data-table-2\r\n id=\"promotion-list\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"promotion-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n />\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'marketing.search-by-name-or-coupon-code' | translate\"\r\n />\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-promotion=\"item\">{{ promotion.id }}</ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\r\n <ng-template let-promotion=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', promotion.id]\"\r\n ><span> {{ promotion.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.enabled' | translate\" id=\"enabled\">\r\n <ng-template let-promotion=\"item\">\r\n <vdr-chip *ngIf=\"promotion.enabled\" colorType=\"success\">{{\r\n 'common.enabled' | translate\r\n }}</vdr-chip>\r\n <vdr-chip *ngIf=\"!promotion.enabled\" colorType=\"warning\">{{\r\n 'common.disabled' | translate\r\n }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.coupon-code' | translate\" id=\"coupon-code\" [sort]=\"sorts.get('couponCode')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.couponCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.starts-at' | translate\" id=\"starts-at\" [sort]=\"sorts.get('startsAt')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.startsAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.ends-at' | translate\" id=\"ends-at\" [sort]=\"sorts.get('endsAt')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.endsAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'marketing.per-customer-limit' | translate\" id=\"per-customer-limit\"\r\n [sort]=\"sorts.get('perCustomerUsageLimit')\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.perCustomerUsageLimit }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'marketing.per-customer-limit' | translate\" id=\"per-customer-limit\"\r\n [sort]=\"sorts.get('usageLimit')\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.usageLimit }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n", styles: [".search-form{padding:0}.search-input{margin:6px 8px 0 0;min-width:200px}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: i1.LanguageSelectorComponent, selector: "vdr-language-selector", inputs: ["currentLanguageCode", "availableLanguageCodes", "disabled"], outputs: ["languageCodeChange"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "component", type: i1.BulkActionMenuComponent, selector: "vdr-bulk-action-menu", inputs: ["locationId", "selectionManager", "hostComponent"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.DataTable2SearchComponent, selector: "vdr-dt2-search", inputs: ["searchTermControl", "searchTermPlaceholder"] }, { kind: "component", type: i1.DataTableCustomFieldColumnComponent, selector: "vdr-dt2-custom-field-column", inputs: ["customField", "sorts"], exportAs: ["row"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
435
435
|
}
|
|
436
436
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: PromotionListComponent, decorators: [{
|
|
437
437
|
type: Component,
|
|
438
|
-
args: [{ selector: 'vdr-promotion-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"contentLanguage$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"
|
|
438
|
+
args: [{ selector: 'vdr-promotion-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"contentLanguage$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"promotion-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreatePromotion'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'marketing.create-new-promotion' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-data-table-2\r\n id=\"promotion-list\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"promotion-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n />\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'marketing.search-by-name-or-coupon-code' | translate\"\r\n />\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-promotion=\"item\">{{ promotion.id }}</ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\r\n <ng-template let-promotion=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', promotion.id]\"\r\n ><span> {{ promotion.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.enabled' | translate\" id=\"enabled\">\r\n <ng-template let-promotion=\"item\">\r\n <vdr-chip *ngIf=\"promotion.enabled\" colorType=\"success\">{{\r\n 'common.enabled' | translate\r\n }}</vdr-chip>\r\n <vdr-chip *ngIf=\"!promotion.enabled\" colorType=\"warning\">{{\r\n 'common.disabled' | translate\r\n }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.coupon-code' | translate\" id=\"coupon-code\" [sort]=\"sorts.get('couponCode')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.couponCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.starts-at' | translate\" id=\"starts-at\" [sort]=\"sorts.get('startsAt')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.startsAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.ends-at' | translate\" id=\"ends-at\" [sort]=\"sorts.get('endsAt')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.endsAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'marketing.per-customer-limit' | translate\" id=\"per-customer-limit\"\r\n [sort]=\"sorts.get('perCustomerUsageLimit')\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.perCustomerUsageLimit }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'marketing.per-customer-limit' | translate\" id=\"per-customer-limit\"\r\n [sort]=\"sorts.get('usageLimit')\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.usageLimit }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n", styles: [".search-form{padding:0}.search-input{margin:6px 8px 0 0;min-width:200px}\n"] }]
|
|
439
439
|
}], ctorParameters: function () { return []; } });
|
|
440
440
|
|
|
441
441
|
const createRoutes = (pageService) => [
|
|
@@ -469,8 +469,11 @@ function promotionBreadcrumb(data, params) {
|
|
|
469
469
|
}
|
|
470
470
|
|
|
471
471
|
class MarketingModule {
|
|
472
|
+
static { this.hasRegisteredTabsAndBulkActions = false; }
|
|
472
473
|
constructor(bulkActionRegistryService, pageService) {
|
|
473
|
-
|
|
474
|
+
if (MarketingModule.hasRegisteredTabsAndBulkActions) {
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
474
477
|
bulkActionRegistryService.registerBulkAction(assignPromotionsToChannelBulkAction);
|
|
475
478
|
bulkActionRegistryService.registerBulkAction(removePromotionsFromChannelBulkAction);
|
|
476
479
|
bulkActionRegistryService.registerBulkAction(deletePromotionsBulkAction);
|
|
@@ -498,6 +501,7 @@ class MarketingModule {
|
|
|
498
501
|
],
|
|
499
502
|
}),
|
|
500
503
|
});
|
|
504
|
+
MarketingModule.hasRegisteredTabsAndBulkActions = true;
|
|
501
505
|
}
|
|
502
506
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: MarketingModule, deps: [{ token: i1.BulkActionRegistryService }, { token: i1.PageService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
503
507
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.2", ngImport: i0, type: MarketingModule, declarations: [PromotionListComponent, PromotionDetailComponent], imports: [SharedModule, i3$1.RouterModule, SharedModule, AsyncPipe, SharedModule] }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendure-admin-ui-marketing.mjs","sources":["../../src/lib/marketing/src/components/promotion-detail/promotion-detail.component.ts","../../src/lib/marketing/src/components/promotion-detail/promotion-detail.component.html","../../src/lib/marketing/src/components/promotion-list/promotion-list-bulk-actions.ts","../../src/lib/marketing/src/components/promotion-list/promotion-list.component.ts","../../src/lib/marketing/src/components/promotion-list/promotion-list.component.html","../../src/lib/marketing/src/marketing.routes.ts","../../src/lib/marketing/src/marketing.module.ts","../../src/lib/marketing/src/public_api.ts","../../src/lib/marketing/src/vendure-admin-ui-marketing.ts"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, UntypedFormArray, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n ConfigurableOperation,\r\n ConfigurableOperationDefinition,\r\n ConfigurableOperationInput,\r\n CreatePromotionInput,\r\n createUpdatedTranslatable,\r\n DataService,\r\n encodeConfigArgValue,\r\n findTranslation,\r\n getConfigArgValue,\r\n getCustomFieldsDefaults,\r\n getDefaultConfigArgValue,\r\n GetPromotionDetailDocument,\r\n LanguageCode,\r\n NotificationService,\r\n PROMOTION_FRAGMENT,\r\n PromotionFragment,\r\n TypedBaseDetailComponent,\r\n UpdatePromotionInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { combineLatest } from 'rxjs';\r\nimport { mergeMap, take } from 'rxjs/operators';\r\n\r\nexport const GET_PROMOTION_DETAIL = gql`\r\n query GetPromotionDetail($id: ID!) {\r\n promotion(id: $id) {\r\n ...Promotion\r\n }\r\n }\r\n ${PROMOTION_FRAGMENT}\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-promotion-detail',\r\n templateUrl: './promotion-detail.component.html',\r\n styleUrls: ['./promotion-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PromotionDetailComponent\r\n extends TypedBaseDetailComponent<typeof GetPromotionDetailDocument, 'promotion'>\r\n implements OnInit, OnDestroy\r\n{\r\n customFields = this.getCustomFieldConfig('Promotion');\r\n detailForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n description: '',\r\n enabled: true,\r\n couponCode: null as string | null,\r\n perCustomerUsageLimit: null as number | null,\r\n usageLimit: null as number | null,\r\n startsAt: null,\r\n endsAt: null,\r\n conditions: this.formBuilder.array([]),\r\n actions: this.formBuilder.array([]),\r\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\r\n });\r\n conditions: ConfigurableOperation[] = [];\r\n actions: ConfigurableOperation[] = [];\r\n\r\n private allConditions: ConfigurableOperationDefinition[] = [];\r\n private allActions: ConfigurableOperationDefinition[] = [];\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private formBuilder: FormBuilder,\r\n private notificationService: NotificationService,\r\n ) {\r\n super();\r\n this.customFields = this.getCustomFieldConfig('Promotion');\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.dataService.promotion.getPromotionActionsAndConditions().single$.subscribe(data => {\r\n this.allActions = data.promotionActions;\r\n this.allConditions = data.promotionConditions;\r\n this.changeDetector.markForCheck();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n getAvailableConditions(): ConfigurableOperationDefinition[] {\r\n return this.allConditions.filter(o => !this.conditions.find(c => c.code === o.code));\r\n }\r\n\r\n getConditionDefinition(condition: ConfigurableOperation): ConfigurableOperationDefinition | undefined {\r\n return this.allConditions.find(c => c.code === condition.code);\r\n }\r\n\r\n getAvailableActions(): ConfigurableOperationDefinition[] {\r\n return this.allActions.filter(o => !this.actions.find(a => a.code === o.code));\r\n }\r\n\r\n getActionDefinition(action: ConfigurableOperation): ConfigurableOperationDefinition | undefined {\r\n return this.allActions.find(c => c.code === action.code);\r\n }\r\n\r\n saveButtonEnabled(): boolean {\r\n return !!(\r\n this.detailForm.dirty &&\r\n this.detailForm.valid &&\r\n (this.conditions.length !== 0 || this.detailForm.value.couponCode) &&\r\n this.actions.length !== 0\r\n );\r\n }\r\n\r\n addCondition(condition: ConfigurableOperation) {\r\n this.addOperation('conditions', condition);\r\n this.detailForm.markAsDirty();\r\n }\r\n\r\n addAction(action: ConfigurableOperation) {\r\n this.addOperation('actions', action);\r\n this.detailForm.markAsDirty();\r\n }\r\n\r\n removeCondition(condition: ConfigurableOperation) {\r\n this.removeOperation('conditions', condition);\r\n this.detailForm.markAsDirty();\r\n }\r\n\r\n removeAction(action: ConfigurableOperation) {\r\n this.removeOperation('actions', action);\r\n this.detailForm.markAsDirty();\r\n }\r\n\r\n formArrayOf(key: 'conditions' | 'actions'): UntypedFormArray {\r\n return this.detailForm.get(key) as UntypedFormArray;\r\n }\r\n\r\n create() {\r\n if (!this.detailForm.dirty) {\r\n return;\r\n }\r\n\r\n const input = this.getUpdatedPromotion(\r\n {\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n startsAt: '',\r\n endsAt: '',\r\n name: '',\r\n description: '',\r\n couponCode: null,\r\n perCustomerUsageLimit: null,\r\n usageLimit: null,\r\n enabled: false,\r\n conditions: [],\r\n actions: [],\r\n translations: [],\r\n },\r\n this.detailForm,\r\n this.languageCode,\r\n ) as CreatePromotionInput;\r\n this.dataService.promotion.createPromotion(input).subscribe(\r\n ({ createPromotion }) => {\r\n switch (createPromotion.__typename) {\r\n case 'Promotion':\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Promotion',\r\n });\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.router.navigate(['../', createPromotion.id], { relativeTo: this.route });\r\n break;\r\n case 'MissingConditionsError':\r\n this.notificationService.error(createPromotion.message);\r\n break;\r\n }\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'Promotion',\r\n });\r\n },\r\n );\r\n }\r\n\r\n save() {\r\n if (!this.detailForm.dirty) {\r\n return;\r\n }\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([paymentMethod, languageCode]) => {\r\n const input = this.getUpdatedPromotion(\r\n paymentMethod,\r\n this.detailForm,\r\n languageCode,\r\n ) as UpdatePromotionInput;\r\n return this.dataService.promotion.updatePromotion(input);\r\n }),\r\n )\r\n .subscribe(\r\n data => {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Promotion',\r\n });\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Promotion',\r\n });\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Given a PaymentMethod and the value of the detailForm, this method creates an updated copy of it which\r\n * can then be persisted to the API.\r\n */\r\n private getUpdatedPromotion(\r\n promotion: PromotionFragment,\r\n formGroup: UntypedFormGroup,\r\n languageCode: LanguageCode,\r\n ): UpdatePromotionInput | CreatePromotionInput {\r\n const formValue = formGroup.value;\r\n const input = createUpdatedTranslatable({\r\n translatable: promotion,\r\n updatedFields: formValue,\r\n customFieldConfig: this.customFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: promotion.name || '',\r\n description: promotion.description || '',\r\n },\r\n });\r\n\r\n return {\r\n ...input,\r\n conditions: this.mapOperationsToInputs(this.conditions, formValue.conditions),\r\n actions: this.mapOperationsToInputs(this.actions, formValue.actions),\r\n };\r\n }\r\n\r\n /**\r\n * Update the form values when the entity changes.\r\n */\r\n protected setFormValues(entity: PromotionFragment, languageCode: LanguageCode): void {\r\n const currentTranslation = findTranslation(entity, languageCode);\r\n this.detailForm.patchValue({\r\n name: currentTranslation?.name,\r\n description: currentTranslation?.description,\r\n enabled: entity.enabled,\r\n couponCode: entity.couponCode,\r\n perCustomerUsageLimit: entity.perCustomerUsageLimit,\r\n usageLimit: entity.usageLimit,\r\n startsAt: entity.startsAt,\r\n endsAt: entity.endsAt,\r\n });\r\n entity.conditions.forEach(o => {\r\n this.addOperation('conditions', o);\r\n });\r\n entity.actions.forEach(o => this.addOperation('actions', o));\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get('customFields'), entity);\r\n }\r\n }\r\n\r\n /**\r\n * Maps an array of conditions or actions to the input format expected by the GraphQL API.\r\n */\r\n private mapOperationsToInputs(\r\n operations: ConfigurableOperation[],\r\n formValueOperations: any,\r\n ): ConfigurableOperationInput[] {\r\n return operations.map((o, i) => ({\r\n code: o.code,\r\n arguments: Object.values<any>(formValueOperations[i].args).map((value, j) => ({\r\n name: o.args[j].name,\r\n value: encodeConfigArgValue(value),\r\n })),\r\n }));\r\n }\r\n\r\n /**\r\n * Adds a new condition or action to the promotion.\r\n */\r\n private addOperation(key: 'conditions' | 'actions', operation: ConfigurableOperation) {\r\n const operationsArray = this.formArrayOf(key);\r\n const collection = key === 'conditions' ? this.conditions : this.actions;\r\n const index = operationsArray.value.findIndex(o => o.code === operation.code);\r\n if (index === -1) {\r\n const argsHash = operation.args.reduce(\r\n (output, arg) => ({\r\n ...output,\r\n [arg.name]:\r\n getConfigArgValue(arg.value) ?? this.getDefaultArgValue(key, operation, arg.name),\r\n }),\r\n {},\r\n );\r\n operationsArray.push(\r\n this.formBuilder.control({\r\n code: operation.code,\r\n args: argsHash,\r\n }),\r\n );\r\n collection.push({\r\n code: operation.code,\r\n args: operation.args.map(a => ({ name: a.name, value: getConfigArgValue(a.value) })),\r\n });\r\n }\r\n }\r\n\r\n private getDefaultArgValue(\r\n key: 'conditions' | 'actions',\r\n operation: ConfigurableOperation,\r\n argName: string,\r\n ) {\r\n const def =\r\n key === 'conditions'\r\n ? this.allConditions.find(c => c.code === operation.code)\r\n : this.allActions.find(a => a.code === operation.code);\r\n if (def) {\r\n const argDef = def.args.find(a => a.name === argName);\r\n if (argDef) {\r\n return getDefaultConfigArgValue(argDef);\r\n }\r\n }\r\n throw new Error(`Could not determine default value for \"argName\"`);\r\n }\r\n\r\n /**\r\n * Removes a condition or action from the promotion.\r\n */\r\n private removeOperation(key: 'conditions' | 'actions', operation: ConfigurableOperation) {\r\n const operationsArray = this.formArrayOf(key);\r\n const collection = key === 'conditions' ? this.conditions : this.actions;\r\n const index = operationsArray.value.findIndex(o => o.code === operation.code);\r\n if (index !== -1) {\r\n operationsArray.removeAt(index);\r\n collection.splice(index, 1);\r\n }\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"promotion-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]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"'UpdatePromotion'\"\r\n [disabled]=\"!saveButtonEnabled()\"\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</vdr-page-block>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *vdrIfPermissions=\"'UpdatePromotion'\">\r\n <clr-toggle-wrapper>\r\n <input type=\"checkbox\" clrToggle name=\"enabled\" formControlName=\"enabled\" />\r\n <label>{{ 'common.enabled' | translate }}</label>\r\n </clr-toggle-wrapper>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n />\r\n </vdr-form-field>\r\n <vdr-rich-text-editor\r\n class=\"form-grid-span\"\r\n formControlName=\"description\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n [label]=\"'common.description' | translate\"\r\n ></vdr-rich-text-editor>\r\n <vdr-form-field [label]=\"'marketing.starts-at' | translate\" for=\"startsAt\">\r\n <vdr-datetime-picker formControlName=\"startsAt\"></vdr-datetime-picker>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'marketing.ends-at' | translate\" for=\"endsAt\">\r\n <vdr-datetime-picker formControlName=\"endsAt\"></vdr-datetime-picker>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'marketing.coupon-code' | translate\" for=\"couponCode\">\r\n <input\r\n id=\"couponCode\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n type=\"text\"\r\n formControlName=\"couponCode\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'marketing.per-customer-limit' | translate\"\r\n [tooltip]=\"'marketing.per-customer-limit-tooltip' | translate\"\r\n for=\"perCustomerUsageLimit\"\r\n >\r\n <input\r\n id=\"perCustomerUsageLimit\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n type=\"number\"\r\n min=\"1\"\r\n max=\"999\"\r\n formControlName=\"perCustomerUsageLimit\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'marketing.usage-limit' | translate\"\r\n [tooltip]=\"'marketing.usage-limit-tooltip' | translate\"\r\n for=\"usageLimit\"\r\n >\r\n <input\r\n id=\"usageLimit\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n type=\"number\"\r\n min=\"1\"\r\n max=\"9999999\"\r\n formControlName=\"usageLimit\"\r\n />\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n [title]=\"'common.custom-fields' | translate\"\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Promotion\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n\r\n <vdr-custom-detail-component-host\r\n locationId=\"promotion-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-card [title]=\"'marketing.conditions' | translate\" formArrayName=\"conditions\">\r\n <div *ngFor=\"let condition of conditions; index as i\">\r\n <vdr-configurable-input\r\n (remove)=\"removeCondition($event)\"\r\n [position]=\"i\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n [operation]=\"condition\"\r\n [operationDefinition]=\"getConditionDefinition(condition)\"\r\n [formControlName]=\"i\"\r\n ></vdr-configurable-input>\r\n </div>\r\n <div>\r\n <vdr-dropdown *vdrIfPermissions=\"'UpdatePromotion'\">\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'marketing.add-condition' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let condition of getAvailableConditions()\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n class=\"item-wrap\"\r\n (click)=\"addCondition(condition)\"\r\n >\r\n {{ condition.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'marketing.actions' | translate\" formArrayName=\"actions\">\r\n <div *ngFor=\"let action of actions; index as i\">\r\n <vdr-configurable-input\r\n (remove)=\"removeAction($event)\"\r\n [position]=\"i\"\r\n [operation]=\"action\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n [operationDefinition]=\"getActionDefinition(action)\"\r\n [formControlName]=\"i\"\r\n ></vdr-configurable-input>\r\n </div>\r\n <div>\r\n <vdr-dropdown *vdrIfPermissions=\"'UpdatePromotion'\">\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'marketing.add-action' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let action of getAvailableActions()\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n class=\"item-wrap\"\r\n (click)=\"addAction(action)\"\r\n >\r\n {{ action.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n","import {\r\n AssignPromotionsToChannelDocument,\r\n createBulkAssignToChannelAction,\r\n createBulkDeleteAction,\r\n createBulkRemoveFromChannelAction,\r\n GetPromotionListQuery,\r\n ItemOf,\r\n Permission,\r\n RemovePromotionsFromChannelDocument,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { map } from 'rxjs/operators';\r\n\r\nconst ASSIGN_PROMOTIONS_TO_CHANNEL = gql`\r\n mutation AssignPromotionsToChannel($input: AssignPromotionsToChannelInput!) {\r\n assignPromotionsToChannel(input: $input) {\r\n id\r\n name\r\n }\r\n }\r\n`;\r\n\r\nconst REMOVE_PROMOTIONS_FROM_CHANNEL = gql`\r\n mutation RemovePromotionsFromChannel($input: RemovePromotionsFromChannelInput!) {\r\n removePromotionsFromChannel(input: $input) {\r\n id\r\n name\r\n }\r\n }\r\n`;\r\n\r\nexport const deletePromotionsBulkAction = createBulkDeleteAction<ItemOf<GetPromotionListQuery, 'promotions'>>(\r\n {\r\n location: 'promotion-list',\r\n requiresPermission: Permission.DeletePromotion,\r\n getItemName: item => item.name,\r\n bulkDelete: (dataService, ids) =>\r\n dataService.promotion.deletePromotions(ids).pipe(map(res => res.deletePromotions)),\r\n },\r\n);\r\n\r\nexport const assignPromotionsToChannelBulkAction = createBulkAssignToChannelAction<\r\n ItemOf<GetPromotionListQuery, 'promotions'>\r\n>({\r\n location: 'promotion-list',\r\n requiresPermission: Permission.UpdatePromotion,\r\n getItemName: item => item.name,\r\n bulkAssignToChannel: (dataService, promotionIds, channelId) =>\r\n dataService\r\n .mutate(AssignPromotionsToChannelDocument, {\r\n input: {\r\n channelId,\r\n promotionIds,\r\n },\r\n })\r\n .pipe(map(res => res.assignPromotionsToChannel)),\r\n});\r\n\r\nexport const removePromotionsFromChannelBulkAction = createBulkRemoveFromChannelAction<\r\n ItemOf<GetPromotionListQuery, 'promotions'>\r\n>({\r\n location: 'promotion-list',\r\n requiresPermission: Permission.DeleteCatalog,\r\n getItemName: item => item.name,\r\n bulkRemoveFromChannel: (dataService, promotionIds, channelId) =>\r\n dataService\r\n .mutate(RemovePromotionsFromChannelDocument, {\r\n input: {\r\n channelId,\r\n promotionIds,\r\n },\r\n })\r\n .pipe(map(res => res.removePromotionsFromChannel)),\r\n});\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n GetPromotionListDocument,\r\n LogicalOperator,\r\n PROMOTION_FRAGMENT,\r\n PromotionListOptions,\r\n PromotionSortParameter,\r\n TypedBaseListComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\n\r\nexport const GET_PROMOTION_LIST = gql`\r\n query GetPromotionList($options: PromotionListOptions) {\r\n promotions(options: $options) {\r\n items {\r\n ...Promotion\r\n }\r\n totalItems\r\n }\r\n }\r\n ${PROMOTION_FRAGMENT}\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-promotion-list',\r\n templateUrl: './promotion-list.component.html',\r\n styleUrls: ['./promotion-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PromotionListComponent\r\n extends TypedBaseListComponent<typeof GetPromotionListDocument, 'promotions'>\r\n implements OnInit\r\n{\r\n readonly customFields = this.getCustomFieldConfig('Promotion');\r\n readonly filters = this.createFilterCollection()\r\n .addIdFilter()\r\n .addDateFilters()\r\n .addFilters([\r\n {\r\n name: 'startsAt',\r\n type: { kind: 'dateRange' },\r\n label: _('marketing.starts-at'),\r\n filterField: 'startsAt',\r\n },\r\n {\r\n name: 'endsAt',\r\n type: { kind: 'dateRange' },\r\n label: _('marketing.ends-at'),\r\n filterField: 'endsAt',\r\n },\r\n {\r\n name: 'enabled',\r\n type: { kind: 'boolean' },\r\n label: _('common.enabled'),\r\n filterField: 'enabled',\r\n },\r\n {\r\n name: 'name',\r\n type: { kind: 'text' },\r\n label: _('common.name'),\r\n filterField: 'name',\r\n },\r\n {\r\n name: 'couponCode',\r\n type: { kind: 'text' },\r\n label: _('marketing.coupon-code'),\r\n filterField: 'couponCode',\r\n },\r\n {\r\n name: 'desc',\r\n type: { kind: 'text' },\r\n label: _('common.description'),\r\n filterField: 'description',\r\n },\r\n {\r\n name: 'perCustomerUsageLimit',\r\n type: { kind: 'number' },\r\n label: _('marketing.per-customer-limit'),\r\n filterField: 'perCustomerUsageLimit',\r\n },\r\n {\r\n name: 'usageLimit',\r\n type: { kind: 'number' },\r\n label: _('marketing.usage-limit'),\r\n filterField: 'usageLimit',\r\n },\r\n ])\r\n .addCustomFieldFilters(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n readonly sorts = this.createSortCollection()\r\n .defaultSort('createdAt', 'DESC')\r\n .addSorts([\r\n { name: 'createdAt' },\r\n { name: 'updatedAt' },\r\n { name: 'startsAt' },\r\n { name: 'endsAt' },\r\n { name: 'name' },\r\n { name: 'couponCode' },\r\n { name: 'perCustomerUsageLimit' },\r\n { name: 'usageLimit' },\r\n ])\r\n .addCustomFieldSorts(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n constructor() {\r\n super();\r\n super.configure({\r\n document: GetPromotionListDocument,\r\n getItems: data => data.promotions,\r\n setVariables: (skip, take) => this.createQueryOptions(skip, take, this.searchTermControl.value),\r\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\r\n });\r\n }\r\n\r\n private createQueryOptions(\r\n skip: number,\r\n take: number,\r\n searchTerm: string | null,\r\n ): { options: PromotionListOptions } {\r\n const filter = this.filters.createFilterInput();\r\n const sort = this.sorts.createSortInput();\r\n let filterOperator = LogicalOperator.AND;\r\n if (searchTerm) {\r\n filter.couponCode = { contains: searchTerm };\r\n filter.name = { contains: searchTerm };\r\n filterOperator = LogicalOperator.OR;\r\n }\r\n\r\n return {\r\n options: {\r\n skip,\r\n take,\r\n filter,\r\n filterOperator,\r\n sort,\r\n },\r\n };\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"contentLanguage$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\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=\"'CreatePromotion'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'marketing.create-new-promotion' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-data-table-2\r\n id=\"promotion-list\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"promotion-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n />\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'marketing.search-by-name-or-coupon-code' | translate\"\r\n />\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-promotion=\"item\">{{ promotion.id }}</ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\r\n <ng-template let-promotion=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', promotion.id]\"\r\n ><span> {{ promotion.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.enabled' | translate\" id=\"enabled\">\r\n <ng-template let-promotion=\"item\">\r\n <vdr-chip *ngIf=\"promotion.enabled\" colorType=\"success\">{{\r\n 'common.enabled' | translate\r\n }}</vdr-chip>\r\n <vdr-chip *ngIf=\"!promotion.enabled\" colorType=\"warning\">{{\r\n 'common.disabled' | translate\r\n }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.coupon-code' | translate\" id=\"coupon-code\" [sort]=\"sorts.get('couponCode')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.couponCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.starts-at' | translate\" id=\"starts-at\" [sort]=\"sorts.get('startsAt')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.startsAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.ends-at' | translate\" id=\"ends-at\" [sort]=\"sorts.get('endsAt')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.endsAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'marketing.per-customer-limit' | translate\" id=\"per-customer-limit\"\r\n [sort]=\"sorts.get('perCustomerUsageLimit')\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.perCustomerUsageLimit }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'marketing.per-customer-limit' | translate\" id=\"per-customer-limit\"\r\n [sort]=\"sorts.get('usageLimit')\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.usageLimit }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { detailBreadcrumb, PageComponent, PageService, PromotionFragment } from '@vendure/admin-ui/core';\r\n\r\nexport const createRoutes = (pageService: PageService): Route[] => [\r\n {\r\n path: 'promotions',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'promotion-list',\r\n breadcrumb: _('breadcrumb.promotions'),\r\n },\r\n children: pageService.getPageTabRoutes('promotion-list'),\r\n },\r\n {\r\n path: 'promotions/:id',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'promotion-detail',\r\n breadcrumb: { label: _('breadcrumb.promotions'), link: ['../', 'promotions'] },\r\n },\r\n children: pageService.getPageTabRoutes('promotion-detail'),\r\n },\r\n];\r\n\r\nexport function promotionBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<PromotionFragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.promotions',\r\n getName: promotion => promotion.name,\r\n route: 'promotions',\r\n });\r\n}\r\n","import { AsyncPipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BulkActionRegistryService,\n detailComponentWithResolver,\n GetPromotionDetailDocument,\n PageService,\n SharedModule,\n} from '@vendure/admin-ui/core';\n\nimport { PromotionDetailComponent } from './components/promotion-detail/promotion-detail.component';\nimport {\n assignPromotionsToChannelBulkAction,\n deletePromotionsBulkAction,\n removePromotionsFromChannelBulkAction,\n} from './components/promotion-list/promotion-list-bulk-actions';\nimport { PromotionListComponent } from './components/promotion-list/promotion-list.component';\nimport { createRoutes } from './marketing.routes';\n\n@NgModule({\n imports: [SharedModule, RouterModule.forChild([]), SharedModule, AsyncPipe, SharedModule],\n providers: [\n {\n provide: ROUTES,\n useFactory: (pageService: PageService) => createRoutes(pageService),\n multi: true,\n deps: [PageService],\n },\n ],\n declarations: [PromotionListComponent, PromotionDetailComponent],\n})\nexport class MarketingModule {\n constructor(private bulkActionRegistryService: BulkActionRegistryService, pageService: PageService) {\n bulkActionRegistryService.registerBulkAction(assignPromotionsToChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(removePromotionsFromChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(deletePromotionsBulkAction);\n\n pageService.registerPageTab({\n priority: 0,\n location: 'promotion-list',\n tab: _('breadcrumb.promotions'),\n route: '',\n component: PromotionListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'promotion-detail',\n tab: _('marketing.promotion'),\n route: '',\n component: detailComponentWithResolver({\n component: PromotionDetailComponent,\n query: GetPromotionDetailDocument,\n entityKey: 'promotion',\n getBreadcrumbs: entity => [\n {\n label: entity ? entity.name : _('marketing.create-new-promotion'),\n link: [entity?.id],\n },\n ],\n }),\n });\n }\n}\n","// This file was generated by the build-public-api.ts script\nexport * from './components/promotion-detail/promotion-detail.component';\nexport * from './components/promotion-list/promotion-list-bulk-actions';\nexport * from './components/promotion-list/promotion-list.component';\nexport * from './marketing.module';\nexport * from './marketing.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_","i1","i2","i3","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vendure-admin-ui-marketing.mjs","sources":["../../src/lib/marketing/src/components/promotion-detail/promotion-detail.component.ts","../../src/lib/marketing/src/components/promotion-detail/promotion-detail.component.html","../../src/lib/marketing/src/components/promotion-list/promotion-list-bulk-actions.ts","../../src/lib/marketing/src/components/promotion-list/promotion-list.component.ts","../../src/lib/marketing/src/components/promotion-list/promotion-list.component.html","../../src/lib/marketing/src/marketing.routes.ts","../../src/lib/marketing/src/marketing.module.ts","../../src/lib/marketing/src/public_api.ts","../../src/lib/marketing/src/vendure-admin-ui-marketing.ts"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, UntypedFormArray, UntypedFormGroup, Validators } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n ConfigurableOperation,\n ConfigurableOperationDefinition,\n ConfigurableOperationInput,\n CreatePromotionInput,\n createUpdatedTranslatable,\n DataService,\n encodeConfigArgValue,\n findTranslation,\n getConfigArgValue,\n getCustomFieldsDefaults,\n getDefaultConfigArgValue,\n GetPromotionDetailDocument,\n LanguageCode,\n NotificationService,\n PROMOTION_FRAGMENT,\n PromotionFragment,\n TypedBaseDetailComponent,\n UpdatePromotionInput,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { combineLatest } from 'rxjs';\nimport { mergeMap, take } from 'rxjs/operators';\n\nexport const GET_PROMOTION_DETAIL = gql`\n query GetPromotionDetail($id: ID!) {\n promotion(id: $id) {\n ...Promotion\n }\n }\n ${PROMOTION_FRAGMENT}\n`;\n\n@Component({\n selector: 'vdr-promotion-detail',\n templateUrl: './promotion-detail.component.html',\n styleUrls: ['./promotion-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PromotionDetailComponent\n extends TypedBaseDetailComponent<typeof GetPromotionDetailDocument, 'promotion'>\n implements OnInit, OnDestroy\n{\n customFields = this.getCustomFieldConfig('Promotion');\n detailForm = this.formBuilder.group({\n name: ['', Validators.required],\n description: '',\n enabled: true,\n couponCode: null as string | null,\n perCustomerUsageLimit: null as number | null,\n usageLimit: null as number | null,\n startsAt: null,\n endsAt: null,\n conditions: this.formBuilder.array([]),\n actions: this.formBuilder.array([]),\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n conditions: ConfigurableOperation[] = [];\n actions: ConfigurableOperation[] = [];\n\n private allConditions: ConfigurableOperationDefinition[] = [];\n private allActions: ConfigurableOperationDefinition[] = [];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n protected dataService: DataService,\n private formBuilder: FormBuilder,\n private notificationService: NotificationService,\n ) {\n super();\n this.customFields = this.getCustomFieldConfig('Promotion');\n }\n\n ngOnInit() {\n this.init();\n this.dataService.promotion.getPromotionActionsAndConditions().single$.subscribe(data => {\n this.allActions = data.promotionActions;\n this.allConditions = data.promotionConditions;\n this.changeDetector.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n getAvailableConditions(): ConfigurableOperationDefinition[] {\n return this.allConditions.filter(o => !this.conditions.find(c => c.code === o.code));\n }\n\n getConditionDefinition(condition: ConfigurableOperation): ConfigurableOperationDefinition | undefined {\n return this.allConditions.find(c => c.code === condition.code);\n }\n\n getAvailableActions(): ConfigurableOperationDefinition[] {\n return this.allActions.filter(o => !this.actions.find(a => a.code === o.code));\n }\n\n getActionDefinition(action: ConfigurableOperation): ConfigurableOperationDefinition | undefined {\n return this.allActions.find(c => c.code === action.code);\n }\n\n saveButtonEnabled(): boolean {\n return !!(\n this.detailForm.dirty &&\n this.detailForm.valid &&\n (this.conditions.length !== 0 || this.detailForm.value.couponCode) &&\n this.actions.length !== 0\n );\n }\n\n addCondition(condition: ConfigurableOperation) {\n this.addOperation('conditions', condition);\n this.detailForm.markAsDirty();\n }\n\n addAction(action: ConfigurableOperation) {\n this.addOperation('actions', action);\n this.detailForm.markAsDirty();\n }\n\n removeCondition(condition: ConfigurableOperation) {\n this.removeOperation('conditions', condition);\n this.detailForm.markAsDirty();\n }\n\n removeAction(action: ConfigurableOperation) {\n this.removeOperation('actions', action);\n this.detailForm.markAsDirty();\n }\n\n formArrayOf(key: 'conditions' | 'actions'): UntypedFormArray {\n return this.detailForm.get(key) as UntypedFormArray;\n }\n\n create() {\n if (!this.detailForm.dirty) {\n return;\n }\n\n const input = this.getUpdatedPromotion(\n {\n id: '',\n createdAt: '',\n updatedAt: '',\n startsAt: '',\n endsAt: '',\n name: '',\n description: '',\n couponCode: null,\n perCustomerUsageLimit: null,\n usageLimit: null,\n enabled: false,\n conditions: [],\n actions: [],\n translations: [],\n },\n this.detailForm,\n this.languageCode,\n ) as CreatePromotionInput;\n this.dataService.promotion.createPromotion(input).subscribe(\n ({ createPromotion }) => {\n switch (createPromotion.__typename) {\n case 'Promotion':\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'Promotion',\n });\n this.detailForm.markAsPristine();\n this.changeDetector.markForCheck();\n this.router.navigate(['../', createPromotion.id], { relativeTo: this.route });\n break;\n case 'MissingConditionsError':\n this.notificationService.error(createPromotion.message);\n break;\n }\n },\n err => {\n this.notificationService.error(_('common.notify-create-error'), {\n entity: 'Promotion',\n });\n },\n );\n }\n\n save() {\n if (!this.detailForm.dirty) {\n return;\n }\n combineLatest(this.entity$, this.languageCode$)\n .pipe(\n take(1),\n mergeMap(([paymentMethod, languageCode]) => {\n const input = this.getUpdatedPromotion(\n paymentMethod,\n this.detailForm,\n languageCode,\n ) as UpdatePromotionInput;\n return this.dataService.promotion.updatePromotion(input);\n }),\n )\n .subscribe(\n data => {\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'Promotion',\n });\n this.detailForm.markAsPristine();\n this.changeDetector.markForCheck();\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'Promotion',\n });\n },\n );\n }\n\n /**\n * Given a PaymentMethod and the value of the detailForm, this method creates an updated copy of it which\n * can then be persisted to the API.\n */\n private getUpdatedPromotion(\n promotion: PromotionFragment,\n formGroup: UntypedFormGroup,\n languageCode: LanguageCode,\n ): UpdatePromotionInput | CreatePromotionInput {\n const formValue = formGroup.value;\n const input = createUpdatedTranslatable({\n translatable: promotion,\n updatedFields: formValue,\n customFieldConfig: this.customFields,\n languageCode,\n defaultTranslation: {\n languageCode,\n name: promotion.name || '',\n description: promotion.description || '',\n },\n });\n\n return {\n ...input,\n conditions: this.mapOperationsToInputs(this.conditions, formValue.conditions),\n actions: this.mapOperationsToInputs(this.actions, formValue.actions),\n };\n }\n\n /**\n * Update the form values when the entity changes.\n */\n protected setFormValues(entity: PromotionFragment, languageCode: LanguageCode): void {\n const currentTranslation = findTranslation(entity, languageCode);\n this.detailForm.patchValue({\n name: currentTranslation?.name,\n description: currentTranslation?.description,\n enabled: entity.enabled,\n couponCode: entity.couponCode,\n perCustomerUsageLimit: entity.perCustomerUsageLimit,\n usageLimit: entity.usageLimit,\n startsAt: entity.startsAt,\n endsAt: entity.endsAt,\n });\n entity.conditions.forEach(o => {\n this.addOperation('conditions', o);\n });\n entity.actions.forEach(o => this.addOperation('actions', o));\n if (this.customFields.length) {\n this.setCustomFieldFormValues(\n this.customFields,\n this.detailForm.get('customFields'),\n entity,\n currentTranslation,\n );\n }\n }\n\n /**\n * Maps an array of conditions or actions to the input format expected by the GraphQL API.\n */\n private mapOperationsToInputs(\n operations: ConfigurableOperation[],\n formValueOperations: any,\n ): ConfigurableOperationInput[] {\n return operations.map((o, i) => ({\n code: o.code,\n arguments: Object.values<any>(formValueOperations[i].args).map((value, j) => ({\n name: o.args[j].name,\n value: encodeConfigArgValue(value),\n })),\n }));\n }\n\n /**\n * Adds a new condition or action to the promotion.\n */\n private addOperation(key: 'conditions' | 'actions', operation: ConfigurableOperation) {\n const operationsArray = this.formArrayOf(key);\n const collection = key === 'conditions' ? this.conditions : this.actions;\n const index = operationsArray.value.findIndex(o => o.code === operation.code);\n if (index === -1) {\n const argsHash = operation.args.reduce(\n (output, arg) => ({\n ...output,\n [arg.name]:\n getConfigArgValue(arg.value) ?? this.getDefaultArgValue(key, operation, arg.name),\n }),\n {},\n );\n operationsArray.push(\n this.formBuilder.control({\n code: operation.code,\n args: argsHash,\n }),\n );\n collection.push({\n code: operation.code,\n args: operation.args.map(a => ({ name: a.name, value: getConfigArgValue(a.value) })),\n });\n }\n }\n\n private getDefaultArgValue(\n key: 'conditions' | 'actions',\n operation: ConfigurableOperation,\n argName: string,\n ) {\n const def =\n key === 'conditions'\n ? this.allConditions.find(c => c.code === operation.code)\n : this.allActions.find(a => a.code === operation.code);\n if (def) {\n const argDef = def.args.find(a => a.name === argName);\n if (argDef) {\n return getDefaultConfigArgValue(argDef);\n }\n }\n throw new Error(`Could not determine default value for \"argName\"`);\n }\n\n /**\n * Removes a condition or action from the promotion.\n */\n private removeOperation(key: 'conditions' | 'actions', operation: ConfigurableOperation) {\n const operationsArray = this.formArrayOf(key);\n const collection = key === 'conditions' ? this.conditions : this.actions;\n const index = operationsArray.value.findIndex(o => o.code === operation.code);\n if (index !== -1) {\n operationsArray.removeAt(index);\n collection.splice(index, 1);\n }\n }\n}\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"promotion-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]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"'UpdatePromotion'\"\r\n [disabled]=\"!saveButtonEnabled()\"\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</vdr-page-block>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *vdrIfPermissions=\"'UpdatePromotion'\">\r\n <clr-toggle-wrapper>\r\n <input type=\"checkbox\" clrToggle name=\"enabled\" formControlName=\"enabled\" />\r\n <label>{{ 'common.enabled' | translate }}</label>\r\n </clr-toggle-wrapper>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n />\r\n </vdr-form-field>\r\n <vdr-rich-text-editor\r\n class=\"form-grid-span\"\r\n formControlName=\"description\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n [label]=\"'common.description' | translate\"\r\n ></vdr-rich-text-editor>\r\n <vdr-form-field [label]=\"'marketing.starts-at' | translate\" for=\"startsAt\">\r\n <vdr-datetime-picker formControlName=\"startsAt\"></vdr-datetime-picker>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'marketing.ends-at' | translate\" for=\"endsAt\">\r\n <vdr-datetime-picker formControlName=\"endsAt\"></vdr-datetime-picker>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'marketing.coupon-code' | translate\" for=\"couponCode\">\r\n <input\r\n id=\"couponCode\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n type=\"text\"\r\n formControlName=\"couponCode\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'marketing.per-customer-limit' | translate\"\r\n [tooltip]=\"'marketing.per-customer-limit-tooltip' | translate\"\r\n for=\"perCustomerUsageLimit\"\r\n >\r\n <input\r\n id=\"perCustomerUsageLimit\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n type=\"number\"\r\n min=\"1\"\r\n max=\"999\"\r\n formControlName=\"perCustomerUsageLimit\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'marketing.usage-limit' | translate\"\r\n [tooltip]=\"'marketing.usage-limit-tooltip' | translate\"\r\n for=\"usageLimit\"\r\n >\r\n <input\r\n id=\"usageLimit\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n type=\"number\"\r\n min=\"1\"\r\n max=\"9999999\"\r\n formControlName=\"usageLimit\"\r\n />\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n [title]=\"'common.custom-fields' | translate\"\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Promotion\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n\r\n <vdr-custom-detail-component-host\r\n locationId=\"promotion-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-card [title]=\"'marketing.conditions' | translate\" formArrayName=\"conditions\">\r\n <div *ngFor=\"let condition of conditions; index as i\">\r\n <vdr-configurable-input\r\n (remove)=\"removeCondition($event)\"\r\n [position]=\"i\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n [operation]=\"condition\"\r\n [operationDefinition]=\"getConditionDefinition(condition)\"\r\n [formControlName]=\"i\"\r\n ></vdr-configurable-input>\r\n </div>\r\n <div>\r\n <vdr-dropdown *vdrIfPermissions=\"'UpdatePromotion'\">\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'marketing.add-condition' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let condition of getAvailableConditions()\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n class=\"item-wrap\"\r\n (click)=\"addCondition(condition)\"\r\n >\r\n {{ condition.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'marketing.actions' | translate\" formArrayName=\"actions\">\r\n <div *ngFor=\"let action of actions; index as i\">\r\n <vdr-configurable-input\r\n (remove)=\"removeAction($event)\"\r\n [position]=\"i\"\r\n [operation]=\"action\"\r\n [readonly]=\"!('UpdatePromotion' | hasPermission)\"\r\n [operationDefinition]=\"getActionDefinition(action)\"\r\n [formControlName]=\"i\"\r\n ></vdr-configurable-input>\r\n </div>\r\n <div>\r\n <vdr-dropdown *vdrIfPermissions=\"'UpdatePromotion'\">\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'marketing.add-action' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let action of getAvailableActions()\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n class=\"item-wrap\"\r\n (click)=\"addAction(action)\"\r\n >\r\n {{ action.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n","import {\r\n AssignPromotionsToChannelDocument,\r\n createBulkAssignToChannelAction,\r\n createBulkDeleteAction,\r\n createBulkRemoveFromChannelAction,\r\n GetPromotionListQuery,\r\n ItemOf,\r\n Permission,\r\n RemovePromotionsFromChannelDocument,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { map } from 'rxjs/operators';\r\n\r\nconst ASSIGN_PROMOTIONS_TO_CHANNEL = gql`\r\n mutation AssignPromotionsToChannel($input: AssignPromotionsToChannelInput!) {\r\n assignPromotionsToChannel(input: $input) {\r\n id\r\n name\r\n }\r\n }\r\n`;\r\n\r\nconst REMOVE_PROMOTIONS_FROM_CHANNEL = gql`\r\n mutation RemovePromotionsFromChannel($input: RemovePromotionsFromChannelInput!) {\r\n removePromotionsFromChannel(input: $input) {\r\n id\r\n name\r\n }\r\n }\r\n`;\r\n\r\nexport const deletePromotionsBulkAction = createBulkDeleteAction<ItemOf<GetPromotionListQuery, 'promotions'>>(\r\n {\r\n location: 'promotion-list',\r\n requiresPermission: Permission.DeletePromotion,\r\n getItemName: item => item.name,\r\n bulkDelete: (dataService, ids) =>\r\n dataService.promotion.deletePromotions(ids).pipe(map(res => res.deletePromotions)),\r\n },\r\n);\r\n\r\nexport const assignPromotionsToChannelBulkAction = createBulkAssignToChannelAction<\r\n ItemOf<GetPromotionListQuery, 'promotions'>\r\n>({\r\n location: 'promotion-list',\r\n requiresPermission: Permission.UpdatePromotion,\r\n getItemName: item => item.name,\r\n bulkAssignToChannel: (dataService, promotionIds, channelId) =>\r\n dataService\r\n .mutate(AssignPromotionsToChannelDocument, {\r\n input: {\r\n channelId,\r\n promotionIds,\r\n },\r\n })\r\n .pipe(map(res => res.assignPromotionsToChannel)),\r\n});\r\n\r\nexport const removePromotionsFromChannelBulkAction = createBulkRemoveFromChannelAction<\r\n ItemOf<GetPromotionListQuery, 'promotions'>\r\n>({\r\n location: 'promotion-list',\r\n requiresPermission: Permission.DeleteCatalog,\r\n getItemName: item => item.name,\r\n bulkRemoveFromChannel: (dataService, promotionIds, channelId) =>\r\n dataService\r\n .mutate(RemovePromotionsFromChannelDocument, {\r\n input: {\r\n channelId,\r\n promotionIds,\r\n },\r\n })\r\n .pipe(map(res => res.removePromotionsFromChannel)),\r\n});\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n GetPromotionListDocument,\r\n LogicalOperator,\r\n PROMOTION_FRAGMENT,\r\n PromotionListOptions,\r\n PromotionSortParameter,\r\n TypedBaseListComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\n\r\nexport const GET_PROMOTION_LIST = gql`\r\n query GetPromotionList($options: PromotionListOptions) {\r\n promotions(options: $options) {\r\n items {\r\n ...Promotion\r\n }\r\n totalItems\r\n }\r\n }\r\n ${PROMOTION_FRAGMENT}\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-promotion-list',\r\n templateUrl: './promotion-list.component.html',\r\n styleUrls: ['./promotion-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PromotionListComponent\r\n extends TypedBaseListComponent<typeof GetPromotionListDocument, 'promotions'>\r\n implements OnInit\r\n{\r\n readonly customFields = this.getCustomFieldConfig('Promotion');\r\n readonly filters = this.createFilterCollection()\r\n .addIdFilter()\r\n .addDateFilters()\r\n .addFilters([\r\n {\r\n name: 'startsAt',\r\n type: { kind: 'dateRange' },\r\n label: _('marketing.starts-at'),\r\n filterField: 'startsAt',\r\n },\r\n {\r\n name: 'endsAt',\r\n type: { kind: 'dateRange' },\r\n label: _('marketing.ends-at'),\r\n filterField: 'endsAt',\r\n },\r\n {\r\n name: 'enabled',\r\n type: { kind: 'boolean' },\r\n label: _('common.enabled'),\r\n filterField: 'enabled',\r\n },\r\n {\r\n name: 'name',\r\n type: { kind: 'text' },\r\n label: _('common.name'),\r\n filterField: 'name',\r\n },\r\n {\r\n name: 'couponCode',\r\n type: { kind: 'text' },\r\n label: _('marketing.coupon-code'),\r\n filterField: 'couponCode',\r\n },\r\n {\r\n name: 'desc',\r\n type: { kind: 'text' },\r\n label: _('common.description'),\r\n filterField: 'description',\r\n },\r\n {\r\n name: 'perCustomerUsageLimit',\r\n type: { kind: 'number' },\r\n label: _('marketing.per-customer-limit'),\r\n filterField: 'perCustomerUsageLimit',\r\n },\r\n {\r\n name: 'usageLimit',\r\n type: { kind: 'number' },\r\n label: _('marketing.usage-limit'),\r\n filterField: 'usageLimit',\r\n },\r\n ])\r\n .addCustomFieldFilters(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n readonly sorts = this.createSortCollection()\r\n .defaultSort('createdAt', 'DESC')\r\n .addSorts([\r\n { name: 'createdAt' },\r\n { name: 'updatedAt' },\r\n { name: 'startsAt' },\r\n { name: 'endsAt' },\r\n { name: 'name' },\r\n { name: 'couponCode' },\r\n { name: 'perCustomerUsageLimit' },\r\n { name: 'usageLimit' },\r\n ])\r\n .addCustomFieldSorts(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n constructor() {\r\n super();\r\n super.configure({\r\n document: GetPromotionListDocument,\r\n getItems: data => data.promotions,\r\n setVariables: (skip, take) => this.createQueryOptions(skip, take, this.searchTermControl.value),\r\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\r\n });\r\n }\r\n\r\n private createQueryOptions(\r\n skip: number,\r\n take: number,\r\n searchTerm: string | null,\r\n ): { options: PromotionListOptions } {\r\n const filter = this.filters.createFilterInput();\r\n const sort = this.sorts.createSortInput();\r\n let filterOperator = LogicalOperator.AND;\r\n if (searchTerm) {\r\n filter.couponCode = { contains: searchTerm };\r\n filter.name = { contains: searchTerm };\r\n filterOperator = LogicalOperator.OR;\r\n }\r\n\r\n return {\r\n options: {\r\n skip,\r\n take,\r\n filter,\r\n filterOperator,\r\n sort,\r\n },\r\n };\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"contentLanguage$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"promotion-list\"></vdr-action-bar-items>\r\n <a class=\"btn btn-primary\" [routerLink]=\"['./create']\" *vdrIfPermissions=\"'CreatePromotion'\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'marketing.create-new-promotion' | translate }}\r\n </a>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-data-table-2\r\n id=\"promotion-list\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"promotion-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n />\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'marketing.search-by-name-or-coupon-code' | translate\"\r\n />\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\r\n <ng-template let-promotion=\"item\">{{ promotion.id }}</ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('createdAt')\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\r\n [hiddenByDefault]=\"true\"\r\n [sort]=\"sorts.get('updatedAt')\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\r\n <ng-template let-promotion=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"['./', promotion.id]\"\r\n ><span> {{ promotion.name }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.enabled' | translate\" id=\"enabled\">\r\n <ng-template let-promotion=\"item\">\r\n <vdr-chip *ngIf=\"promotion.enabled\" colorType=\"success\">{{\r\n 'common.enabled' | translate\r\n }}</vdr-chip>\r\n <vdr-chip *ngIf=\"!promotion.enabled\" colorType=\"warning\">{{\r\n 'common.disabled' | translate\r\n }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.coupon-code' | translate\" id=\"coupon-code\" [sort]=\"sorts.get('couponCode')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.couponCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.starts-at' | translate\" id=\"starts-at\" [sort]=\"sorts.get('startsAt')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.startsAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'marketing.ends-at' | translate\" id=\"ends-at\" [sort]=\"sorts.get('endsAt')\">\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.endsAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'marketing.per-customer-limit' | translate\" id=\"per-customer-limit\"\r\n [sort]=\"sorts.get('perCustomerUsageLimit')\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.perCustomerUsageLimit }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n [heading]=\"'marketing.per-customer-limit' | translate\" id=\"per-customer-limit\"\r\n [sort]=\"sorts.get('usageLimit')\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-promotion=\"item\">\r\n {{ promotion.usageLimit }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\r\n</vdr-data-table-2>\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { detailBreadcrumb, PageComponent, PageService, PromotionFragment } from '@vendure/admin-ui/core';\r\n\r\nexport const createRoutes = (pageService: PageService): Route[] => [\r\n {\r\n path: 'promotions',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'promotion-list',\r\n breadcrumb: _('breadcrumb.promotions'),\r\n },\r\n children: pageService.getPageTabRoutes('promotion-list'),\r\n },\r\n {\r\n path: 'promotions/:id',\r\n component: PageComponent,\r\n data: {\r\n locationId: 'promotion-detail',\r\n breadcrumb: { label: _('breadcrumb.promotions'), link: ['../', 'promotions'] },\r\n },\r\n children: pageService.getPageTabRoutes('promotion-detail'),\r\n },\r\n];\r\n\r\nexport function promotionBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<PromotionFragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.promotions',\r\n getName: promotion => promotion.name,\r\n route: 'promotions',\r\n });\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, ROUTES } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BulkActionRegistryService,\r\n detailComponentWithResolver,\r\n GetPromotionDetailDocument,\r\n PageService,\r\n SharedModule,\r\n} from '@vendure/admin-ui/core';\r\n\r\nimport { PromotionDetailComponent } from './components/promotion-detail/promotion-detail.component';\r\nimport {\r\n assignPromotionsToChannelBulkAction,\r\n deletePromotionsBulkAction,\r\n removePromotionsFromChannelBulkAction,\r\n} from './components/promotion-list/promotion-list-bulk-actions';\r\nimport { PromotionListComponent } from './components/promotion-list/promotion-list.component';\r\nimport { createRoutes } from './marketing.routes';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild([]), SharedModule, AsyncPipe, SharedModule],\r\n providers: [\r\n {\r\n provide: ROUTES,\r\n useFactory: (pageService: PageService) => createRoutes(pageService),\r\n multi: true,\r\n deps: [PageService],\r\n },\r\n ],\r\n declarations: [PromotionListComponent, PromotionDetailComponent],\r\n})\r\nexport class MarketingModule {\r\n private static hasRegisteredTabsAndBulkActions = false;\r\n\r\n constructor(bulkActionRegistryService: BulkActionRegistryService, pageService: PageService) {\r\n if (MarketingModule.hasRegisteredTabsAndBulkActions) {\r\n return;\r\n }\r\n bulkActionRegistryService.registerBulkAction(assignPromotionsToChannelBulkAction);\r\n bulkActionRegistryService.registerBulkAction(removePromotionsFromChannelBulkAction);\r\n bulkActionRegistryService.registerBulkAction(deletePromotionsBulkAction);\r\n\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'promotion-list',\r\n tab: _('breadcrumb.promotions'),\r\n route: '',\r\n component: PromotionListComponent,\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'promotion-detail',\r\n tab: _('marketing.promotion'),\r\n route: '',\r\n component: detailComponentWithResolver({\r\n component: PromotionDetailComponent,\r\n query: GetPromotionDetailDocument,\r\n entityKey: 'promotion',\r\n getBreadcrumbs: entity => [\r\n {\r\n label: entity ? entity.name : _('marketing.create-new-promotion'),\r\n link: [entity?.id],\r\n },\r\n ],\r\n }),\r\n });\r\n MarketingModule.hasRegisteredTabsAndBulkActions = true;\r\n }\r\n}\r\n","// This file was generated by the build-public-api.ts script\nexport * from './components/promotion-detail/promotion-detail.component';\nexport * from './components/promotion-list/promotion-list-bulk-actions';\nexport * from './components/promotion-list/promotion-list.component';\nexport * from './marketing.module';\nexport * from './marketing.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_","i1","i2","i3","i4"],"mappings":"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"}
|
|
@@ -3147,8 +3147,11 @@ function modifyingOrderBreadcrumb(data, params) {
|
|
|
3147
3147
|
}
|
|
3148
3148
|
|
|
3149
3149
|
class OrderModule {
|
|
3150
|
+
static { this.hasRegisteredTabsAndBulkActions = false; }
|
|
3150
3151
|
constructor(pageService) {
|
|
3151
|
-
|
|
3152
|
+
if (OrderModule.hasRegisteredTabsAndBulkActions) {
|
|
3153
|
+
return;
|
|
3154
|
+
}
|
|
3152
3155
|
pageService.registerPageTab({
|
|
3153
3156
|
priority: 0,
|
|
3154
3157
|
location: 'order-list',
|
|
@@ -3205,6 +3208,7 @@ class OrderModule {
|
|
|
3205
3208
|
],
|
|
3206
3209
|
}),
|
|
3207
3210
|
});
|
|
3211
|
+
OrderModule.hasRegisteredTabsAndBulkActions = true;
|
|
3208
3212
|
}
|
|
3209
3213
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: OrderModule, deps: [{ token: i1.PageService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3210
3214
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.2", ngImport: i0, type: OrderModule, declarations: [OrderListComponent,
|