@vendure/admin-ui 1.4.7 → 1.5.0
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 +105 -121
- package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-core.umd.js +280 -262
- package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-customer.umd.js +51 -20
- package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-order.umd.js +107 -17
- package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-settings.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-system.umd.js.map +1 -1
- package/catalog/components/{product-assets/product-assets.component.d.ts → assets/assets.component.d.ts} +4 -10
- package/catalog/components/product-detail/product-detail.component.d.ts +2 -1
- package/catalog/components/product-variants-list/product-variants-list.component.d.ts +1 -1
- package/catalog/public_api.d.ts +1 -1
- package/catalog/vendure-admin-ui-catalog.metadata.json +1 -1
- package/core/common/generated-types.d.ts +84 -6
- package/core/common/version.d.ts +1 -1
- package/core/data/definitions/customer-definitions.d.ts +1 -0
- package/core/data/providers/customer-data.service.d.ts +1 -0
- package/core/data/providers/promotion-data.service.d.ts +2 -2
- package/core/public_api.d.ts +2 -0
- package/core/shared/components/asset-preview-links/asset-preview-links.component.d.ts +5 -0
- package/core/shared/components/object-tree/object-tree.component.d.ts +3 -3
- package/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.d.ts +15 -0
- package/core/vendure-admin-ui-core.metadata.json +1 -1
- package/customer/components/address-card/address-card.component.d.ts +2 -0
- package/customer/components/customer-detail/customer-detail.component.d.ts +2 -0
- package/customer/components/customer-list/customer-list.component.d.ts +1 -2
- package/customer/vendure-admin-ui-customer.metadata.json +1 -1
- package/esm2015/catalog/catalog.module.js +3 -3
- package/esm2015/catalog/components/assets/assets.component.js +93 -0
- package/esm2015/catalog/components/collection-detail/collection-detail.component.js +2 -2
- package/esm2015/catalog/components/product-detail/product-detail.component.js +4 -3
- package/esm2015/catalog/components/product-variants-list/product-variants-list.component.js +2 -2
- package/esm2015/catalog/public_api.js +2 -2
- package/esm2015/core/common/generated-types.js +5 -1
- package/esm2015/core/common/introspection-result.js +189 -249
- package/esm2015/core/common/utilities/configurable-operation-utils.js +1 -1
- package/esm2015/core/common/version.js +2 -2
- package/esm2015/core/data/definitions/customer-definitions.js +8 -1
- package/esm2015/core/data/definitions/order-definitions.js +2 -1
- package/esm2015/core/data/providers/customer-data.service.js +5 -2
- package/esm2015/core/data/providers/interceptor.js +1 -1
- package/esm2015/core/data/providers/promotion-data.service.js +3 -2
- package/esm2015/core/data/providers/shipping-method-data.service.js +1 -1
- package/esm2015/core/data/utils/remove-readonly-custom-fields.js +1 -1
- package/esm2015/core/public_api.js +3 -1
- package/esm2015/core/shared/components/address-form/address-form.component.js +1 -1
- package/esm2015/core/shared/components/asset-gallery/asset-gallery.component.js +2 -2
- package/esm2015/core/shared/components/asset-preview/asset-preview.component.js +3 -3
- package/esm2015/core/shared/components/asset-preview-links/asset-preview-links.component.js +18 -0
- package/esm2015/core/shared/components/object-tree/object-tree.component.js +3 -3
- package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.js +48 -0
- package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.js +2 -2
- package/esm2015/core/shared/shared.module.js +5 -1
- package/esm2015/customer/components/address-card/address-card.component.js +9 -3
- package/esm2015/customer/components/customer-detail/customer-detail.component.js +35 -13
- package/esm2015/customer/components/customer-list/customer-list.component.js +12 -9
- package/esm2015/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.js +1 -1
- package/esm2015/order/components/cancel-order-dialog/cancel-order-dialog.component.js +36 -6
- package/esm2015/order/components/fulfill-order-dialog/fulfill-order-dialog.component.js +1 -1
- package/esm2015/order/components/line-refunds/line-refunds.component.js +1 -1
- package/esm2015/order/components/modification-detail/modification-detail.component.js +1 -1
- package/esm2015/order/components/order-detail/order-detail.component.js +2 -2
- package/esm2015/order/components/order-editor/order-editor.component.js +22 -7
- package/esm2015/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.js +1 -1
- package/esm2015/order/components/order-history/order-history.component.js +2 -2
- package/esm2015/order/components/order-list/order-list.component.js +1 -1
- package/esm2015/order/components/order-table/order-table.component.js +2 -2
- package/esm2015/order/components/refund-order-dialog/refund-order-dialog.component.js +10 -5
- package/esm2015/order/order.routes.js +1 -1
- package/esm2015/settings/components/role-list/role-list.component.js +1 -1
- package/esm2015/settings/components/test-order-builder/test-order-builder.component.js +1 -1
- package/esm2015/settings/providers/routing/shipping-method-resolver.js +1 -1
- package/esm2015/system/components/job-list/job-list.component.js +1 -1
- package/fesm2015/vendure-admin-ui-catalog.js +96 -109
- package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
- package/fesm2015/vendure-admin-ui-core.js +265 -246
- package/fesm2015/vendure-admin-ui-core.js.map +1 -1
- package/fesm2015/vendure-admin-ui-customer.js +53 -22
- package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
- package/fesm2015/vendure-admin-ui-order.js +67 -17
- package/fesm2015/vendure-admin-ui-order.js.map +1 -1
- package/fesm2015/vendure-admin-ui-settings.js.map +1 -1
- package/fesm2015/vendure-admin-ui-system.js.map +1 -1
- package/order/components/cancel-order-dialog/cancel-order-dialog.component.d.ts +3 -0
- package/order/components/order-editor/order-editor.component.d.ts +8 -2
- package/order/vendure-admin-ui-order.metadata.json +1 -1
- package/package.json +2 -2
- package/static/i18n-messages/cs.json +7 -1
- package/static/i18n-messages/de.json +7 -1
- package/static/i18n-messages/en.json +9 -3
- package/static/i18n-messages/es.json +7 -1
- package/static/i18n-messages/fr.json +7 -1
- package/static/i18n-messages/it.json +7 -1
- package/static/i18n-messages/pl.json +7 -1
- package/static/i18n-messages/pt_BR.json +7 -1
- package/static/i18n-messages/pt_PT.json +7 -1
- package/static/i18n-messages/ru.json +7 -1
- package/static/i18n-messages/uk.json +7 -1
- package/static/i18n-messages/zh_Hans.json +7 -1
- package/static/i18n-messages/zh_Hant.json +7 -1
- package/static/vendure-ui-config.json +25 -10
- package/esm2015/catalog/components/product-assets/product-assets.component.js +0 -108
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"add-facet-value": "添加特征值",
|
|
56
56
|
"add-facets": "添加特征",
|
|
57
57
|
"add-option": "添加规格组",
|
|
58
|
+
"asset-preview-links": "",
|
|
58
59
|
"assign-product-to-channel-success": "成功将产品添加至销售渠道\"{ channel }\"",
|
|
59
60
|
"assign-products-to-channel": "分配产品到销售渠道",
|
|
60
61
|
"assign-to-channel": "分配至销售渠道",
|
|
@@ -238,6 +239,7 @@
|
|
|
238
239
|
"sample-formatting": "",
|
|
239
240
|
"select": "选择...",
|
|
240
241
|
"select-display-language": "选择显示语言",
|
|
242
|
+
"select-relation-id": "",
|
|
241
243
|
"select-today": "选择今天",
|
|
242
244
|
"set-language": "",
|
|
243
245
|
"short-date": "",
|
|
@@ -309,7 +311,7 @@
|
|
|
309
311
|
"remove-customers-from-group-success": "成功从分组\"{ groupName }\"中移除{customerCount}个客户",
|
|
310
312
|
"remove-from-group": "从分组中移除",
|
|
311
313
|
"search-customers-by-email": "输入要搜索的客户邮件地址",
|
|
312
|
-
"search-customers-by-last-name": "
|
|
314
|
+
"search-customers-by-email-last-name-postal-code": "",
|
|
313
315
|
"select-customer": "选择客户",
|
|
314
316
|
"set-as-default-billing-address": "设置为默认账单地址",
|
|
315
317
|
"set-as-default-shipping-address": "设置为默认邮寄地址",
|
|
@@ -436,6 +438,7 @@
|
|
|
436
438
|
"arrange-additional-payment": "添加额外付款",
|
|
437
439
|
"billing-address": "账单地址",
|
|
438
440
|
"cancel": "取消",
|
|
441
|
+
"cancel-entire-order": "",
|
|
439
442
|
"cancel-fulfillment": "取消发货",
|
|
440
443
|
"cancel-modification": "取消修改",
|
|
441
444
|
"cancel-order": "取消订单",
|
|
@@ -443,6 +446,7 @@
|
|
|
443
446
|
"cancel-reason-customer-request": "客户要求",
|
|
444
447
|
"cancel-reason-not-available": "产品无库存",
|
|
445
448
|
"cancel-selected-items": "取消已选",
|
|
449
|
+
"cancel-specified-items": "",
|
|
446
450
|
"cancellation-reason": "取消原因",
|
|
447
451
|
"cancelled-order-success": "订单成功取消",
|
|
448
452
|
"confirm-modifications": "确认修改",
|
|
@@ -538,6 +542,7 @@
|
|
|
538
542
|
"search-by-customer-last-name": "",
|
|
539
543
|
"search-by-order-code": "输入要搜索的订单编号",
|
|
540
544
|
"select-state": "",
|
|
545
|
+
"set-coupon-codes": "",
|
|
541
546
|
"set-fulfillment-state": "",
|
|
542
547
|
"settle-payment": "结算付款",
|
|
543
548
|
"settle-payment-error": "结算付款失败",
|
|
@@ -547,6 +552,7 @@
|
|
|
547
552
|
"settle-refund-success": "结算退款成功",
|
|
548
553
|
"shipping": "运费",
|
|
549
554
|
"shipping-address": "配送地址",
|
|
555
|
+
"shipping-cancelled": "",
|
|
550
556
|
"shipping-method": "配送方式",
|
|
551
557
|
"state": "状态",
|
|
552
558
|
"sub-total": "小计金额",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"add-facet-value": "新增特徵值",
|
|
56
56
|
"add-facets": "新增特徵",
|
|
57
57
|
"add-option": "新增規格選項",
|
|
58
|
+
"asset-preview-links": "",
|
|
58
59
|
"assign-product-to-channel-success": "成功將產品新增至渠道\"{ channel }\"",
|
|
59
60
|
"assign-products-to-channel": "分配產品到渠道",
|
|
60
61
|
"assign-to-channel": "分配至渠道",
|
|
@@ -238,6 +239,7 @@
|
|
|
238
239
|
"sample-formatting": "",
|
|
239
240
|
"select": "選擇...",
|
|
240
241
|
"select-display-language": "選擇顯示語言",
|
|
242
|
+
"select-relation-id": "",
|
|
241
243
|
"select-today": "選擇今天",
|
|
242
244
|
"set-language": "",
|
|
243
245
|
"short-date": "",
|
|
@@ -309,7 +311,7 @@
|
|
|
309
311
|
"remove-customers-from-group-success": "",
|
|
310
312
|
"remove-from-group": "",
|
|
311
313
|
"search-customers-by-email": "輸入要搜索的客户電郵地址",
|
|
312
|
-
"search-customers-by-last-name": "",
|
|
314
|
+
"search-customers-by-email-last-name-postal-code": "",
|
|
313
315
|
"select-customer": "",
|
|
314
316
|
"set-as-default-billing-address": "設定為默認賬單地址",
|
|
315
317
|
"set-as-default-shipping-address": "設定為默認郵寄地址",
|
|
@@ -436,6 +438,7 @@
|
|
|
436
438
|
"arrange-additional-payment": "",
|
|
437
439
|
"billing-address": "",
|
|
438
440
|
"cancel": "取消",
|
|
441
|
+
"cancel-entire-order": "",
|
|
439
442
|
"cancel-fulfillment": "",
|
|
440
443
|
"cancel-modification": "",
|
|
441
444
|
"cancel-order": "取消訂單",
|
|
@@ -443,6 +446,7 @@
|
|
|
443
446
|
"cancel-reason-customer-request": "客户要求",
|
|
444
447
|
"cancel-reason-not-available": "產品無庫存",
|
|
445
448
|
"cancel-selected-items": "取消已選",
|
|
449
|
+
"cancel-specified-items": "",
|
|
446
450
|
"cancellation-reason": "取消原因",
|
|
447
451
|
"cancelled-order-success": "訂單取消成功",
|
|
448
452
|
"confirm-modifications": "",
|
|
@@ -538,6 +542,7 @@
|
|
|
538
542
|
"search-by-customer-last-name": "",
|
|
539
543
|
"search-by-order-code": "輸入要搜索的訂單編號",
|
|
540
544
|
"select-state": "",
|
|
545
|
+
"set-coupon-codes": "",
|
|
541
546
|
"set-fulfillment-state": "",
|
|
542
547
|
"settle-payment": "結算付款",
|
|
543
548
|
"settle-payment-error": "結算付款失敗",
|
|
@@ -547,6 +552,7 @@
|
|
|
547
552
|
"settle-refund-success": "結算退款成功",
|
|
548
553
|
"shipping": "運費",
|
|
549
554
|
"shipping-address": "配送地址",
|
|
555
|
+
"shipping-cancelled": "",
|
|
550
556
|
"shipping-method": "配送方式",
|
|
551
557
|
"state": "狀態",
|
|
552
558
|
"sub-total": "小計金額",
|
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
"apiHost": "http://localhost",
|
|
3
|
+
"apiPort": "3000",
|
|
4
|
+
"adminApiPath": "admin-api",
|
|
5
|
+
"tokenMethod": "bearer",
|
|
6
|
+
"authTokenHeaderKey": "vendure-auth-token",
|
|
7
|
+
"defaultLanguage": "en",
|
|
8
|
+
"availableLanguages": [
|
|
9
|
+
"en",
|
|
10
|
+
"es",
|
|
11
|
+
"zh_Hant",
|
|
12
|
+
"zh_Hans",
|
|
13
|
+
"pl",
|
|
14
|
+
"de",
|
|
15
|
+
"pt_BR",
|
|
16
|
+
"pt_PT",
|
|
17
|
+
"cs",
|
|
18
|
+
"fr",
|
|
19
|
+
"ru",
|
|
20
|
+
"uk",
|
|
21
|
+
"it"
|
|
22
|
+
],
|
|
23
|
+
"brand": "",
|
|
24
|
+
"hideVendureBranding": false,
|
|
25
|
+
"hideVersion": false,
|
|
26
|
+
"cancellationReasons": ["order.cancel-reason-customer-request", "order.cancel-reason-not-available"]
|
|
12
27
|
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
2
|
-
import { ViewportRuler } from '@angular/cdk/overlay';
|
|
3
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Optional, Output, } from '@angular/core';
|
|
4
|
-
import { AssetPickerDialogComponent, AssetPreviewDialogComponent, ModalService, Permission, } from '@vendure/admin-ui/core';
|
|
5
|
-
import { unique } from '@vendure/common/lib/unique';
|
|
6
|
-
import { CollectionDetailComponent } from '../collection-detail/collection-detail.component';
|
|
7
|
-
/**
|
|
8
|
-
* A component which displays the Assets associated with a product, and allows assets to be removed and
|
|
9
|
-
* added, and for the featured asset to be set.
|
|
10
|
-
*
|
|
11
|
-
* Note: rather complex code for drag drop is due to a limitation of the default CDK implementation
|
|
12
|
-
* which is addressed by a work-around from here: https://github.com/angular/components/issues/13372#issuecomment-483998378
|
|
13
|
-
*/
|
|
14
|
-
export class ProductAssetsComponent {
|
|
15
|
-
constructor(modalService, changeDetector, viewportRuler, collectionDetailComponent) {
|
|
16
|
-
this.modalService = modalService;
|
|
17
|
-
this.changeDetector = changeDetector;
|
|
18
|
-
this.viewportRuler = viewportRuler;
|
|
19
|
-
this.collectionDetailComponent = collectionDetailComponent;
|
|
20
|
-
this.compact = false;
|
|
21
|
-
this.change = new EventEmitter();
|
|
22
|
-
this.assets = [];
|
|
23
|
-
this.updateCollectionPermissions = [Permission.UpdateCatalog, Permission.UpdateCollection];
|
|
24
|
-
this.updateProductPermissions = [Permission.UpdateCatalog, Permission.UpdateProduct];
|
|
25
|
-
}
|
|
26
|
-
set assetsSetter(val) {
|
|
27
|
-
// create a new non-readonly array of assets
|
|
28
|
-
this.assets = (val || []).slice();
|
|
29
|
-
}
|
|
30
|
-
get updatePermissions() {
|
|
31
|
-
if (this.collectionDetailComponent) {
|
|
32
|
-
return this.updateCollectionPermissions;
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
return this.updateProductPermissions;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
selectAssets() {
|
|
39
|
-
this.modalService
|
|
40
|
-
.fromComponent(AssetPickerDialogComponent, {
|
|
41
|
-
size: 'xl',
|
|
42
|
-
})
|
|
43
|
-
.subscribe(result => {
|
|
44
|
-
if (result && result.length) {
|
|
45
|
-
this.assets = unique(this.assets.concat(result), 'id');
|
|
46
|
-
if (!this.featuredAsset) {
|
|
47
|
-
this.featuredAsset = result[0];
|
|
48
|
-
}
|
|
49
|
-
this.emitChangeEvent(this.assets, this.featuredAsset);
|
|
50
|
-
this.changeDetector.markForCheck();
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
setAsFeatured(asset) {
|
|
55
|
-
this.featuredAsset = asset;
|
|
56
|
-
this.emitChangeEvent(this.assets, asset);
|
|
57
|
-
}
|
|
58
|
-
isFeatured(asset) {
|
|
59
|
-
return !!this.featuredAsset && this.featuredAsset.id === asset.id;
|
|
60
|
-
}
|
|
61
|
-
previewAsset(asset) {
|
|
62
|
-
this.modalService
|
|
63
|
-
.fromComponent(AssetPreviewDialogComponent, {
|
|
64
|
-
size: 'xl',
|
|
65
|
-
closable: true,
|
|
66
|
-
locals: { asset },
|
|
67
|
-
})
|
|
68
|
-
.subscribe();
|
|
69
|
-
}
|
|
70
|
-
removeAsset(asset) {
|
|
71
|
-
this.assets = this.assets.filter(a => a.id !== asset.id);
|
|
72
|
-
if (this.featuredAsset && this.featuredAsset.id === asset.id) {
|
|
73
|
-
this.featuredAsset = this.assets.length > 0 ? this.assets[0] : undefined;
|
|
74
|
-
}
|
|
75
|
-
this.emitChangeEvent(this.assets, this.featuredAsset);
|
|
76
|
-
}
|
|
77
|
-
emitChangeEvent(assets, featuredAsset) {
|
|
78
|
-
this.change.emit({
|
|
79
|
-
assets,
|
|
80
|
-
featuredAsset,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
dropListDropped(event) {
|
|
84
|
-
moveItemInArray(this.assets, event.previousContainer.data, event.container.data);
|
|
85
|
-
this.emitChangeEvent(this.assets, this.featuredAsset);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
ProductAssetsComponent.decorators = [
|
|
89
|
-
{ type: Component, args: [{
|
|
90
|
-
selector: 'vdr-product-assets',
|
|
91
|
-
template: "<div class=\"card\" *ngIf=\"!compact; else compactView\">\r\n <div class=\"card-img\">\r\n <div class=\"featured-asset\">\r\n <img\r\n *ngIf=\"featuredAsset\"\r\n [src]=\"featuredAsset | assetPreview:'small'\"\r\n (click)=\"previewAsset(featuredAsset)\"\r\n />\r\n <div class=\"placeholder\" *ngIf=\"!featuredAsset\" (click)=\"selectAssets()\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-featured-asset' | translate }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-block\"><ng-container *ngTemplateOutlet=\"assetList\"></ng-container></div>\r\n <div class=\"card-footer\" *vdrIfPermissions=\"updatePermissions\">\r\n <button class=\"btn\" (click)=\"selectAssets()\">\r\n <clr-icon shape=\"attachment\"></clr-icon>\r\n {{ 'asset.add-asset' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #compactView>\r\n <div class=\"featured-asset compact\">\r\n <img\r\n *ngIf=\"featuredAsset\"\r\n [src]=\"featuredAsset | assetPreview:'thumb'\"\r\n (click)=\"previewAsset(featuredAsset)\"\r\n />\r\n\r\n <div class=\"placeholder\" *ngIf=\"!featuredAsset\" (click)=\"selectAssets()\"><clr-icon shape=\"image\" size=\"150\"></clr-icon></div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"assetList\"></ng-container>\r\n <button\r\n *vdrIfPermissions=\"updatePermissions\"\r\n class=\"compact-select btn btn-icon btn-sm btn-block\"\r\n [title]=\"'asset.add-asset' | translate\"\r\n (click)=\"selectAssets()\"\r\n >\r\n <clr-icon shape=\"attachment\"></clr-icon>\r\n {{ 'asset.add-asset' | translate }}\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #assetList>\r\n <div class=\"all-assets\" [class.compact]=\"compact\" cdkDropListGroup>\r\n <div\r\n *ngFor=\"let asset of assets; let index = index\"\r\n class=\"drop-list\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"index\"\r\n [cdkDropListDisabled]=\"!(updatePermissions | hasPermission)\"\r\n (cdkDropListDropped)=\"dropListDropped($event)\"\r\n >\r\n <vdr-dropdown cdkDrag>\r\n <div\r\n class=\"asset-thumb\"\r\n vdrDropdownTrigger\r\n [class.featured]=\"isFeatured(asset)\"\r\n [title]=\"\"\r\n tabindex=\"0\"\r\n >\r\n <img [src]=\"asset | assetPreview:'tiny'\" />\r\n </div>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button type=\"button\" vdrDropdownItem (click)=\"previewAsset(asset)\">\r\n {{ 'asset.preview' | translate }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isFeatured(asset) || !(updatePermissions | hasPermission)\"\r\n vdrDropdownItem\r\n (click)=\"setAsFeatured(asset)\"\r\n >\r\n {{ 'asset.set-as-featured-asset' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n type=\"button\"\r\n class=\"remove-asset\"\r\n vdrDropdownItem\r\n [disabled]=\"!(updatePermissions | hasPermission)\"\r\n (click)=\"removeAsset(asset)\"\r\n >\r\n {{ 'asset.remove-asset' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
|
|
92
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
93
|
-
styles: [":host{width:340px;display:block}:host.compact{width:162px}.placeholder{text-align:center;color:var(--color-grey-300)}.featured-asset{text-align:center;background:var(--color-component-bg-200);padding:6px;cursor:pointer}.featured-asset.compact{width:100%;min-height:40px;position:relative;padding:6px}.featured-asset .compact-select{position:absolute;bottom:6px;right:6px;margin:0}.all-assets{display:flex;flex-wrap:wrap}.all-assets .drop-list{min-width:60px}.all-assets .asset-thumb{margin:3px;padding:0;border:2px solid var(--color-component-border-100);cursor:pointer}.all-assets .asset-thumb.featured{border-color:var(--color-primary-500)}.all-assets .remove-asset{color:var(--color-warning-500)}.all-assets.compact .drop-list{min-width:54px}.all-assets.compact .asset-thumb{margin:1px;border-width:1px}.all-assets.compact .cdk-drag-placeholder{width:50px}.all-assets.compact .cdk-drag-placeholder .asset-thumb{width:50px}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.all-assets.cdk-drop-list-dragging vdr-dropdown:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging>*:not(.cdk-drag-placeholder){display:none}\n"]
|
|
94
|
-
},] }
|
|
95
|
-
];
|
|
96
|
-
ProductAssetsComponent.ctorParameters = () => [
|
|
97
|
-
{ type: ModalService },
|
|
98
|
-
{ type: ChangeDetectorRef },
|
|
99
|
-
{ type: ViewportRuler },
|
|
100
|
-
{ type: CollectionDetailComponent, decorators: [{ type: Optional }] }
|
|
101
|
-
];
|
|
102
|
-
ProductAssetsComponent.propDecorators = {
|
|
103
|
-
assetsSetter: [{ type: Input, args: ['assets',] }],
|
|
104
|
-
featuredAsset: [{ type: Input }],
|
|
105
|
-
compact: [{ type: HostBinding, args: ['class.compact',] }, { type: Input }],
|
|
106
|
-
change: [{ type: Output }]
|
|
107
|
-
};
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hc3NldHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jYXRhbG9nL3NyYy9jb21wb25lbnRzL3Byb2R1Y3QtYXNzZXRzL3Byb2R1Y3QtYXNzZXRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFSCwwQkFBMEIsRUFDMUIsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixVQUFVLEdBQ2IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFPN0Y7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLHNCQUFzQjtJQXlCL0IsWUFDWSxZQUEwQixFQUMxQixjQUFpQyxFQUNqQyxhQUE0QixFQUNoQix5QkFBcUQ7UUFIakUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ2hCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBNEI7UUFwQjdFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDTixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUU1QyxXQUFNLEdBQVksRUFBRSxDQUFDO1FBRVgsZ0NBQTJCLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVB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SSxDQUFDO1lBQ2IsTUFBTTtZQUNOLGFBQWE7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUEwQjtRQUN0QyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxDQUFDOzs7WUE1RkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLDQvSEFBOEM7Z0JBRTlDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNsRDs7O1lBeEJHLFlBQVk7WUFaWixpQkFBaUI7WUFIWixhQUFhO1lBb0JiLHlCQUF5Qix1QkFpRHpCLFFBQVE7OzsyQkE1QlosS0FBSyxTQUFDLFFBQVE7NEJBS2QsS0FBSztzQkFDTCxXQUFXLFNBQUMsZUFBZSxjQUMzQixLQUFLO3FCQUVMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbnB1dCxcclxuICAgIE9wdGlvbmFsLFxyXG4gICAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgQXNzZXQsXHJcbiAgICBBc3NldFBpY2tlckRpYWxvZ0NvbXBvbmVudCxcclxuICAgIEFzc2V0UHJldmlld0RpYWxvZ0NvbXBvbmVudCxcclxuICAgIE1vZGFsU2VydmljZSxcclxuICAgIFBlcm1pc3Npb24sXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IHVuaXF1ZSB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvdW5pcXVlJztcclxuXHJcbmltcG9ydCB7IENvbGxlY3Rpb25EZXRhaWxDb21wb25lbnQgfSBmcm9tICcuLi9jb2xsZWN0aW9uLWRldGFpbC9jb2xsZWN0aW9uLWRldGFpbC5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBc3NldENoYW5nZSB7XHJcbiAgICBhc3NldHM6IEFzc2V0W107XHJcbiAgICBmZWF0dXJlZEFzc2V0OiBBc3NldCB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgY29tcG9uZW50IHdoaWNoIGRpc3BsYXlzIHRoZSBBc3NldHMgYXNzb2NpYXRlZCB3aXRoIGEgcHJvZHVjdCwgYW5kIGFsbG93cyBhc3NldHMgdG8gYmUgcmVtb3ZlZCBhbmRcclxuICogYWRkZWQsIGFuZCBmb3IgdGhlIGZlYXR1cmVkIGFzc2V0IHRvIGJlIHNldC5cclxuICpcclxuICogTm90ZTogcmF0aGVyIGNvbXBsZXggY29kZSBmb3IgZHJhZyBkcm9wIGlzIGR1ZSB0byBhIGxpbWl0YXRpb24gb2YgdGhlIGRlZmF1bHQgQ0RLIGltcGxlbWVudGF0aW9uXHJcbiAqIHdoaWNoIGlzIGFkZHJlc3NlZCBieSBhIHdvcmstYXJvdW5kIGZyb20gaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMTMzNzIjaXNzdWVjb21tZW50LTQ4Mzk5ODM3OFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1wcm9kdWN0LWFzc2V0cycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1hc3NldHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC1hc3NldHMuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdEFzc2V0c0NvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoJ2Fzc2V0cycpIHNldCBhc3NldHNTZXR0ZXIodmFsOiBBc3NldFtdKSB7XHJcbiAgICAgICAgLy8gY3JlYXRlIGEgbmV3IG5vbi1yZWFkb25seSBhcnJheSBvZiBhc3NldHNcclxuICAgICAgICB0aGlzLmFzc2V0cyA9ICh2YWwgfHwgW10pLnNsaWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgZmVhdHVyZWRBc3NldDogQXNzZXQgfCB1bmRlZmluZWQ7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbXBhY3QnKVxyXG4gICAgQElucHV0KClcclxuICAgIGNvbXBhY3QgPSBmYWxzZTtcclxuICAgIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFzc2V0Q2hhbmdlPigpO1xyXG5cclxuICAgIHB1YmxpYyBhc3NldHM6IEFzc2V0W10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZUNvbGxlY3Rpb25QZXJtaXNzaW9ucyA9IFtQZXJtaXNzaW9uLlVwZGF0ZUNhdGFsb2csIFBlcm1pc3Npb24uVXBkYXRlQ29sbGVjdGlvbl07XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZVByb2R1Y3RQZXJtaXNzaW9ucyA9IFtQZXJtaXNzaW9uLlVwZGF0ZUNhdGFsb2csIFBlcm1pc3Npb24uVXBkYXRlUHJvZHVjdF07XHJcblxyXG4gICAgZ2V0IHVwZGF0ZVBlcm1pc3Npb25zKCk6IFBlcm1pc3Npb25bXSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGVjdGlvbkRldGFpbENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVDb2xsZWN0aW9uUGVybWlzc2lvbnM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlUHJvZHVjdFBlcm1pc3Npb25zO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcixcclxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbGxlY3Rpb25EZXRhaWxDb21wb25lbnQ/OiBDb2xsZWN0aW9uRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgKSB7fVxyXG5cclxuICAgIHNlbGVjdEFzc2V0cygpIHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZnJvbUNvbXBvbmVudChBc3NldFBpY2tlckRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hc3NldHMgPSB1bmlxdWUodGhpcy5hc3NldHMuY29uY2F0KHJlc3VsdCksICdpZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5mZWF0dXJlZEFzc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZWRBc3NldCA9IHJlc3VsdFswXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQodGhpcy5hc3NldHMsIHRoaXMuZmVhdHVyZWRBc3NldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QXNGZWF0dXJlZChhc3NldDogQXNzZXQpIHtcclxuICAgICAgICB0aGlzLmZlYXR1cmVkQXNzZXQgPSBhc3NldDtcclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0aGlzLmFzc2V0cywgYXNzZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRmVhdHVyZWQoYXNzZXQ6IEFzc2V0KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5mZWF0dXJlZEFzc2V0ICYmIHRoaXMuZmVhdHVyZWRBc3NldC5pZCA9PT0gYXNzZXQuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJldmlld0Fzc2V0KGFzc2V0OiBBc3NldCkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KEFzc2V0UHJldmlld0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcclxuICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxzOiB7IGFzc2V0IH0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBc3NldChhc3NldDogQXNzZXQpIHtcclxuICAgICAgICB0aGlzLmFzc2V0cyA9IHRoaXMuYXNzZXRzLmZpbHRlcihhID0+IGEuaWQgIT09IGFzc2V0LmlkKTtcclxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlZEFzc2V0ICYmIHRoaXMuZmVhdHVyZWRBc3NldC5pZCA9PT0gYXNzZXQuaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlZEFzc2V0ID0gdGhpcy5hc3NldHMubGVuZ3RoID4gMCA/IHRoaXMuYXNzZXRzWzBdIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0aGlzLmFzc2V0cywgdGhpcy5mZWF0dXJlZEFzc2V0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVtaXRDaGFuZ2VFdmVudChhc3NldHM6IEFzc2V0W10sIGZlYXR1cmVkQXNzZXQ6IEFzc2V0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgICAgIGFzc2V0cyxcclxuICAgICAgICAgICAgZmVhdHVyZWRBc3NldCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkcm9wTGlzdERyb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPG51bWJlcj4pIHtcclxuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5hc3NldHMsIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsIGV2ZW50LmNvbnRhaW5lci5kYXRhKTtcclxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh0aGlzLmFzc2V0cywgdGhpcy5mZWF0dXJlZEFzc2V0KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|