@vendure/admin-ui 1.6.4 → 1.7.1

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 (86) hide show
  1. package/bundles/vendure-admin-ui-catalog.umd.js +196 -20
  2. package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
  3. package/bundles/vendure-admin-ui-core.umd.js +292 -323
  4. package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
  5. package/bundles/vendure-admin-ui-customer.umd.js +39 -18
  6. package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
  7. package/bundles/vendure-admin-ui-order.umd.js +141 -119
  8. package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
  9. package/catalog/components/generate-product-variants/generate-product-variants.component.d.ts +3 -3
  10. package/catalog/components/option-value-input/option-value-input.component.d.ts +20 -8
  11. package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +10 -3
  12. package/catalog/vendure-admin-ui-catalog.metadata.json +1 -1
  13. package/core/common/generated-types.d.ts +89 -19
  14. package/core/common/utilities/configurable-operation-utils.d.ts +4 -2
  15. package/core/common/version.d.ts +1 -1
  16. package/core/data/definitions/order-definitions.d.ts +2 -0
  17. package/core/data/definitions/product-definitions.d.ts +1 -0
  18. package/core/data/providers/order-data.service.d.ts +1 -0
  19. package/core/data/providers/product-data.service.d.ts +1 -0
  20. package/core/shared/components/custom-field-control/custom-field-control.component.d.ts +6 -2
  21. package/core/shared/components/data-table/data-table.component.d.ts +5 -2
  22. package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +2 -1
  23. package/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +10 -2
  24. package/core/shared/pipes/custom-field-label.pipe.d.ts +4 -10
  25. package/core/vendure-admin-ui-core.metadata.json +1 -1
  26. package/customer/components/customer-group-list/customer-group-list.component.d.ts +6 -4
  27. package/customer/vendure-admin-ui-customer.metadata.json +1 -1
  28. package/esm2015/catalog/components/generate-product-variants/generate-product-variants.component.js +12 -5
  29. package/esm2015/catalog/components/option-value-input/option-value-input.component.js +62 -12
  30. package/esm2015/catalog/components/product-variants-editor/product-variants-editor.component.js +109 -11
  31. package/esm2015/core/common/generated-types.js +2 -1
  32. package/esm2015/core/common/introspection-result.js +191 -255
  33. package/esm2015/core/common/utilities/configurable-operation-utils.js +11 -8
  34. package/esm2015/core/common/version.js +2 -2
  35. package/esm2015/core/components/app-shell/app-shell.component.js +1 -1
  36. package/esm2015/core/components/main-nav/main-nav.component.js +1 -1
  37. package/esm2015/core/data/definitions/order-definitions.js +39 -25
  38. package/esm2015/core/data/definitions/product-definitions.js +743 -735
  39. package/esm2015/core/data/providers/order-data.service.js +7 -2
  40. package/esm2015/core/data/providers/product-data.service.js +5 -2
  41. package/esm2015/core/shared/components/custom-field-control/custom-field-control.component.js +9 -3
  42. package/esm2015/core/shared/components/data-table/data-table.component.js +9 -2
  43. package/esm2015/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.js +15 -2
  44. package/esm2015/core/shared/pipes/custom-field-label.pipe.js +4 -19
  45. package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +25 -12
  46. package/esm2015/order/components/fulfill-order-dialog/fulfill-order-dialog.component.js +3 -2
  47. package/esm2015/order/components/fulfillment-detail/fulfillment-detail.component.js +9 -18
  48. package/esm2015/order/components/line-fulfillment/line-fulfillment.component.js +10 -21
  49. package/esm2015/order/components/order-custom-fields-card/order-custom-fields-card.component.js +30 -4
  50. package/esm2015/order/components/order-detail/order-detail.component.js +49 -20
  51. package/esm2015/order/components/order-list/order-list.component.js +22 -15
  52. package/esm2015/order/components/order-payment-card/order-payment-card.component.js +2 -2
  53. package/esm2015/order/components/order-table/order-table.component.js +1 -1
  54. package/fesm2015/vendure-admin-ui-catalog.js +177 -22
  55. package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
  56. package/fesm2015/vendure-admin-ui-core.js +975 -995
  57. package/fesm2015/vendure-admin-ui-core.js.map +1 -1
  58. package/fesm2015/vendure-admin-ui-customer.js +23 -11
  59. package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
  60. package/fesm2015/vendure-admin-ui-order.js +116 -75
  61. package/fesm2015/vendure-admin-ui-order.js.map +1 -1
  62. package/order/components/line-fulfillment/line-fulfillment.component.d.ts +2 -2
  63. package/order/components/modification-detail/modification-detail.component.d.ts +1 -1
  64. package/order/components/order-custom-fields-card/order-custom-fields-card.component.d.ts +4 -2
  65. package/order/components/order-list/order-list.component.d.ts +1 -0
  66. package/order/vendure-admin-ui-order.metadata.json +1 -1
  67. package/package.json +2 -2
  68. package/static/i18n-messages/cs.json +6 -2
  69. package/static/i18n-messages/de.json +6 -2
  70. package/static/i18n-messages/en.json +8 -3
  71. package/static/i18n-messages/es.json +6 -2
  72. package/static/i18n-messages/fr.json +6 -2
  73. package/static/i18n-messages/it.json +6 -2
  74. package/static/i18n-messages/pl.json +6 -2
  75. package/static/i18n-messages/pt_BR.json +6 -2
  76. package/static/i18n-messages/pt_PT.json +6 -2
  77. package/static/i18n-messages/ru.json +6 -2
  78. package/static/i18n-messages/uk.json +6 -2
  79. package/static/i18n-messages/zh_Hans.json +6 -2
  80. package/static/i18n-messages/zh_Hant.json +6 -2
  81. package/static/styles/_variables.scss +3 -0
  82. package/static/styles/global/_sass-overrides.scss +3 -0
  83. package/static/styles/global/_utilities.scss +1 -0
  84. package/static/styles/styles.scss +1 -0
  85. package/static/styles/ui-extension-theme.scss +1 -0
  86. package/static/theme.min.css +1 -1
@@ -546,7 +546,8 @@
546
546
  return effectiveTracInventory ? Math.min(unfulfilledCount, stockOnHand) : unfulfilledCount;
547
547
  };
548
548
  FulfillOrderDialogComponent.prototype.getUnfulfilledCount = function (line) {
549
- var fulfilled = line.items.reduce(function (sum, item) { return sum + (item.fulfillment ? 1 : 0); }, 0);
549
+ var _a, _b;
550
+ var fulfilled = (_b = (_a = line.fulfillments) === null || _a === void 0 ? void 0 : _a.map(function (f) { return f.summary; }).flat().filter(function (row) { return row.orderLine.id === line.id; }).reduce(function (sum, row) { return sum + row.quantity; }, 0)) !== null && _b !== void 0 ? _b : 0;
550
551
  return line.quantity - fulfilled;
551
552
  };
552
553
  FulfillOrderDialogComponent.prototype.canSubmit = function () {
@@ -653,66 +654,34 @@
653
654
  });
654
655
  Object.defineProperty(FulfillmentDetailComponent.prototype, "items", {
655
656
  get: function () {
656
- var e_1, _b, e_2, _c;
657
- var _a;
658
- var itemMap = new Map();
659
- var fulfillmentItemIds = (_a = this.fulfillment) === null || _a === void 0 ? void 0 : _a.orderItems.map(function (i) { return i.id; });
660
- try {
661
- for (var _d = __values(this.order.lines), _e = _d.next(); !_e.done; _e = _d.next()) {
662
- var line = _e.value;
663
- try {
664
- for (var _f = (e_2 = void 0, __values(line.items)), _g = _f.next(); !_g.done; _g = _f.next()) {
665
- var item = _g.value;
666
- if (fulfillmentItemIds === null || fulfillmentItemIds === void 0 ? void 0 : fulfillmentItemIds.includes(item.id)) {
667
- var count = itemMap.get(line.productVariant.name);
668
- if (count != null) {
669
- itemMap.set(line.productVariant.name, count + 1);
670
- }
671
- else {
672
- itemMap.set(line.productVariant.name, 1);
673
- }
674
- }
675
- }
676
- }
677
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
678
- finally {
679
- try {
680
- if (_g && !_g.done && (_c = _f.return)) _c.call(_f);
681
- }
682
- finally { if (e_2) throw e_2.error; }
683
- }
684
- }
685
- }
686
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
687
- finally {
688
- try {
689
- if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
690
- }
691
- finally { if (e_1) throw e_1.error; }
692
- }
693
- return Array.from(itemMap.entries()).map(function (_b) {
694
- var _c = __read(_b, 2), name = _c[0], quantity = _c[1];
695
- return ({ name: name, quantity: quantity });
696
- });
657
+ var _this = this;
658
+ var _a, _b;
659
+ return ((_b = (_a = this.fulfillment) === null || _a === void 0 ? void 0 : _a.summary.map(function (row) {
660
+ var _a, _b;
661
+ return {
662
+ name: (_b = (_a = _this.order.lines.find(function (line) { return line.id === row.orderLine.id; })) === null || _a === void 0 ? void 0 : _a.productVariant.name) !== null && _b !== void 0 ? _b : '',
663
+ quantity: row.quantity,
664
+ };
665
+ })) !== null && _b !== void 0 ? _b : []);
697
666
  },
698
667
  enumerable: false,
699
668
  configurable: true
700
669
  });
701
670
  FulfillmentDetailComponent.prototype.buildCustomFieldsFormGroup = function () {
702
- var e_3, _b;
671
+ var e_1, _c;
703
672
  var customFields = this.fulfillment.customFields;
704
673
  try {
705
- for (var _c = __values(this.serverConfigService.getCustomFieldsFor('Fulfillment')), _d = _c.next(); !_d.done; _d = _c.next()) {
706
- var fieldDef = _d.value;
674
+ for (var _d = __values(this.serverConfigService.getCustomFieldsFor('Fulfillment')), _e = _d.next(); !_e.done; _e = _d.next()) {
675
+ var fieldDef = _e.value;
707
676
  this.customFieldFormGroup.addControl(fieldDef.name, new forms.FormControl(customFields[fieldDef.name]));
708
677
  }
709
678
  }
710
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
679
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
711
680
  finally {
712
681
  try {
713
- if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
682
+ if (_e && !_e.done && (_c = _d.return)) _c.call(_d);
714
683
  }
715
- finally { if (e_3) throw e_3.error; }
684
+ finally { if (e_1) throw e_1.error; }
716
685
  }
717
686
  };
718
687
  FulfillmentDetailComponent.prototype.customFieldIsObject = function (customField) {
@@ -784,7 +753,8 @@
784
753
  * Returns the number of items in an OrderLine which are fulfilled.
785
754
  */
786
755
  LineFulfillmentComponent.prototype.getDeliveredCount = function (line) {
787
- return line.items.reduce(function (sum, item) { return sum + (item.fulfillment ? 1 : 0); }, 0);
756
+ var _a, _b;
757
+ return ((_b = (_a = line.fulfillments) === null || _a === void 0 ? void 0 : _a.reduce(function (sum, fulfillment) { var _a, _b; return sum + ((_b = (_a = fulfillment.summary.find(function (s) { return s.orderLine.id === line.id; })) === null || _a === void 0 ? void 0 : _a.quantity) !== null && _b !== void 0 ? _b : 0); }, 0)) !== null && _b !== void 0 ? _b : 0);
788
758
  };
789
759
  LineFulfillmentComponent.prototype.getFulfillmentStatus = function (fulfilledCount, lineQuantity) {
790
760
  if (fulfilledCount === lineQuantity) {
@@ -796,39 +766,15 @@
796
766
  return 'none';
797
767
  };
798
768
  LineFulfillmentComponent.prototype.getFulfillments = function (line) {
799
- var e_1, _a;
800
- var counts = {};
801
- try {
802
- for (var _b = __values(line.items), _c = _b.next(); !_c.done; _c = _b.next()) {
803
- var item = _c.value;
804
- if (item.fulfillment) {
805
- if (counts[item.fulfillment.id] === undefined) {
806
- counts[item.fulfillment.id] = 1;
807
- }
808
- else {
809
- counts[item.fulfillment.id]++;
810
- }
811
- }
812
- }
813
- }
814
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
815
- finally {
816
- try {
817
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
818
- }
819
- finally { if (e_1) throw e_1.error; }
820
- }
821
- var all = line.items.reduce(function (fulfillments, item) {
822
- return item.fulfillment ? __spreadArray(__spreadArray([], __read(fulfillments)), [item.fulfillment]) : fulfillments;
823
- }, []);
824
- return Object.entries(counts).map(function (_a) {
825
- var _b = __read(_a, 2), id = _b[0], count = _b[1];
769
+ var _a, _b;
770
+ return ((_b = (_a = line.fulfillments) === null || _a === void 0 ? void 0 : _a.map(function (fulfillment) {
771
+ var _a;
772
+ var summaryLine = fulfillment.summary.find(function (s) { return s.orderLine.id === line.id; });
826
773
  return {
827
- count: count,
828
- // tslint:disable-next-line:no-non-null-assertion
829
- fulfillment: all.find(function (f) { return f.id === id; }),
774
+ count: (_a = summaryLine === null || summaryLine === void 0 ? void 0 : summaryLine.quantity) !== null && _a !== void 0 ? _a : 0,
775
+ fulfillment: fulfillment,
830
776
  };
831
- });
777
+ })) !== null && _b !== void 0 ? _b : []);
832
778
  };
833
779
  return LineFulfillmentComponent;
834
780
  }());
@@ -973,8 +919,9 @@
973
919
  };
974
920
 
975
921
  var OrderCustomFieldsCardComponent = /** @class */ (function () {
976
- function OrderCustomFieldsCardComponent(formBuilder) {
922
+ function OrderCustomFieldsCardComponent(formBuilder, modalService) {
977
923
  this.formBuilder = formBuilder;
924
+ this.modalService = modalService;
978
925
  this.customFieldsConfig = [];
979
926
  this.customFieldValues = {};
980
927
  this.updateClick = new i0.EventEmitter();
@@ -1002,18 +949,42 @@
1002
949
  this.customFieldForm.markAsPristine();
1003
950
  this.editable = false;
1004
951
  };
952
+ OrderCustomFieldsCardComponent.prototype.onCancelClick = function () {
953
+ var _this = this;
954
+ if (this.customFieldForm.dirty) {
955
+ this.modalService
956
+ .dialog({
957
+ title: ngxTranslateExtractMarker.marker('catalog.confirm-cancel'),
958
+ buttons: [
959
+ { type: 'secondary', label: ngxTranslateExtractMarker.marker('common.keep-editing') },
960
+ { type: 'danger', label: ngxTranslateExtractMarker.marker('common.discard-changes'), returnValue: true },
961
+ ],
962
+ })
963
+ .subscribe(function (result) {
964
+ if (result) {
965
+ _this.customFieldForm.reset();
966
+ _this.customFieldForm.markAsPristine();
967
+ _this.editable = false;
968
+ }
969
+ });
970
+ }
971
+ else {
972
+ this.editable = false;
973
+ }
974
+ };
1005
975
  return OrderCustomFieldsCardComponent;
1006
976
  }());
1007
977
  OrderCustomFieldsCardComponent.decorators = [
1008
978
  { type: i0.Component, args: [{
1009
979
  selector: 'vdr-order-custom-fields-card',
1010
- template: "<div class=\"card\" *ngIf=\"customFieldsConfig.length\">\r\n <div class=\"card-header\">\r\n {{ 'common.custom-fields' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text custom-field-form\" [class.editable]=\"editable\">\r\n <ng-container *ngFor=\"let customField of customFieldsConfig\">\r\n <vdr-custom-field-control\r\n entityName=\"Order\"\r\n [customFieldsFormGroup]=\"customFieldForm\"\r\n [compact]=\"true\"\r\n [readonly]=\"customField.readonly || !editable\"\r\n [customField]=\"customField\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"btn btn-sm btn-secondary\" (click)=\"editable = true\" *ngIf=\"!editable\">\r\n <clr-icon shape=\"pencil\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <button\r\n class=\"btn btn-sm btn-primary\"\r\n (click)=\"onUpdateClick()\"\r\n *ngIf=\"editable\"\r\n [disabled]=\"customFieldForm.pristine || customFieldForm.invalid\"\r\n >\r\n <clr-icon shape=\"check\"></clr-icon>\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n",
980
+ template: "<div class=\"card\" *ngIf=\"customFieldsConfig.length\">\r\n <div class=\"card-header\">\r\n {{ 'common.custom-fields' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text custom-field-form\" [class.editable]=\"editable\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Order\"\r\n [customFields]=\"customFieldsConfig\"\r\n [customFieldsFormGroup]=\"customFieldForm\"\r\n [readonly]=\"!editable\"\r\n [compact]=\"true\"\r\n ></vdr-tabbed-custom-fields>\r\n </div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"btn btn-sm btn-secondary\" (click)=\"editable = true\" *ngIf=\"!editable\">\r\n <clr-icon shape=\"pencil\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <button\r\n class=\"btn btn-sm btn-primary\"\r\n (click)=\"onUpdateClick()\"\r\n *ngIf=\"editable\"\r\n [disabled]=\"customFieldForm.pristine || customFieldForm.invalid\"\r\n >\r\n <clr-icon shape=\"check\"></clr-icon>\r\n {{ 'common.update' | translate }}\r\n </button>\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"onCancelClick()\"\r\n *ngIf=\"editable\"\r\n >\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n",
1011
981
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
1012
982
  styles: ["vdr-custom-field-control{margin-bottom:6px;display:block}.custom-field-form ::ng-deep .clr-control-label{color:var(--color-grey-400)}.custom-field-form.editable ::ng-deep .clr-control-label{color:inherit}\n"]
1013
983
  },] }
1014
984
  ];
1015
985
  OrderCustomFieldsCardComponent.ctorParameters = function () { return [
1016
- { type: forms.FormBuilder }
986
+ { type: forms.FormBuilder },
987
+ { type: i1.ModalService }
1017
988
  ]; };
1018
989
  OrderCustomFieldsCardComponent.propDecorators = {
1019
990
  customFieldsConfig: [{ type: i0.Input }],
@@ -1504,28 +1475,72 @@
1504
1475
  OrderDetailComponent.prototype.transitionPaymentState = function (_d) {
1505
1476
  var _this = this;
1506
1477
  var payment = _d.payment, state = _d.state;
1507
- this.dataService.order
1508
- .transitionPaymentToState(payment.id, state)
1509
- .subscribe(function (_d) {
1510
- var transitionPaymentToState = _d.transitionPaymentToState;
1511
- switch (transitionPaymentToState.__typename) {
1512
- case 'Payment':
1513
- _this.notificationService.success(ngxTranslateExtractMarker.marker('order.transitioned-payment-to-state-success'), {
1514
- state: state,
1515
- });
1516
- _this.dataService.order.getOrder(_this.id).single$.subscribe();
1517
- _this.fetchHistory.next();
1518
- break;
1519
- case 'PaymentStateTransitionError':
1520
- _this.notificationService.error(transitionPaymentToState.message);
1521
- break;
1522
- }
1523
- });
1478
+ if (state === 'Cancelled') {
1479
+ this.dataService.order.cancelPayment(payment.id).subscribe(function (_d) {
1480
+ var cancelPayment = _d.cancelPayment;
1481
+ switch (cancelPayment.__typename) {
1482
+ case 'Payment':
1483
+ _this.notificationService.success(ngxTranslateExtractMarker.marker('order.transitioned-payment-to-state-success'), {
1484
+ state: state,
1485
+ });
1486
+ _this.dataService.order.getOrder(_this.id).single$.subscribe();
1487
+ _this.fetchHistory.next();
1488
+ break;
1489
+ case 'PaymentStateTransitionError':
1490
+ _this.notificationService.error(cancelPayment.transitionError);
1491
+ break;
1492
+ case 'CancelPaymentError':
1493
+ _this.notificationService.error(cancelPayment.paymentErrorMessage);
1494
+ break;
1495
+ }
1496
+ });
1497
+ }
1498
+ else {
1499
+ this.dataService.order
1500
+ .transitionPaymentToState(payment.id, state)
1501
+ .subscribe(function (_d) {
1502
+ var transitionPaymentToState = _d.transitionPaymentToState;
1503
+ switch (transitionPaymentToState.__typename) {
1504
+ case 'Payment':
1505
+ _this.notificationService.success(ngxTranslateExtractMarker.marker('order.transitioned-payment-to-state-success'), {
1506
+ state: state,
1507
+ });
1508
+ _this.dataService.order.getOrder(_this.id).single$.subscribe();
1509
+ _this.fetchHistory.next();
1510
+ break;
1511
+ case 'PaymentStateTransitionError':
1512
+ _this.notificationService.error(transitionPaymentToState.message);
1513
+ break;
1514
+ }
1515
+ });
1516
+ }
1524
1517
  };
1525
1518
  OrderDetailComponent.prototype.canAddFulfillment = function (order) {
1526
- var allItemsFulfilled = order.lines
1527
- .reduce(function (items, line) { return __spreadArray(__spreadArray([], __read(items)), __read(line.items)); }, [])
1528
- .every(function (item) { return !!item.fulfillment || item.cancelled; });
1519
+ var e_1, _d;
1520
+ var _a;
1521
+ var allFulfillmentSummaryRows = ((_a = order.fulfillments) !== null && _a !== void 0 ? _a : []).reduce(function (all, fulfillment) { return __spreadArray(__spreadArray([], __read(all)), __read(fulfillment.summary)); }, []);
1522
+ var allItemsFulfilled = true;
1523
+ var _loop_1 = function (line) {
1524
+ var totalFulfilledCount = allFulfillmentSummaryRows
1525
+ .filter(function (row) { return row.orderLine.id === line.id; })
1526
+ .reduce(function (sum, row) { return sum + row.quantity; }, 0);
1527
+ if (totalFulfilledCount < line.quantity) {
1528
+ allItemsFulfilled = false;
1529
+ }
1530
+ };
1531
+ try {
1532
+ for (var _e = __values(order.lines), _f = _e.next(); !_f.done; _f = _e.next()) {
1533
+ var line = _f.value;
1534
+ _loop_1(line);
1535
+ }
1536
+ }
1537
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
1538
+ finally {
1539
+ try {
1540
+ if (_f && !_f.done && (_d = _e.return)) _d.call(_e);
1541
+ }
1542
+ finally { if (e_1) throw e_1.error; }
1543
+ }
1529
1544
  return (!allItemsFulfilled &&
1530
1545
  !this.hasUnsettledModifications(order) &&
1531
1546
  this.outstandingPaymentAmount(order) === 0 &&
@@ -1540,7 +1555,7 @@
1540
1555
  return sharedUtils.summate(order.modifications.filter(function (m) { return !m.isSettled; }), 'priceChange');
1541
1556
  };
1542
1557
  OrderDetailComponent.prototype.outstandingPaymentAmount = function (order) {
1543
- var e_1, _d;
1558
+ var e_2, _d;
1544
1559
  var _a, _b, _c;
1545
1560
  var paymentIsValid = function (p) { return p.state !== 'Cancelled' && p.state !== 'Declined' && p.state !== 'Error'; };
1546
1561
  var amountCovered = 0;
@@ -1552,12 +1567,12 @@
1552
1567
  amountCovered += payment.amount - refundsTotal;
1553
1568
  }
1554
1569
  }
1555
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
1570
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
1556
1571
  finally {
1557
1572
  try {
1558
1573
  if (_f && !_f.done && (_d = _e.return)) _d.call(_e);
1559
1574
  }
1560
- finally { if (e_1) throw e_1.error; }
1575
+ finally { if (e_2) throw e_2.error; }
1561
1576
  }
1562
1577
  return order.totalWithTax - amountCovered;
1563
1578
  };
@@ -2579,6 +2594,7 @@
2579
2594
  _this.serverConfigService = serverConfigService;
2580
2595
  _this.dataService = dataService;
2581
2596
  _this.localStorageService = localStorageService;
2597
+ _this.searchControl = new forms.FormControl('');
2582
2598
  _this.searchOrderCodeControl = new forms.FormControl('');
2583
2599
  _this.searchLastNameControl = new forms.FormControl('');
2584
2600
  _this.orderStates = _this.serverConfigService.getOrderProcessStates().map(function (item) { return item.name; });
@@ -2619,7 +2635,7 @@
2619
2635
  // tslint:disable-next-line:no-shadowed-variable
2620
2636
  function (take, skip) { return _this.dataService.order.getOrders({ take: take, skip: skip }).refetchOnChannelChange(); }, function (data) { return data.orders; },
2621
2637
  // tslint:disable-next-line:no-shadowed-variable
2622
- function (skip, take) { return _this.createQueryOptions(skip, take, _this.searchOrderCodeControl.value, _this.searchLastNameControl.value, _this.route.snapshot.queryParamMap.get('filter') || 'open'); });
2638
+ function (skip, take) { return _this.createQueryOptions(skip, take, _this.searchControl.value, _this.route.snapshot.queryParamMap.get('filter') || 'open'); });
2623
2639
  var lastFilters = _this.localStorageService.get('orderListLastCustomFilters');
2624
2640
  if (lastFilters) {
2625
2641
  _this.setQueryParam(lastFilters, { replaceUrl: true });
@@ -2631,7 +2647,7 @@
2631
2647
  var _a;
2632
2648
  _super.prototype.ngOnInit.call(this);
2633
2649
  this.activePreset$ = this.route.queryParamMap.pipe(operators.map(function (qpm) { return qpm.get('filter') || 'open'; }), operators.distinctUntilChanged());
2634
- var searchTerms$ = rxjs.merge(this.searchOrderCodeControl.valueChanges, this.searchLastNameControl.valueChanges).pipe(operators.filter(function (value) { return 2 < value.length || value.length === 0; }), operators.debounceTime(250));
2650
+ var searchTerms$ = rxjs.merge(this.searchControl.valueChanges).pipe(operators.filter(function (value) { return 2 < value.length || value.length === 0; }), operators.debounceTime(250));
2635
2651
  rxjs.merge(searchTerms$, this.route.queryParamMap)
2636
2652
  .pipe(operators.takeUntil(this.destroy$))
2637
2653
  .subscribe(function (val) {
@@ -2664,11 +2680,12 @@
2664
2680
  };
2665
2681
  OrderListComponent.prototype.createQueryOptions = function (
2666
2682
  // tslint:disable-next-line:no-shadowed-variable
2667
- skip, take, orderCodeSearchTerm, customerNameSearchTerm, activeFilterPreset) {
2683
+ skip, take, searchTerm, activeFilterPreset) {
2668
2684
  var _a;
2669
2685
  var filterConfig = this.filterPresets.find(function (p) { return p.name === activeFilterPreset; });
2670
2686
  // tslint:disable-next-line:no-shadowed-variable
2671
2687
  var filter = {};
2688
+ var filterOperator = i1.LogicalOperator.AND;
2672
2689
  if (filterConfig) {
2673
2690
  if (filterConfig.config.active != null) {
2674
2691
  filter.active = {
@@ -2710,15 +2727,19 @@
2710
2727
  };
2711
2728
  }
2712
2729
  }
2713
- if (customerNameSearchTerm) {
2714
- filter.customerLastName = {
2715
- contains: customerNameSearchTerm,
2716
- };
2717
- }
2718
- if (orderCodeSearchTerm) {
2719
- filter.code = {
2720
- contains: orderCodeSearchTerm,
2730
+ if (searchTerm) {
2731
+ filter = {
2732
+ customerLastName: {
2733
+ contains: searchTerm,
2734
+ },
2735
+ transactionId: {
2736
+ contains: searchTerm,
2737
+ },
2738
+ code: {
2739
+ contains: searchTerm,
2740
+ },
2721
2741
  };
2742
+ filterOperator = i1.LogicalOperator.OR;
2722
2743
  }
2723
2744
  return {
2724
2745
  options: {
@@ -2728,6 +2749,7 @@
2728
2749
  sort: {
2729
2750
  updatedAt: i1.SortOrder.DESC,
2730
2751
  },
2752
+ filterOperator: filterOperator,
2731
2753
  },
2732
2754
  };
2733
2755
  };
@@ -2744,7 +2766,7 @@
2744
2766
  OrderListComponent.decorators = [
2745
2767
  { type: i0.Component, args: [{
2746
2768
  selector: 'vdr-order-list',
2747
- template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"search-form\">\r\n <div class=\"btn-group btn-outline-primary\" *ngIf=\"activePreset$ | async as activePreset\">\r\n <button\r\n class=\"btn\"\r\n *ngFor=\"let preset of filterPresets\"\r\n [class.btn-primary]=\"activePreset === preset.name\"\r\n (click)=\"selectFilterPreset(preset.name)\"\r\n >\r\n {{ preset.label | translate }}\r\n </button>\r\n <button\r\n class=\"btn\"\r\n [class.btn-primary]=\"activePreset === 'custom'\"\r\n (click)=\"selectFilterPreset('custom')\"\r\n >\r\n {{ 'order.filter-custom' | translate }}\r\n <clr-icon shape=\"angle down\"></clr-icon>\r\n </button>\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n name=\"searchTerm\"\r\n [formControl]=\"searchOrderCodeControl\"\r\n [placeholder]=\"'order.search-by-order-code' | translate\"\r\n class=\"search-input\"\r\n />\r\n <input\r\n type=\"text\"\r\n name=\"searchTerm\"\r\n [formControl]=\"searchLastNameControl\"\r\n [placeholder]=\"'order.search-by-customer-last-name' | translate\"\r\n class=\"search-input\"\r\n />\r\n </div>\r\n <div class=\"custom-filters\" [class.expanded]=\"(activePreset$ | async) === 'custom'\">\r\n <form [formGroup]=\"customFilterForm\">\r\n <div class=\"flex align-center\">\r\n <ng-select\r\n [items]=\"orderStates\"\r\n appendTo=\"body\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n formControlName=\"states\"\r\n [placeholder]=\"'state.all-orders' | translate\"\r\n [clearable]=\"true\"\r\n [searchable]=\"false\"\r\n >\r\n <ng-template ng-option-tmp let-item=\"item\">{{ item | stateI18nToken | translate }}</ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\"> {{ item | stateI18nToken | translate }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\u00D7</span>\r\n </ng-template>\r\n </ng-select>\r\n <button\r\n class=\"btn btn-secondary\"\r\n [disabled]=\"customFilterForm.pristine\"\r\n (click)=\"applyCustomFilters()\"\r\n >\r\n {{ 'order.apply-filters' | translate }}\r\n <clr-icon shape=\"filter\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"flex\">\r\n <div>\r\n <label>{{ 'order.placed-at-start' | translate }}</label>\r\n <vdr-datetime-picker formControlName=\"placedAtStart\"></vdr-datetime-picker>\r\n </div>\r\n <div>\r\n <label>{{ 'order.placed-at-end' | translate }}</label>\r\n <vdr-datetime-picker formControlName=\"placedAtEnd\"></vdr-datetime-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"order-list\"></vdr-action-bar-items>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.customer' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.state' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.total' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.updated-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.placed-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.shipping' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-order=\"item\">\r\n <td class=\"left align-middle\">{{ order.code }}</td>\r\n <td class=\"left align-middle\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </td>\r\n <td class=\"left align-middle\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </td>\r\n <td class=\"left align-middle\">{{ order.totalWithTax | localeCurrency: order.currencyCode }}</td>\r\n <td class=\"left align-middle\">{{ order.updatedAt | timeAgo }}</td>\r\n <td class=\"left align-middle\">{{ order.orderPlacedAt | localeDate: 'medium' }}</td>\r\n <td class=\"left align-middle\">{{ getShippingNames(order) }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"shopping-cart\"\r\n [label]=\"'common.open' | translate\"\r\n [linkTo]=\"order.state === 'Modifying' ? ['./', order.id, 'modify'] : ['./', order.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
2769
+ template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <div class=\"search-form\">\r\n <div class=\"btn-group btn-outline-primary\" *ngIf=\"activePreset$ | async as activePreset\">\r\n <button\r\n class=\"btn\"\r\n *ngFor=\"let preset of filterPresets\"\r\n [class.btn-primary]=\"activePreset === preset.name\"\r\n (click)=\"selectFilterPreset(preset.name)\"\r\n >\r\n {{ preset.label | translate }}\r\n </button>\r\n <button\r\n class=\"btn\"\r\n [class.btn-primary]=\"activePreset === 'custom'\"\r\n (click)=\"selectFilterPreset('custom')\"\r\n >\r\n {{ 'order.filter-custom' | translate }}\r\n <clr-icon shape=\"angle down\"></clr-icon>\r\n </button>\r\n </div>\r\n <input\r\n type=\"text\"\r\n name=\"searchTerm\"\r\n [formControl]=\"searchControl\"\r\n [placeholder]=\"'order.search-by-order-filters' | translate\"\r\n class=\"search-input\"\r\n />\r\n </div>\r\n <div class=\"custom-filters\" [class.expanded]=\"(activePreset$ | async) === 'custom'\">\r\n <form [formGroup]=\"customFilterForm\">\r\n <div class=\"flex align-center\">\r\n <ng-select\r\n [items]=\"orderStates\"\r\n appendTo=\"body\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n formControlName=\"states\"\r\n [placeholder]=\"'state.all-orders' | translate\"\r\n [clearable]=\"true\"\r\n [searchable]=\"false\"\r\n >\r\n <ng-template ng-option-tmp let-item=\"item\">{{ item | stateI18nToken | translate }}</ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\"> {{ item | stateI18nToken | translate }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\u00D7</span>\r\n </ng-template>\r\n </ng-select>\r\n <button\r\n class=\"btn btn-secondary\"\r\n [disabled]=\"customFilterForm.pristine\"\r\n (click)=\"applyCustomFilters()\"\r\n >\r\n {{ 'order.apply-filters' | translate }}\r\n <clr-icon shape=\"filter\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"flex\">\r\n <div>\r\n <label>{{ 'order.placed-at-start' | translate }}</label>\r\n <vdr-datetime-picker formControlName=\"placedAtStart\"></vdr-datetime-picker>\r\n </div>\r\n <div>\r\n <label>{{ 'order.placed-at-end' | translate }}</label>\r\n <vdr-datetime-picker formControlName=\"placedAtEnd\"></vdr-datetime-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"order-list\"></vdr-action-bar-items>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <vdr-dt-column>{{ 'common.code' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.customer' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.state' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.total' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'common.updated-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.placed-at' | translate }}</vdr-dt-column>\r\n <vdr-dt-column>{{ 'order.shipping' | translate }}</vdr-dt-column>\r\n <vdr-dt-column></vdr-dt-column>\r\n <ng-template let-order=\"item\">\r\n <td class=\"left align-middle\">{{ order.code }}</td>\r\n <td class=\"left align-middle\">\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n </td>\r\n <td class=\"left align-middle\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </td>\r\n <td class=\"left align-middle\">{{ order.totalWithTax | localeCurrency: order.currencyCode }}</td>\r\n <td class=\"left align-middle\">{{ order.updatedAt | timeAgo }}</td>\r\n <td class=\"left align-middle\">{{ order.orderPlacedAt | localeDate: 'medium' }}</td>\r\n <td class=\"left align-middle\">{{ getShippingNames(order) }}</td>\r\n <td class=\"right align-middle\">\r\n <vdr-table-row-action\r\n iconShape=\"shopping-cart\"\r\n [label]=\"'common.open' | translate\"\r\n [linkTo]=\"order.state === 'Modifying' ? ['./', order.id, 'modify'] : ['./', order.id]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
2748
2770
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
2749
2771
  styles: [".search-form{display:flex;flex-direction:column;align-items:baseline;width:100%;margin-bottom:6px}@media screen and (min-width: 768px){.search-form{flex-direction:row}}.search-input{margin-left:6px;margin-top:6px;min-width:300px}.custom-filters{overflow:hidden;max-height:0;padding-bottom:6px}.custom-filters.expanded{max-height:initial}.custom-filters>form{display:flex;flex-direction:column;align-items:center}.custom-filters>form>div{width:100%}ng-select{flex:1;min-width:200px;height:36px}ng-select ::ng-deep .ng-select-container{height:36px}\n"]
2750
2772
  },] }
@@ -2770,7 +2792,7 @@
2770
2792
  if (!this.payment) {
2771
2793
  return [];
2772
2794
  }
2773
- return this.payment.nextStates.filter(function (s) { return s !== 'Settled'; });
2795
+ return this.payment.nextStates.filter(function (s) { return s !== 'Settled' && s !== 'Error'; });
2774
2796
  };
2775
2797
  return OrderPaymentCardComponent;
2776
2798
  }());