@vendure/admin-ui 1.4.3 → 1.4.7
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 +68 -28
- package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-core.umd.js +101 -40
- package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-dashboard.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-settings.umd.js +1 -1
- package/bundles/vendure-admin-ui-settings.umd.js.map +1 -1
- package/catalog/components/facet-detail/facet-detail.component.d.ts +7 -2
- package/catalog/vendure-admin-ui-catalog.metadata.json +1 -1
- package/core/common/generated-types.d.ts +7 -7
- package/core/common/version.d.ts +1 -1
- package/core/data/utils/remove-readonly-custom-fields.d.ts +12 -3
- package/core/providers/i18n/i18n.service.d.ts +3 -1
- package/core/shared/directives/if-default-channel-active.directive.d.ts +1 -1
- package/core/shared/directives/if-multichannel.directive.d.ts +1 -1
- package/core/shared/pipes/locale-base.pipe.d.ts +5 -0
- package/core/vendure-admin-ui-core.metadata.json +1 -1
- package/esm2015/catalog/components/facet-detail/facet-detail.component.js +44 -16
- package/esm2015/catalog/components/product-list/product-list.component.js +2 -2
- package/esm2015/core/common/base-detail.component.js +4 -4
- package/esm2015/core/common/generated-types.js +1 -1
- package/esm2015/core/common/introspection-result.js +1 -1
- package/esm2015/core/common/utilities/create-updated-translatable.js +1 -1
- package/esm2015/core/common/version.js +2 -2
- package/esm2015/core/components/main-nav/main-nav.component.js +3 -3
- package/esm2015/core/data/utils/remove-readonly-custom-fields.js +15 -3
- package/esm2015/core/providers/i18n/i18n.service.js +14 -5
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.js +2 -2
- package/esm2015/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.js +3 -2
- package/esm2015/core/shared/directives/if-default-channel-active.directive.js +2 -2
- package/esm2015/core/shared/directives/if-multichannel.directive.js +2 -2
- package/esm2015/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.js +2 -2
- package/esm2015/core/shared/pipes/asset-preview.pipe.js +2 -2
- package/esm2015/core/shared/pipes/locale-base.pipe.js +23 -1
- package/esm2015/core/shared/pipes/locale-currency-name.pipe.js +4 -4
- package/esm2015/core/shared/pipes/locale-currency.pipe.js +2 -2
- package/esm2015/core/shared/pipes/locale-date.pipe.js +2 -2
- package/esm2015/core/shared/pipes/locale-language-name.pipe.js +2 -3
- package/esm2015/core/shared/pipes/locale-region-name.pipe.js +2 -3
- package/esm2015/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.js +1 -1
- package/esm2015/settings/components/channel-list/channel-list.component.js +2 -2
- package/fesm2015/vendure-admin-ui-catalog.js +44 -16
- package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
- package/fesm2015/vendure-admin-ui-core.js +66 -26
- package/fesm2015/vendure-admin-ui-core.js.map +1 -1
- package/fesm2015/vendure-admin-ui-dashboard.js.map +1 -1
- package/fesm2015/vendure-admin-ui-settings.js +1 -1
- package/fesm2015/vendure-admin-ui-settings.js.map +1 -1
- package/package.json +11 -11
- package/settings/vendure-admin-ui-settings.metadata.json +1 -1
- package/static/i18n-messages/pt_PT.json +22 -22
|
@@ -915,8 +915,8 @@
|
|
|
915
915
|
name: '',
|
|
916
916
|
visible: true,
|
|
917
917
|
customFields: _this.formBuilder.group(_this.customFields.reduce(function (hash, field) {
|
|
918
|
-
var
|
|
919
|
-
return (Object.assign(Object.assign({}, hash), (
|
|
918
|
+
var _d;
|
|
919
|
+
return (Object.assign(Object.assign({}, hash), (_d = {}, _d[field.name] = '', _d)));
|
|
920
920
|
}, {})),
|
|
921
921
|
}),
|
|
922
922
|
values: _this.formBuilder.array([]),
|
|
@@ -952,14 +952,36 @@
|
|
|
952
952
|
return this.detailForm.get('values');
|
|
953
953
|
};
|
|
954
954
|
FacetDetailComponent.prototype.addFacetValue = function () {
|
|
955
|
+
var e_1, _d;
|
|
955
956
|
var valuesFormArray = this.detailForm.get('values');
|
|
956
957
|
if (valuesFormArray) {
|
|
957
|
-
|
|
958
|
+
var valueGroup = this.formBuilder.group({
|
|
958
959
|
id: '',
|
|
959
960
|
name: ['', forms.Validators.required],
|
|
960
961
|
code: '',
|
|
961
|
-
})
|
|
962
|
-
|
|
962
|
+
});
|
|
963
|
+
var newValue = { name: '', code: '' };
|
|
964
|
+
if (this.customValueFields.length) {
|
|
965
|
+
var customValueFieldsGroup = new forms.FormGroup({});
|
|
966
|
+
newValue.customFields = {};
|
|
967
|
+
try {
|
|
968
|
+
for (var _e = __values(this.customValueFields), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
969
|
+
var fieldDef = _f.value;
|
|
970
|
+
var key = fieldDef.name;
|
|
971
|
+
customValueFieldsGroup.addControl(key, new forms.FormControl());
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
975
|
+
finally {
|
|
976
|
+
try {
|
|
977
|
+
if (_f && !_f.done && (_d = _e.return)) _d.call(_e);
|
|
978
|
+
}
|
|
979
|
+
finally { if (e_1) throw e_1.error; }
|
|
980
|
+
}
|
|
981
|
+
valueGroup.addControl('customFields', customValueFieldsGroup);
|
|
982
|
+
}
|
|
983
|
+
valuesFormArray.insert(valuesFormArray.length, valueGroup);
|
|
984
|
+
this.values.push(newValue);
|
|
963
985
|
}
|
|
964
986
|
};
|
|
965
987
|
FacetDetailComponent.prototype.create = function () {
|
|
@@ -969,8 +991,8 @@
|
|
|
969
991
|
return;
|
|
970
992
|
}
|
|
971
993
|
rxjs.combineLatest(this.entity$, this.languageCode$)
|
|
972
|
-
.pipe(operators.take(1), operators.mergeMap(function (
|
|
973
|
-
var
|
|
994
|
+
.pipe(operators.take(1), operators.mergeMap(function (_d) {
|
|
995
|
+
var _e = __read(_d, 2), facet = _e[0], languageCode = _e[1];
|
|
974
996
|
var newFacet = _this.getUpdatedFacet(facet, facetForm, languageCode);
|
|
975
997
|
return _this.dataService.facet.createFacet(newFacet);
|
|
976
998
|
}), operators.switchMap(function (data) { return _this.dataService.facet.getAllFacets().single$.pipe(operators.mapTo(data)); }))
|
|
@@ -988,8 +1010,8 @@
|
|
|
988
1010
|
FacetDetailComponent.prototype.save = function () {
|
|
989
1011
|
var _this = this;
|
|
990
1012
|
rxjs.combineLatest(this.entity$, this.languageCode$)
|
|
991
|
-
.pipe(operators.take(1), operators.mergeMap(function (
|
|
992
|
-
var
|
|
1013
|
+
.pipe(operators.take(1), operators.mergeMap(function (_d) {
|
|
1014
|
+
var _e = __read(_d, 2), facet = _e[0], languageCode = _e[1];
|
|
993
1015
|
var facetGroup = _this.detailForm.get('facet');
|
|
994
1016
|
var updateOperations = [];
|
|
995
1017
|
if (facetGroup && facetGroup.dirty) {
|
|
@@ -1000,16 +1022,10 @@
|
|
|
1000
1022
|
}
|
|
1001
1023
|
var valuesArray = _this.detailForm.get('values');
|
|
1002
1024
|
if (valuesArray && valuesArray.dirty) {
|
|
1003
|
-
var
|
|
1004
|
-
|
|
1005
|
-
.map(function (c) { return ({
|
|
1006
|
-
facetId: facet.id,
|
|
1007
|
-
code: c.value.code,
|
|
1008
|
-
translations: [{ name: c.value.name, languageCode: languageCode }],
|
|
1009
|
-
}); });
|
|
1010
|
-
if (newValues.length) {
|
|
1025
|
+
var createdValues = _this.getCreatedFacetValues(facet, valuesArray, languageCode);
|
|
1026
|
+
if (createdValues.length) {
|
|
1011
1027
|
updateOperations.push(_this.dataService.facet
|
|
1012
|
-
.createFacetValues(
|
|
1028
|
+
.createFacetValues(createdValues)
|
|
1013
1029
|
.pipe(operators.switchMap(function () { return _this.dataService.facet.getFacet(_this.id).single$; })));
|
|
1014
1030
|
}
|
|
1015
1031
|
var updatedValues = _this.getUpdatedFacetValues(facet, valuesArray, languageCode);
|
|
@@ -1093,7 +1109,8 @@
|
|
|
1093
1109
|
var currentValuesFormArray = this.detailForm.get('values');
|
|
1094
1110
|
this.values = __spreadArray([], __read(facet.values));
|
|
1095
1111
|
facet.values.forEach(function (value, i) {
|
|
1096
|
-
var
|
|
1112
|
+
var e_2, _d;
|
|
1113
|
+
var _a, _b, _c;
|
|
1097
1114
|
var valueTranslation = i2.findTranslation(value, languageCode);
|
|
1098
1115
|
var group = {
|
|
1099
1116
|
id: value.id,
|
|
@@ -1102,7 +1119,9 @@
|
|
|
1102
1119
|
};
|
|
1103
1120
|
var valueControl = currentValuesFormArray.at(i);
|
|
1104
1121
|
if (valueControl) {
|
|
1105
|
-
valueControl.setValue(group);
|
|
1122
|
+
(_a = valueControl.get('id')) === null || _a === void 0 ? void 0 : _a.setValue(group.id);
|
|
1123
|
+
(_b = valueControl.get('code')) === null || _b === void 0 ? void 0 : _b.setValue(group.code);
|
|
1124
|
+
(_c = valueControl.get('name')) === null || _c === void 0 ? void 0 : _c.setValue(group.name);
|
|
1106
1125
|
}
|
|
1107
1126
|
else {
|
|
1108
1127
|
currentValuesFormArray.insert(i, _this.formBuilder.group(group));
|
|
@@ -1115,8 +1134,8 @@
|
|
|
1115
1134
|
}
|
|
1116
1135
|
if (customValueFieldsGroup) {
|
|
1117
1136
|
try {
|
|
1118
|
-
for (var
|
|
1119
|
-
var fieldDef =
|
|
1137
|
+
for (var _e = __values(_this.customValueFields), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
1138
|
+
var fieldDef = _f.value;
|
|
1120
1139
|
var key = fieldDef.name;
|
|
1121
1140
|
var fieldValue = fieldDef.type === 'localeString'
|
|
1122
1141
|
? valueTranslation.customFields[key]
|
|
@@ -1130,12 +1149,12 @@
|
|
|
1130
1149
|
}
|
|
1131
1150
|
}
|
|
1132
1151
|
}
|
|
1133
|
-
catch (
|
|
1152
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
1134
1153
|
finally {
|
|
1135
1154
|
try {
|
|
1136
|
-
if (
|
|
1155
|
+
if (_f && !_f.done && (_d = _e.return)) _d.call(_e);
|
|
1137
1156
|
}
|
|
1138
|
-
finally { if (
|
|
1157
|
+
finally { if (e_2) throw e_2.error; }
|
|
1139
1158
|
}
|
|
1140
1159
|
}
|
|
1141
1160
|
}
|
|
@@ -1160,8 +1179,29 @@
|
|
|
1160
1179
|
return input;
|
|
1161
1180
|
};
|
|
1162
1181
|
/**
|
|
1163
|
-
* Given an array of facet values and the values from the detailForm, this method creates
|
|
1164
|
-
* which can be persisted to the API.
|
|
1182
|
+
* Given an array of facet values and the values from the detailForm, this method creates a new array
|
|
1183
|
+
* which can be persisted to the API via a createFacetValues mutation.
|
|
1184
|
+
*/
|
|
1185
|
+
FacetDetailComponent.prototype.getCreatedFacetValues = function (facet, valuesFormArray, languageCode) {
|
|
1186
|
+
var _this = this;
|
|
1187
|
+
return valuesFormArray.controls
|
|
1188
|
+
.filter(function (c) { return !c.value.id; })
|
|
1189
|
+
.map(function (c) { return c.value; })
|
|
1190
|
+
.map(function (value) { return i2.createUpdatedTranslatable({
|
|
1191
|
+
translatable: Object.assign(Object.assign({}, value), { translations: [] }),
|
|
1192
|
+
updatedFields: value,
|
|
1193
|
+
customFieldConfig: _this.customValueFields,
|
|
1194
|
+
languageCode: languageCode,
|
|
1195
|
+
defaultTranslation: {
|
|
1196
|
+
languageCode: languageCode,
|
|
1197
|
+
name: '',
|
|
1198
|
+
},
|
|
1199
|
+
}); })
|
|
1200
|
+
.map(function (input) { return (Object.assign({ facetId: facet.id }, input)); });
|
|
1201
|
+
};
|
|
1202
|
+
/**
|
|
1203
|
+
* Given an array of facet values and the values from the detailForm, this method creates a new array
|
|
1204
|
+
* which can be persisted to the API via an updateFacetValues mutation.
|
|
1165
1205
|
*/
|
|
1166
1206
|
FacetDetailComponent.prototype.getUpdatedFacetValues = function (facet, valuesFormArray, languageCode) {
|
|
1167
1207
|
var _this = this;
|
|
@@ -2478,7 +2518,7 @@
|
|
|
2478
2518
|
ProductListComponent.decorators = [
|
|
2479
2519
|
{ type: i0.Component, args: [{
|
|
2480
2520
|
selector: 'vdr-products-list',
|
|
2481
|
-
template: "<vdr-action-bar>\r\n <vdr-ab-left [grow]=\"true\">\r\n <div class=\"search-form\">\r\n <vdr-product-search-input\r\n #productSearchInputComponent\r\n [facetValueResults]=\"facetValues$ | async\"\r\n (searchTermChange)=\"setSearchTerm($event)\"\r\n (facetValueChange)=\"setFacetValueIds($event)\"\r\n ></vdr-product-search-input>\r\n <vdr-dropdown class=\"search-settings-menu mr3\">\r\n <button
|
|
2521
|
+
template: "<vdr-action-bar>\r\n <vdr-ab-left [grow]=\"true\">\r\n <div class=\"search-form\">\r\n <vdr-product-search-input\r\n #productSearchInputComponent\r\n [facetValueResults]=\"facetValues$ | async\"\r\n (searchTermChange)=\"setSearchTerm($event)\"\r\n (facetValueChange)=\"setFacetValueIds($event)\"\r\n ></vdr-product-search-input>\r\n <vdr-dropdown class=\"search-settings-menu mr3\">\r\n <button\r\n type=\"button\"\r\n class=\"icon-button search-index-button\"\r\n [title]=\"\r\n (pendingSearchIndexUpdates\r\n ? 'catalog.pending-search-index-updates'\r\n : 'catalog.search-index-controls'\r\n ) | translate\r\n \"\r\n vdrDropdownTrigger\r\n >\r\n <clr-icon shape=\"cog\"></clr-icon>\r\n <vdr-status-badge *ngIf=\"pendingSearchIndexUpdates\" type=\"warning\"> </vdr-status-badge>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <h4 class=\"dropdown-header\">{{ 'catalog.search-index-controls' | translate }}</h4>\r\n <ng-container *ngIf=\"pendingSearchIndexUpdates\">\r\n <button\r\n type=\"button\"\r\n class=\"run-updates-button\"\r\n vdrDropdownItem\r\n (click)=\"runPendingSearchIndexUpdates()\"\r\n [disabled]=\"!(['UpdateCatalog', 'UpdateProduct'] | hasPermission)\"\r\n >\r\n <vdr-status-badge type=\"warning\"> </vdr-status-badge>\r\n {{\r\n 'catalog.run-pending-search-index-updates'\r\n | translate: { count: pendingSearchIndexUpdates }\r\n }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n </ng-container>\r\n <button\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"rebuildSearchIndex()\"\r\n [disabled]=\"!(['UpdateCatalog', 'UpdateProduct'] | hasPermission)\"\r\n >\r\n {{ 'catalog.rebuild-search-index' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n <div class=\"flex wrap\">\r\n <clr-checkbox-wrapper class=\"mt2\">\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"groupByProduct\" (ngModelChange)=\"refresh()\" />\r\n <label>{{ 'catalog.group-by-product' | translate }}</label>\r\n </clr-checkbox-wrapper>\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 </div>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"product-list\"></vdr-action-bar-items>\r\n <a\r\n class=\"btn btn-primary\"\r\n [routerLink]=\"['./create']\"\r\n *vdrIfPermissions=\"['CreateCatalog', 'CreateProduct']\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n <span class=\"full-label\">{{ 'catalog.create-new-product' | translate }}</span>\r\n </a>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<vdr-data-table\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n>\r\n <ng-template let-result=\"item\">\r\n <td class=\"left align-middle\" [class.disabled]=\"!result.enabled\">\r\n <div class=\"image-placeholder\">\r\n <img\r\n *ngIf=\"\r\n groupByProduct\r\n ? result.productAsset\r\n : result.productVariantAsset || result.productAsset as asset;\r\n else imagePlaceholder\r\n \"\r\n [src]=\"asset | assetPreview: 'tiny'\"\r\n />\r\n <ng-template #imagePlaceholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td class=\"left align-middle\" [class.disabled]=\"!result.enabled\">\r\n {{ groupByProduct ? result.productName : result.productVariantName }}\r\n </td>\r\n <td class=\"align-middle\" [class.disabled]=\"!result.enabled\">\r\n <vdr-chip *ngIf=\"!result.enabled\">{{ 'common.disabled' | translate }}</vdr-chip>\r\n </td>\r\n <td class=\"right align-middle\" [class.disabled]=\"!result.enabled\">\r\n <vdr-table-row-action\r\n iconShape=\"edit\"\r\n [label]=\"'common.edit' | translate\"\r\n [linkTo]=\"['./', result.productId]\"\r\n ></vdr-table-row-action>\r\n </td>\r\n <td class=\"right align-middle\" [class.disabled]=\"!result.enabled\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-link btn-sm\" vdrDropdownTrigger>\r\n {{ 'common.actions' | translate }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteProduct(result.productId)\"\r\n [disabled]=\"!(['DeleteCatalog', 'DeleteProduct'] | hasPermission)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </ng-template>\r\n</vdr-data-table>\r\n",
|
|
2482
2522
|
styles: [".image-placeholder{width:50px;height:50px;background-color:var(--color-component-bg-200)}.image-placeholder .placeholder{text-align:center;color:var(--color-grey-300)}.search-form{display:flex;align-items:center;width:100%;margin-bottom:6px}.search-input{min-width:300px}@media screen and (max-width: 768px){.search-input{min-width:100px}}.search-settings-menu{margin:0 12px}td.disabled{background-color:var(--color-component-bg-200)}.search-index-button{position:relative}.search-index-button vdr-status-badge{right:0;top:0}.run-updates-button{position:relative}.run-updates-button vdr-status-badge{left:10px;top:10px}\n"]
|
|
2483
2523
|
},] }
|
|
2484
2524
|
];
|