@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.
- package/bundles/vendure-admin-ui-catalog.umd.js +196 -20
- package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-core.umd.js +292 -323
- package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-customer.umd.js +39 -18
- package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-order.umd.js +141 -119
- package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
- package/catalog/components/generate-product-variants/generate-product-variants.component.d.ts +3 -3
- package/catalog/components/option-value-input/option-value-input.component.d.ts +20 -8
- package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +10 -3
- package/catalog/vendure-admin-ui-catalog.metadata.json +1 -1
- package/core/common/generated-types.d.ts +89 -19
- package/core/common/utilities/configurable-operation-utils.d.ts +4 -2
- package/core/common/version.d.ts +1 -1
- package/core/data/definitions/order-definitions.d.ts +2 -0
- package/core/data/definitions/product-definitions.d.ts +1 -0
- package/core/data/providers/order-data.service.d.ts +1 -0
- package/core/data/providers/product-data.service.d.ts +1 -0
- package/core/shared/components/custom-field-control/custom-field-control.component.d.ts +6 -2
- package/core/shared/components/data-table/data-table.component.d.ts +5 -2
- package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +2 -1
- package/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +10 -2
- package/core/shared/pipes/custom-field-label.pipe.d.ts +4 -10
- package/core/vendure-admin-ui-core.metadata.json +1 -1
- package/customer/components/customer-group-list/customer-group-list.component.d.ts +6 -4
- package/customer/vendure-admin-ui-customer.metadata.json +1 -1
- package/esm2015/catalog/components/generate-product-variants/generate-product-variants.component.js +12 -5
- package/esm2015/catalog/components/option-value-input/option-value-input.component.js +62 -12
- package/esm2015/catalog/components/product-variants-editor/product-variants-editor.component.js +109 -11
- package/esm2015/core/common/generated-types.js +2 -1
- package/esm2015/core/common/introspection-result.js +191 -255
- package/esm2015/core/common/utilities/configurable-operation-utils.js +11 -8
- package/esm2015/core/common/version.js +2 -2
- package/esm2015/core/components/app-shell/app-shell.component.js +1 -1
- package/esm2015/core/components/main-nav/main-nav.component.js +1 -1
- package/esm2015/core/data/definitions/order-definitions.js +39 -25
- package/esm2015/core/data/definitions/product-definitions.js +743 -735
- package/esm2015/core/data/providers/order-data.service.js +7 -2
- package/esm2015/core/data/providers/product-data.service.js +5 -2
- package/esm2015/core/shared/components/custom-field-control/custom-field-control.component.js +9 -3
- package/esm2015/core/shared/components/data-table/data-table.component.js +9 -2
- package/esm2015/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.js +15 -2
- package/esm2015/core/shared/pipes/custom-field-label.pipe.js +4 -19
- package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +25 -12
- package/esm2015/order/components/fulfill-order-dialog/fulfill-order-dialog.component.js +3 -2
- package/esm2015/order/components/fulfillment-detail/fulfillment-detail.component.js +9 -18
- package/esm2015/order/components/line-fulfillment/line-fulfillment.component.js +10 -21
- package/esm2015/order/components/order-custom-fields-card/order-custom-fields-card.component.js +30 -4
- package/esm2015/order/components/order-detail/order-detail.component.js +49 -20
- package/esm2015/order/components/order-list/order-list.component.js +22 -15
- package/esm2015/order/components/order-payment-card/order-payment-card.component.js +2 -2
- package/esm2015/order/components/order-table/order-table.component.js +1 -1
- package/fesm2015/vendure-admin-ui-catalog.js +177 -22
- package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
- package/fesm2015/vendure-admin-ui-core.js +975 -995
- package/fesm2015/vendure-admin-ui-core.js.map +1 -1
- package/fesm2015/vendure-admin-ui-customer.js +23 -11
- package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
- package/fesm2015/vendure-admin-ui-order.js +116 -75
- package/fesm2015/vendure-admin-ui-order.js.map +1 -1
- package/order/components/line-fulfillment/line-fulfillment.component.d.ts +2 -2
- package/order/components/modification-detail/modification-detail.component.d.ts +1 -1
- package/order/components/order-custom-fields-card/order-custom-fields-card.component.d.ts +4 -2
- package/order/components/order-list/order-list.component.d.ts +1 -0
- package/order/vendure-admin-ui-order.metadata.json +1 -1
- package/package.json +2 -2
- package/static/i18n-messages/cs.json +6 -2
- package/static/i18n-messages/de.json +6 -2
- package/static/i18n-messages/en.json +8 -3
- package/static/i18n-messages/es.json +6 -2
- package/static/i18n-messages/fr.json +6 -2
- package/static/i18n-messages/it.json +6 -2
- package/static/i18n-messages/pl.json +6 -2
- package/static/i18n-messages/pt_BR.json +6 -2
- package/static/i18n-messages/pt_PT.json +6 -2
- package/static/i18n-messages/ru.json +6 -2
- package/static/i18n-messages/uk.json +6 -2
- package/static/i18n-messages/zh_Hans.json +6 -2
- package/static/i18n-messages/zh_Hant.json +6 -2
- package/static/styles/_variables.scss +3 -0
- package/static/styles/global/_sass-overrides.scss +3 -0
- package/static/styles/global/_utilities.scss +1 -0
- package/static/styles/styles.scss +1 -0
- package/static/styles/ui-extension-theme.scss +1 -0
- package/static/theme.min.css +1 -1
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Component, ChangeDetectionStrategy, ChangeDetectorRef, EventEmitter, Input, Output, Injectable, ElementRef, ViewChildren, HostBinding, NgModule } from '@angular/core';
|
|
3
3
|
import { FormGroup, FormControl, Validators, FormBuilder, FormArray } from '@angular/forms';
|
|
4
4
|
import * as i1 from '@vendure/admin-ui/core';
|
|
5
|
-
import { DataService, getAppConfig, I18nService, configurableDefinitionToInstance, GlobalFlag, configurableOperationValueIsValid, toConfigurableOperationInput, ServerConfigService, HistoryEntryType, SortOrder,
|
|
5
|
+
import { DataService, getAppConfig, I18nService, configurableDefinitionToInstance, GlobalFlag, configurableOperationValueIsValid, toConfigurableOperationInput, ServerConfigService, ModalService, HistoryEntryType, SortOrder, NotificationService, BaseDetailComponent, EditNoteDialogComponent, BaseListComponent, LogicalOperator, LocalStorageService, AdjustmentType, BaseEntityResolver, createResolveData, CanDeactivateDetailGuard, detailBreadcrumb, SharedModule } from '@vendure/admin-ui/core';
|
|
6
6
|
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';
|
|
@@ -158,7 +158,8 @@ class FulfillOrderDialogComponent {
|
|
|
158
158
|
return effectiveTracInventory ? Math.min(unfulfilledCount, stockOnHand) : unfulfilledCount;
|
|
159
159
|
}
|
|
160
160
|
getUnfulfilledCount(line) {
|
|
161
|
-
|
|
161
|
+
var _a, _b;
|
|
162
|
+
const fulfilled = (_b = (_a = line.fulfillments) === null || _a === void 0 ? void 0 : _a.map(f => f.summary).flat().filter(row => row.orderLine.id === line.id).reduce((sum, row) => sum + row.quantity, 0)) !== null && _b !== void 0 ? _b : 0;
|
|
162
163
|
return line.quantity - fulfilled;
|
|
163
164
|
}
|
|
164
165
|
canSubmit() {
|
|
@@ -251,23 +252,14 @@ class FulfillmentDetailComponent {
|
|
|
251
252
|
return this.order.fulfillments && this.order.fulfillments.find(f => f.id === this.fulfillmentId);
|
|
252
253
|
}
|
|
253
254
|
get items() {
|
|
254
|
-
var _a;
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
itemMap.set(line.productVariant.name, count + 1);
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
itemMap.set(line.productVariant.name, 1);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
return Array.from(itemMap.entries()).map(([name, quantity]) => ({ name, quantity }));
|
|
255
|
+
var _a, _b;
|
|
256
|
+
return ((_b = (_a = this.fulfillment) === null || _a === void 0 ? void 0 : _a.summary.map(row => {
|
|
257
|
+
var _a, _b;
|
|
258
|
+
return {
|
|
259
|
+
name: (_b = (_a = this.order.lines.find(line => line.id === row.orderLine.id)) === null || _a === void 0 ? void 0 : _a.productVariant.name) !== null && _b !== void 0 ? _b : '',
|
|
260
|
+
quantity: row.quantity,
|
|
261
|
+
};
|
|
262
|
+
})) !== null && _b !== void 0 ? _b : []);
|
|
271
263
|
}
|
|
272
264
|
buildCustomFieldsFormGroup() {
|
|
273
265
|
const customFields = this.fulfillment.customFields;
|
|
@@ -336,7 +328,8 @@ class LineFulfillmentComponent {
|
|
|
336
328
|
* Returns the number of items in an OrderLine which are fulfilled.
|
|
337
329
|
*/
|
|
338
330
|
getDeliveredCount(line) {
|
|
339
|
-
|
|
331
|
+
var _a, _b;
|
|
332
|
+
return ((_b = (_a = line.fulfillments) === null || _a === void 0 ? void 0 : _a.reduce((sum, fulfillment) => { var _a, _b; return sum + ((_b = (_a = fulfillment.summary.find(s => 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);
|
|
340
333
|
}
|
|
341
334
|
getFulfillmentStatus(fulfilledCount, lineQuantity) {
|
|
342
335
|
if (fulfilledCount === lineQuantity) {
|
|
@@ -348,27 +341,15 @@ class LineFulfillmentComponent {
|
|
|
348
341
|
return 'none';
|
|
349
342
|
}
|
|
350
343
|
getFulfillments(line) {
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
counts[item.fulfillment.id] = 1;
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
counts[item.fulfillment.id]++;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
const all = line.items.reduce((fulfillments, item) => {
|
|
363
|
-
return item.fulfillment ? [...fulfillments, item.fulfillment] : fulfillments;
|
|
364
|
-
}, []);
|
|
365
|
-
return Object.entries(counts).map(([id, count]) => {
|
|
344
|
+
var _a, _b;
|
|
345
|
+
return ((_b = (_a = line.fulfillments) === null || _a === void 0 ? void 0 : _a.map(fulfillment => {
|
|
346
|
+
var _a;
|
|
347
|
+
const summaryLine = fulfillment.summary.find(s => s.orderLine.id === line.id);
|
|
366
348
|
return {
|
|
367
|
-
count,
|
|
368
|
-
|
|
369
|
-
fulfillment: all.find(f => f.id === id),
|
|
349
|
+
count: (_a = summaryLine === null || summaryLine === void 0 ? void 0 : summaryLine.quantity) !== null && _a !== void 0 ? _a : 0,
|
|
350
|
+
fulfillment,
|
|
370
351
|
};
|
|
371
|
-
});
|
|
352
|
+
})) !== null && _b !== void 0 ? _b : []);
|
|
372
353
|
}
|
|
373
354
|
}
|
|
374
355
|
LineFulfillmentComponent.decorators = [
|
|
@@ -484,8 +465,9 @@ ModificationDetailComponent.propDecorators = {
|
|
|
484
465
|
};
|
|
485
466
|
|
|
486
467
|
class OrderCustomFieldsCardComponent {
|
|
487
|
-
constructor(formBuilder) {
|
|
468
|
+
constructor(formBuilder, modalService) {
|
|
488
469
|
this.formBuilder = formBuilder;
|
|
470
|
+
this.modalService = modalService;
|
|
489
471
|
this.customFieldsConfig = [];
|
|
490
472
|
this.customFieldValues = {};
|
|
491
473
|
this.updateClick = new EventEmitter();
|
|
@@ -502,17 +484,40 @@ class OrderCustomFieldsCardComponent {
|
|
|
502
484
|
this.customFieldForm.markAsPristine();
|
|
503
485
|
this.editable = false;
|
|
504
486
|
}
|
|
487
|
+
onCancelClick() {
|
|
488
|
+
if (this.customFieldForm.dirty) {
|
|
489
|
+
this.modalService
|
|
490
|
+
.dialog({
|
|
491
|
+
title: marker('catalog.confirm-cancel'),
|
|
492
|
+
buttons: [
|
|
493
|
+
{ type: 'secondary', label: marker('common.keep-editing') },
|
|
494
|
+
{ type: 'danger', label: marker('common.discard-changes'), returnValue: true },
|
|
495
|
+
],
|
|
496
|
+
})
|
|
497
|
+
.subscribe(result => {
|
|
498
|
+
if (result) {
|
|
499
|
+
this.customFieldForm.reset();
|
|
500
|
+
this.customFieldForm.markAsPristine();
|
|
501
|
+
this.editable = false;
|
|
502
|
+
}
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
else {
|
|
506
|
+
this.editable = false;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
505
509
|
}
|
|
506
510
|
OrderCustomFieldsCardComponent.decorators = [
|
|
507
511
|
{ type: Component, args: [{
|
|
508
512
|
selector: 'vdr-order-custom-fields-card',
|
|
509
|
-
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 <
|
|
513
|
+
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",
|
|
510
514
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
511
515
|
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"]
|
|
512
516
|
},] }
|
|
513
517
|
];
|
|
514
518
|
OrderCustomFieldsCardComponent.ctorParameters = () => [
|
|
515
|
-
{ type: FormBuilder }
|
|
519
|
+
{ type: FormBuilder },
|
|
520
|
+
{ type: ModalService }
|
|
516
521
|
];
|
|
517
522
|
OrderCustomFieldsCardComponent.propDecorators = {
|
|
518
523
|
customFieldsConfig: [{ type: Input }],
|
|
@@ -964,27 +969,56 @@ class OrderDetailComponent extends BaseDetailComponent {
|
|
|
964
969
|
});
|
|
965
970
|
}
|
|
966
971
|
transitionPaymentState({ payment, state }) {
|
|
967
|
-
|
|
968
|
-
.
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
972
|
+
if (state === 'Cancelled') {
|
|
973
|
+
this.dataService.order.cancelPayment(payment.id).subscribe(({ cancelPayment }) => {
|
|
974
|
+
switch (cancelPayment.__typename) {
|
|
975
|
+
case 'Payment':
|
|
976
|
+
this.notificationService.success(marker('order.transitioned-payment-to-state-success'), {
|
|
977
|
+
state,
|
|
978
|
+
});
|
|
979
|
+
this.dataService.order.getOrder(this.id).single$.subscribe();
|
|
980
|
+
this.fetchHistory.next();
|
|
981
|
+
break;
|
|
982
|
+
case 'PaymentStateTransitionError':
|
|
983
|
+
this.notificationService.error(cancelPayment.transitionError);
|
|
984
|
+
break;
|
|
985
|
+
case 'CancelPaymentError':
|
|
986
|
+
this.notificationService.error(cancelPayment.paymentErrorMessage);
|
|
987
|
+
break;
|
|
988
|
+
}
|
|
989
|
+
});
|
|
990
|
+
}
|
|
991
|
+
else {
|
|
992
|
+
this.dataService.order
|
|
993
|
+
.transitionPaymentToState(payment.id, state)
|
|
994
|
+
.subscribe(({ transitionPaymentToState }) => {
|
|
995
|
+
switch (transitionPaymentToState.__typename) {
|
|
996
|
+
case 'Payment':
|
|
997
|
+
this.notificationService.success(marker('order.transitioned-payment-to-state-success'), {
|
|
998
|
+
state,
|
|
999
|
+
});
|
|
1000
|
+
this.dataService.order.getOrder(this.id).single$.subscribe();
|
|
1001
|
+
this.fetchHistory.next();
|
|
1002
|
+
break;
|
|
1003
|
+
case 'PaymentStateTransitionError':
|
|
1004
|
+
this.notificationService.error(transitionPaymentToState.message);
|
|
1005
|
+
break;
|
|
1006
|
+
}
|
|
1007
|
+
});
|
|
1008
|
+
}
|
|
983
1009
|
}
|
|
984
1010
|
canAddFulfillment(order) {
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
1011
|
+
var _a;
|
|
1012
|
+
const allFulfillmentSummaryRows = ((_a = order.fulfillments) !== null && _a !== void 0 ? _a : []).reduce((all, fulfillment) => [...all, ...fulfillment.summary], []);
|
|
1013
|
+
let allItemsFulfilled = true;
|
|
1014
|
+
for (const line of order.lines) {
|
|
1015
|
+
const totalFulfilledCount = allFulfillmentSummaryRows
|
|
1016
|
+
.filter(row => row.orderLine.id === line.id)
|
|
1017
|
+
.reduce((sum, row) => sum + row.quantity, 0);
|
|
1018
|
+
if (totalFulfilledCount < line.quantity) {
|
|
1019
|
+
allItemsFulfilled = false;
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
988
1022
|
return (!allItemsFulfilled &&
|
|
989
1023
|
!this.hasUnsettledModifications(order) &&
|
|
990
1024
|
this.outstandingPaymentAmount(order) === 0 &&
|
|
@@ -1908,6 +1942,7 @@ class OrderListComponent extends BaseListComponent {
|
|
|
1908
1942
|
this.serverConfigService = serverConfigService;
|
|
1909
1943
|
this.dataService = dataService;
|
|
1910
1944
|
this.localStorageService = localStorageService;
|
|
1945
|
+
this.searchControl = new FormControl('');
|
|
1911
1946
|
this.searchOrderCodeControl = new FormControl('');
|
|
1912
1947
|
this.searchLastNameControl = new FormControl('');
|
|
1913
1948
|
this.orderStates = this.serverConfigService.getOrderProcessStates().map(item => item.name);
|
|
@@ -1948,7 +1983,7 @@ class OrderListComponent extends BaseListComponent {
|
|
|
1948
1983
|
// tslint:disable-next-line:no-shadowed-variable
|
|
1949
1984
|
(take, skip) => this.dataService.order.getOrders({ take, skip }).refetchOnChannelChange(), data => data.orders,
|
|
1950
1985
|
// tslint:disable-next-line:no-shadowed-variable
|
|
1951
|
-
(skip, take) => this.createQueryOptions(skip, take, this.
|
|
1986
|
+
(skip, take) => this.createQueryOptions(skip, take, this.searchControl.value, this.route.snapshot.queryParamMap.get('filter') || 'open'));
|
|
1952
1987
|
const lastFilters = this.localStorageService.get('orderListLastCustomFilters');
|
|
1953
1988
|
if (lastFilters) {
|
|
1954
1989
|
this.setQueryParam(lastFilters, { replaceUrl: true });
|
|
@@ -1958,7 +1993,7 @@ class OrderListComponent extends BaseListComponent {
|
|
|
1958
1993
|
var _a;
|
|
1959
1994
|
super.ngOnInit();
|
|
1960
1995
|
this.activePreset$ = this.route.queryParamMap.pipe(map(qpm => qpm.get('filter') || 'open'), distinctUntilChanged());
|
|
1961
|
-
const searchTerms$ = merge(this.
|
|
1996
|
+
const searchTerms$ = merge(this.searchControl.valueChanges).pipe(filter(value => 2 < value.length || value.length === 0), debounceTime(250));
|
|
1962
1997
|
merge(searchTerms$, this.route.queryParamMap)
|
|
1963
1998
|
.pipe(takeUntil(this.destroy$))
|
|
1964
1999
|
.subscribe(val => {
|
|
@@ -1991,11 +2026,12 @@ class OrderListComponent extends BaseListComponent {
|
|
|
1991
2026
|
}
|
|
1992
2027
|
createQueryOptions(
|
|
1993
2028
|
// tslint:disable-next-line:no-shadowed-variable
|
|
1994
|
-
skip, take,
|
|
2029
|
+
skip, take, searchTerm, activeFilterPreset) {
|
|
1995
2030
|
var _a;
|
|
1996
2031
|
const filterConfig = this.filterPresets.find(p => p.name === activeFilterPreset);
|
|
1997
2032
|
// tslint:disable-next-line:no-shadowed-variable
|
|
1998
|
-
|
|
2033
|
+
let filter = {};
|
|
2034
|
+
let filterOperator = LogicalOperator.AND;
|
|
1999
2035
|
if (filterConfig) {
|
|
2000
2036
|
if (filterConfig.config.active != null) {
|
|
2001
2037
|
filter.active = {
|
|
@@ -2037,15 +2073,19 @@ class OrderListComponent extends BaseListComponent {
|
|
|
2037
2073
|
};
|
|
2038
2074
|
}
|
|
2039
2075
|
}
|
|
2040
|
-
if (
|
|
2041
|
-
filter
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2076
|
+
if (searchTerm) {
|
|
2077
|
+
filter = {
|
|
2078
|
+
customerLastName: {
|
|
2079
|
+
contains: searchTerm,
|
|
2080
|
+
},
|
|
2081
|
+
transactionId: {
|
|
2082
|
+
contains: searchTerm,
|
|
2083
|
+
},
|
|
2084
|
+
code: {
|
|
2085
|
+
contains: searchTerm,
|
|
2086
|
+
},
|
|
2048
2087
|
};
|
|
2088
|
+
filterOperator = LogicalOperator.OR;
|
|
2049
2089
|
}
|
|
2050
2090
|
return {
|
|
2051
2091
|
options: {
|
|
@@ -2055,6 +2095,7 @@ class OrderListComponent extends BaseListComponent {
|
|
|
2055
2095
|
sort: {
|
|
2056
2096
|
updatedAt: SortOrder.DESC,
|
|
2057
2097
|
},
|
|
2098
|
+
filterOperator,
|
|
2058
2099
|
},
|
|
2059
2100
|
};
|
|
2060
2101
|
}
|
|
@@ -2070,7 +2111,7 @@ class OrderListComponent extends BaseListComponent {
|
|
|
2070
2111
|
OrderListComponent.decorators = [
|
|
2071
2112
|
{ type: Component, args: [{
|
|
2072
2113
|
selector: 'vdr-order-list',
|
|
2073
|
-
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
|
|
2114
|
+
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",
|
|
2074
2115
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2075
2116
|
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"]
|
|
2076
2117
|
},] }
|
|
@@ -2096,7 +2137,7 @@ class OrderPaymentCardComponent {
|
|
|
2096
2137
|
if (!this.payment) {
|
|
2097
2138
|
return [];
|
|
2098
2139
|
}
|
|
2099
|
-
return this.payment.nextStates.filter(s => s !== 'Settled');
|
|
2140
|
+
return this.payment.nextStates.filter(s => s !== 'Settled' && s !== 'Error');
|
|
2100
2141
|
}
|
|
2101
2142
|
}
|
|
2102
2143
|
OrderPaymentCardComponent.decorators = [
|