@vendure/admin-ui 1.6.2 → 1.6.5

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.
Files changed (48) hide show
  1. package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
  2. package/bundles/vendure-admin-ui-core.umd.js +48 -28
  3. package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
  4. package/bundles/vendure-admin-ui-order.umd.js +38 -18
  5. package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
  6. package/core/common/generated-types.d.ts +2 -0
  7. package/core/common/version.d.ts +1 -1
  8. package/core/shared/components/custom-field-control/custom-field-control.component.d.ts +6 -2
  9. package/core/shared/components/facet-value-selector/facet-value-selector.component.d.ts +2 -1
  10. package/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.d.ts +2 -0
  11. package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +2 -1
  12. package/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +10 -2
  13. package/core/shared/pipes/custom-field-label.pipe.d.ts +4 -10
  14. package/core/vendure-admin-ui-core.metadata.json +1 -1
  15. package/esm2015/catalog/components/product-variants-editor/product-variants-editor.component.js +1 -1
  16. package/esm2015/core/common/generated-types.js +1 -1
  17. package/esm2015/core/common/introspection-result.js +1 -1
  18. package/esm2015/core/common/utilities/configurable-operation-utils.js +3 -3
  19. package/esm2015/core/common/version.js +2 -2
  20. package/esm2015/core/shared/components/address-form/address-form.component.js +2 -2
  21. package/esm2015/core/shared/components/custom-field-control/custom-field-control.component.js +9 -3
  22. package/esm2015/core/shared/components/facet-value-selector/facet-value-selector.component.js +5 -2
  23. package/esm2015/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.js +11 -2
  24. package/esm2015/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.js +15 -2
  25. package/esm2015/core/shared/pipes/custom-field-label.pipe.js +4 -19
  26. package/esm2015/order/components/order-detail/order-detail.component.js +31 -19
  27. package/esm2015/order/components/order-table/order-table.component.js +10 -2
  28. package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
  29. package/fesm2015/vendure-admin-ui-core.js +40 -25
  30. package/fesm2015/vendure-admin-ui-core.js.map +1 -1
  31. package/fesm2015/vendure-admin-ui-order.js +39 -19
  32. package/fesm2015/vendure-admin-ui-order.js.map +1 -1
  33. package/order/components/order-table/order-table.component.d.ts +1 -0
  34. package/order/vendure-admin-ui-order.metadata.json +1 -1
  35. package/package.json +2 -2
  36. package/static/i18n-messages/cs.json +683 -683
  37. package/static/i18n-messages/de.json +683 -683
  38. package/static/i18n-messages/en.json +684 -684
  39. package/static/i18n-messages/es.json +683 -683
  40. package/static/i18n-messages/fr.json +683 -683
  41. package/static/i18n-messages/it.json +683 -683
  42. package/static/i18n-messages/pl.json +683 -683
  43. package/static/i18n-messages/pt_BR.json +683 -683
  44. package/static/i18n-messages/pt_PT.json +683 -683
  45. package/static/i18n-messages/ru.json +683 -683
  46. package/static/i18n-messages/uk.json +683 -683
  47. package/static/i18n-messages/zh_Hans.json +683 -683
  48. package/static/i18n-messages/zh_Hant.json +683 -683
@@ -7,7 +7,7 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
7
7
  import { isObject, summate, assertNever, notNullOrUndefined } from '@vendure/common/lib/shared-utils';
8
8
  import * as i1$1 from '@angular/router';
9
9
  import { Router, ActivatedRoute, RouterModule } from '@angular/router';
10
- import { EMPTY, Subject, of, merge, concat, BehaviorSubject } from 'rxjs';
10
+ import { EMPTY, Subject, of, concat, merge, BehaviorSubject } from 'rxjs';
11
11
  import { switchMap, catchError, retryWhen, delay, take, map, startWith, mapTo, takeUntil, distinctUntilChanged, shareReplay, filter, debounceTime, tap } from 'rxjs/operators';
12
12
 
13
13
  class AddManualPaymentDialogComponent {
@@ -1244,26 +1244,43 @@ class OrderDetailComponent extends BaseDetailComponent {
1244
1244
  if (!input) {
1245
1245
  return of(undefined);
1246
1246
  }
1247
- const operations = [];
1247
+ if ((_a = input.cancel.lines) === null || _a === void 0 ? void 0 : _a.length) {
1248
+ return this.dataService.order.cancelOrder(input.cancel).pipe(map(res => {
1249
+ const result = res.cancelOrder;
1250
+ switch (result.__typename) {
1251
+ case 'Order':
1252
+ this.refetchOrder(result).subscribe();
1253
+ this.notificationService.success(marker('order.cancelled-order-success'));
1254
+ return input;
1255
+ case 'CancelActiveOrderError':
1256
+ case 'QuantityTooGreatError':
1257
+ case 'MultipleOrderError':
1258
+ case 'OrderStateTransitionError':
1259
+ case 'EmptyOrderLineSelectionError':
1260
+ this.notificationService.error(result.message);
1261
+ return undefined;
1262
+ }
1263
+ }));
1264
+ }
1265
+ else {
1266
+ return [input];
1267
+ }
1268
+ }), switchMap(input => {
1269
+ if (!input) {
1270
+ return of(undefined);
1271
+ }
1248
1272
  if (input.refund.lines.length) {
1249
- operations.push(this.dataService.order
1273
+ return this.dataService.order
1250
1274
  .refundOrder(input.refund)
1251
- .pipe(map(res => res.refundOrder)));
1275
+ .pipe(map(res => res.refundOrder));
1252
1276
  }
1253
- if ((_a = input.cancel.lines) === null || _a === void 0 ? void 0 : _a.length) {
1254
- operations.push(this.dataService.order
1255
- .cancelOrder(input.cancel)
1256
- .pipe(map(res => res.cancelOrder)));
1277
+ else {
1278
+ return [undefined];
1257
1279
  }
1258
- return merge(...operations);
1259
1280
  }))
1260
1281
  .subscribe(result => {
1261
1282
  if (result) {
1262
1283
  switch (result.__typename) {
1263
- case 'Order':
1264
- this.refetchOrder(result).subscribe();
1265
- this.notificationService.success(marker('order.cancelled-order-success'));
1266
- break;
1267
1284
  case 'Refund':
1268
1285
  this.refetchOrder(result).subscribe();
1269
1286
  if (result.state === 'Failed') {
@@ -1273,11 +1290,6 @@ class OrderDetailComponent extends BaseDetailComponent {
1273
1290
  this.notificationService.success(marker('order.refund-order-success'));
1274
1291
  }
1275
1292
  break;
1276
- case 'QuantityTooGreatError':
1277
- case 'MultipleOrderError':
1278
- case 'OrderStateTransitionError':
1279
- case 'CancelActiveOrderError':
1280
- case 'EmptyOrderLineSelectionError':
1281
1293
  case 'AlreadyRefundedError':
1282
1294
  case 'NothingToRefundError':
1283
1295
  case 'PaymentOrderMismatchError':
@@ -2330,11 +2342,19 @@ class OrderTableComponent {
2330
2342
  return promotion.couponCode || undefined;
2331
2343
  }
2332
2344
  }
2345
+ getShippingNames(order) {
2346
+ if (order.shippingLines.length) {
2347
+ return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');
2348
+ }
2349
+ else {
2350
+ return '';
2351
+ }
2352
+ }
2333
2353
  }
2334
2354
  OrderTableComponent.decorators = [
2335
2355
  { type: Component, args: [{
2336
2356
  selector: 'vdr-order-table',
2337
- template: "<table class=\"order-table table\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'order.product-name' | translate }}</th>\r\n <th>{{ 'order.product-sku' | translate }}</th>\r\n <th>{{ 'order.unit-price' | translate }}</th>\r\n <th>{{ 'order.quantity' | translate }}</th>\r\n <th>{{ 'order.total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let line of order.lines\">\r\n <tr class=\"order-line\" [class.is-cancelled]=\"line.quantity === 0\">\r\n <td class=\"align-middle thumb\">\r\n <img *ngIf=\"line.featuredAsset\" [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\r\n <td class=\"align-middle unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n {{ line.quantity }}\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment [line]=\"line\" [orderState]=\"order.state\"></vdr-line-fulfillment>\r\n </td>\r\n <td class=\"align-middle total\">\r\n {{ line.linePriceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.linePrice | localeCurrency: order.currencyCode }}\r\n </div>\r\n\r\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n {{ 'order.promotions-applied' | translate }}\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\r\n discount.description\r\n }}</a>\r\n <div class=\"promotion-amount\">\r\n {{ discount.amountWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency: order.currencyCode }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"customFieldsForLine[line.id] as customFields\">\r\n <tr *ngIf=\"customFields.length\">\r\n <td colspan=\"6\" class=\"custom-fields-row\">\r\n <div class=\"order-line-custom-fields\">\r\n <div class=\"custom-field\" *ngFor=\"let field of customFields\">\r\n <vdr-custom-field-control\r\n [compact]=\"true\"\r\n [readonly]=\"true\"\r\n [customField]=\"field.config\"\r\n [customFieldsFormGroup]=\"field.formGroup\"\r\n ></vdr-custom-field-control>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\r\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\" colspan=\"2\"></td>\r\n <td class=\"align-middle total\">\r\n {{ surcharge.priceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surcharge.price | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <ng-container *ngFor=\"let discount of order.discounts\">\r\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\r\n <td colspan=\"5\" class=\"left clr-align-middle\">\r\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\r\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\r\n couponCode\r\n }}</vdr-chip>\r\n </td>\r\n <td class=\"clr-align-middle\">\r\n {{ discount.amountWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"sub-total\">\r\n <td class=\"left clr-align-middle\">{{ 'order.sub-total' | translate }}</td>\r\n <td colspan=\"4\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.subTotalWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.subTotal | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"left clr-align-middle\">{{ 'order.shipping' | translate }}</td>\r\n <td class=\"clr-align-middle\">{{ order.shippingLines[0]?.shippingMethod?.name }}</td>\r\n <td colspan=\"3\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.shipping | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"total\">\r\n <td class=\"left clr-align-middle\">{{ 'order.total' | translate }}</td>\r\n <td colspan=\"4\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.totalWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.total | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n",
2357
+ template: "<table class=\"order-table table\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'order.product-name' | translate }}</th>\r\n <th>{{ 'order.product-sku' | translate }}</th>\r\n <th>{{ 'order.unit-price' | translate }}</th>\r\n <th>{{ 'order.quantity' | translate }}</th>\r\n <th>{{ 'order.total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let line of order.lines\">\r\n <tr class=\"order-line\" [class.is-cancelled]=\"line.quantity === 0\">\r\n <td class=\"align-middle thumb\">\r\n <img *ngIf=\"line.featuredAsset\" [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\r\n <td class=\"align-middle unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n {{ line.quantity }}\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment [line]=\"line\" [orderState]=\"order.state\"></vdr-line-fulfillment>\r\n </td>\r\n <td class=\"align-middle total\">\r\n {{ line.linePriceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.linePrice | localeCurrency: order.currencyCode }}\r\n </div>\r\n\r\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n {{ 'order.promotions-applied' | translate }}\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\r\n discount.description\r\n }}</a>\r\n <div class=\"promotion-amount\">\r\n {{ discount.amountWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency: order.currencyCode }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"customFieldsForLine[line.id] as customFields\">\r\n <tr *ngIf=\"customFields.length\">\r\n <td colspan=\"6\" class=\"custom-fields-row\">\r\n <div class=\"order-line-custom-fields\">\r\n <div class=\"custom-field\" *ngFor=\"let field of customFields\">\r\n <vdr-custom-field-control\r\n [compact]=\"true\"\r\n [readonly]=\"true\"\r\n [customField]=\"field.config\"\r\n [customFieldsFormGroup]=\"field.formGroup\"\r\n ></vdr-custom-field-control>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\r\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\" colspan=\"2\"></td>\r\n <td class=\"align-middle total\">\r\n {{ surcharge.priceWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surcharge.price | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <ng-container *ngFor=\"let discount of order.discounts\">\r\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\r\n <td colspan=\"5\" class=\"left clr-align-middle\">\r\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\r\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\r\n couponCode\r\n }}</vdr-chip>\r\n </td>\r\n <td class=\"clr-align-middle\">\r\n {{ discount.amountWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"sub-total\">\r\n <td class=\"left clr-align-middle\">{{ 'order.sub-total' | translate }}</td>\r\n <td colspan=\"4\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.subTotalWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.subTotal | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"left clr-align-middle\">{{ 'order.shipping' | translate }}</td>\r\n <td class=\"clr-align-middle\">{{ getShippingNames(order) }}</td>\r\n <td colspan=\"3\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.shipping | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class=\"total\">\r\n <td class=\"left clr-align-middle\">{{ 'order.total' | translate }}</td>\r\n <td colspan=\"4\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.totalWithTax | localeCurrency: order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.total | localeCurrency: order.currencyCode }}\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n",
2338
2358
  changeDetection: ChangeDetectionStrategy.OnPush,
2339
2359
  styles: [".order-table .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}.order-table .sub-total td{border-top:1px dashed var(--color-component-border-200)}.order-table .total td{font-weight:bold;border-top:1px dashed var(--color-component-border-200)}.order-table td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}.order-table .order-line-custom-fields{display:flex;flex-wrap:wrap}.order-table .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-right:18px}.order-table .order-line-custom-field{background-color:var(--color-component-bg-100)}.order-table .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}.order-table .net-price{font-size:11px;color:var(--color-text-300)}.order-table .promotions-label{-webkit-text-decoration:underline dotted var(--color-text-200);text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}.order-table .thumb img{width:50px;height:50px}::ng-deep .line-promotion{display:flex;justify-content:space-between;padding:6px 12px}::ng-deep .line-promotion .promotion-amount{margin-left:12px}::ng-deep .line-promotion .net-price{font-size:11px;color:var(--color-text-300)}\n"]
2340
2360
  },] }